Twitter’da kim kimi etkiliyor
2010 yazında UCLA IPAM’da IBM Research için tweet’leri konulara ayıran seyrek bir matris ayrıştırma algoritması ve Granger nedenselliğiyle etkili hesapları bulan bir model yazdık. Sonu 82 sayfalık bir rapor ve iki konuşma oldu.
Hoyer’in seyrek NMF algoritmasını çoğu testte geçen bir yöntem, etki modelini Twitter ölçeğinde çalışabilir kılan bir ön işleme adımı ve 82 sayfalık bir rapor.
Rakamlarla IPAM, UCLA × IBM Research
- İki ay boyunca izlenen Twitter hesabı
- 1.000
- Konu temsiline geçince kullanılan bellek
- %0,67
- Granger sırası ile retweet oranı
- 0,52 korelasyon
- Nihai rapor
- 82 sayfa
IBM’in 2010 yazında bize verdiği soru ticari olarak açıktı: insanlar Twitter’da şirketler ve ürünler hakkında konuşuyor, bu konuşmanın içinde kimin sözü ağır basıyor. Zor olan kısım ölçmek değil, tanımlamaktı. Etki dediğimiz şeyin veride bıraktığı iz neydi.
O yaz UCLA’da, Institute for Pure and Applied Mathematics’in sanayi projeleri araştırma programındaydım (Research in Industrial Projects for Students). Dört kişilik öğrenci ekibinin bir üyesiydim; Edward Chang proje yöneticisiydi, yanımızda Edward Dewey ve Maksim Tsikhanovich vardı. Akademik danışmanımız Blake Hunter’dı. IBM tarafında Vikas Sindhwani, Aurélie C Lozano, Prem Melville ve Dmitriy Katz-Rogozhnikov bize danışmanlık etti. Proje IBM ve NSF’in DMS-0439872 numaralı hibesiyle ortaklaşa destekleniyordu.
Veri kümesi tek cümleyle tarif edilebiliyordu: 22 Mayıs – 22 Temmuz 2010 arasında “IBM” kelimesini en sık kullanan 1.000 Twitter hesabının iki aylık tweet’leri.
Kelime saymak yetmiyor
İşin ilk yarısı konu tespitiydi. Bir metin yığınını konuya göre ayırmanın en kolay yolu anahtar kelime aramaktır ve bu yol çabuk tıkanır: “banana republic” ifadesi hem Soğuk Savaş dönemi Honduras’ı hakkında bir metinde hem de bir giyim perakendecisi hakkında bir metinde geçer. İkisini aynı kutuya koyan bir sistem kimseye bir şey anlatmaz.
Bunun yerine negatif olmayan matris ayrıştırma (non-negative matrix factorization, NMF) kullandık. Fikir basit: her tweet’i birkaç konunun karışımı olarak yazmak. Katsayıların hepsi pozitif olduğu için karışım gerçekten karışım gibi okunuyor — bir metin yüzde şu kadar şu konu, yüzde bu kadar bu konu. Bir tweet’in mümkün olan en az sayıda konuya dayanmasını istiyorsanız, çözümün seyrek (sparse) olmasını da zorlamanız gerekiyor.
Ngoc-Diep Ho’nun birinci dereceden artık yinelemesi (Rank-one Residue Iterations, RRI) yöntemini seyreklik hedefiyle değiştirdik; bildiğimiz kadarıyla RRI ilk kez bu amaçla kullanılıyordu. Çıkan algoritma, testlerin çoğunda Patrik Hoyer’in seyrek NMF algoritmasından daha düşük yeniden oluşturma hatası verdi. Yanına bir de model seçimi yöntemi koyduk: L-eğrisi yönteminin iki boyutlu bir genellemesiyle, düzenlileştirme ve kısıt parametrelerini elle denemek yerine aynı anda seçiyorduk.
7.500 kelime yerine 50 konu
Konu modellemesi bu projede güzel bir yan ürün değildi, işin mümkün olmasının tek sebebiydi.
Elimizdeki tweet kümesi ayrıştırıldığında 7.500’den fazla farklı kelime çıkıyordu. Etki modelini doğrudan bu ham temsilin üzerinde çalıştırmak, her tweet’i tüm sözlük boyunca bir vektör olarak tutmak demekti; hesap 1 terabaytın üzerinde bellek istiyordu. Yani model yanlış değildi, sadece çalıştırılamıyordu.
Aynı veriyi 50 konu üzerinden yazdığımızda gereken bellek, ham hâlinin %0,67’sine indi. Tek değişiklik buydu. Masaüstü bir bilgisayarda koşamayan bir problem, masaüstü bir bilgisayarda koşar hâle geldi. O yaz öğrendiğim en pratik şey bu: bir modeli çalışır kılan şey çoğu zaman daha büyük bir makine değil, daha küçük bir temsildir.
Alıntı yoksa nedensellik nasıl kurulur
İkinci yarı etki modellemesiydi. Kullandığımız çerçeve Granger nedenselliğiydi (Granger causality): bir sebep sonucundan önce gelir. İki zaman serisi düşünün — A’nın geçmiş değerleri B’nin gelecek değerlerini, B’nin kendi geçmişinden daha iyi tahmin ediyorsa, A’nın B üzerinde nedensel bir etkisi olduğunu söyleyebiliyorsunuz.
Bunun Twitter’da işe yaramasının sebebi, kimseden dürüstlük beklememesiydi. İnsanlar birbirini kaynak göstermez, bağlantı vermez, çoğu zaman kimden etkilendiğini kendisi de bilmez. Biz kaynakçaya değil içeriğe bakıyorduk: bir hesabın bugün yazdığını, bütün hesapların geçmiş içeriğinden çok değişkenli regresyonla tahmin etmeye çalışıyorduk. Çıkan şey, kimin kimi ne kadar açıkladığını gösteren ağırlıklı yönlü bir çizgeydi. Yöntemin kendisi Aurélie Lozano ve Vikas Sindhwani’nin çalışmasından geliyordu; onlar aynı yaklaşımı yüksek enerji fiziği makalelerine ve IBM Lotus hakkında yazan bloglara uygulamıştı.
Doğru cevabı bilmediğimiz bir problemi kıyaslamak
Buradaki asıl sıkıntı algoritmik değildi. Etkinin doğru cevabı hiçbir yerde yazmıyordu. Takipçi sayısına ya da retweet sayısına bakabilirdik, ama ikisi de aradığımız şeyi ölçmüyor; biz tam olarak hiçbir yerde açıkça belirtilmeyen etkiyi arıyorduk.
Sonunda vekil ölçü olarak retweet oranını seçtik. Gerekçe savunulabilirdi: bir tweet retweet ediliyorsa okunmuş ve karşılığı verilmiş demektir. Retweet oranını üç ayrı biçimde tanımladık — sadece kendi kümemiz içinde kalanlar, dışarıyı da sayanlar ve kaç ayrı kişinin paylaştığına indirgenmiş hâli — ve Granger sırasıyla aralarındaki ilişkiyi Spearman, Pearson ve Kendall katsayılarıyla ayrı ayrı ölçtük.
Sonuç, parametrelere utanç verici derecede duyarlıydı. Zaman adımı sayısını 110, gecikmeyi 5 seçtiğimizde retweet oranıyla korelasyon 0,52’ye çıkıyordu. Aynı algoritma, aynı veri, başka bir zaman ayrıklaştırmasıyla sıfıra yakın sonuçlar veriyordu. İlk denemelerimizde artık grafiği o kadar bozuktu ki birkaç hesap tek başına bütün artığı açıklıyor görünüyordu — ki bu, bir bulgu değil, parametre seçiminin yanlış olduğunun işaretiydi.
Ön sonuçlar ve başaramadıklarımız
Raporun sonuç bölümünü yazarken bu duyarlılığı gizlemedik. Kendi cümlemiz şuydu:
Due to time constraints, we did not run all of the tests and experiments that we would have liked and thus are hesitant to make claims about the results.
Açıkça yazdığımız ikinci eksik, konu sayısıydı. NMF’de kaç konu kullanacağınız bir parametredir ve bu parametreyi ilkeli biçimde seçmek konusunda hiçbir ilerleme kaydedemedik. Etiketli veri kümelerinde insan etiketlerinin sayısını kullandık, çünkü elimizde daha iyi bir gerekçe yoktu. Twitter’da böyle bir etiket de yoktu.
Üçüncüsü bir takastı. İnsanların hiç yazmadığı zaman aralıklarını veriden çıkardığımızda sonuçlar iyileşiyordu; hiçbir şey yapmayan hesapların, hiçbir şey yapmayan başka hesapları “açıklaması” ortadan kalkıyordu. Ama bu sürüm her hesap için çekirdekleri baştan hesaplamayı gerektirdiği için çok daha yavaş çalışıyor ve çok daha fazla bellek tüketiyordu. Doğru sonucu veren yöntem, koşturulabilen yöntem değildi.

Bugüne kalan
Ağustos 2010’da çalışmayı iki yerde anlattım: IPAM-UCLA’da ve IBM T.J. Watson Araştırma Merkezi’nde. İkincisinde dinleyicilerin bir kısmı, kullandığımız yöntemi geliştirmiş olan insanlardı. Bir öğrenci için bunun öğrettiği şey konudan bağımsızdı: bir işi, o işi sizden iyi bilen insanlara anlatabiliyorsanız anlamışsınız demektir.
Teknik tarafta iki şey kaldı. Birincisi, temsil seçmenin bir mühendislik ayrıntısı değil modelleme kararı olduğu. Aynı veriyi kelime yerine konu olarak yazmak, çalışmayan bir işi çalışır hâle getirdi. Bir yıl sonra Facebook’ta reklam tıklama oranı modeli üzerinde çalışırken kazanç yine aynı yerden geldi: daha akıllı bir algoritmadan değil, doğru özelliklerden.
İkincisi vekil ölçüyle ilgili. Retweet oranı etki değildir; etkinin iz bırakan kısmıdır. Bir vekil ölçü seçmek zorunda kalırsanız — ki çoğu zaman kalırsınız — neyi ölçmediğini de aynı cümlede söylemeniz gerekir. Ve bir sayı parametre değiştirdiğinizde 0,52’den sıfıra düşebiliyorsa, o henüz bir sonuç değil, bir parametre seçimidir.
Rapor 82 sayfa çıktı, 20 Ağustos 2010 tarihiyle. İçinde kesin bir cevap yok; bir problemin tam olarak nerede tıkandığının tarifi var. Aradan geçen zamanda ikincisinin daha uzun ömürlü olduğunu gördüm.
Teknoloji
- Matlab
- Seyrek NMF
- MGOMP
- Twitter verisi
Bağlantılar
Yorumlar
Burada henüz kimse konuşmamış. İlk sözü siz söyleyin — katılmadığınız yeri yazarsanız daha da iyi.
Yorum yazın
Yorumlar önce bana geliyor. Onayladığımda burada, adınızla birlikte yayımlanıyor.