NMF ile öneri sistemleri oluşturma

Python'da Unsupervised Learning

Benjamin Wilson

Director of Research at lateral.io

Benzer makaleleri bulma

  • Büyük bir çevrimiçi gazetede mühendissiniz
  • Görev: müşterinin okuduğu makaleye benzer makaleleri önermek
  • Benzer makalelerin konu dağılımları benzer olmalı
Python'da Unsupervised Learning

Strateji

  • Kelime sıklığı dizisine NMF uygulayın
  • NMF özellik değerleri konuları tanımlar
  • ... bu yüzden benzer belgelerin NMF özellikleri benzerdir
  • NMF özelliklerini karşılaştıralım mı?
Python'da Unsupervised Learning

Kelime sıklığı dizisine NMF uygulama

  • articles bir kelime sıklığı dizisidir
from sklearn.decomposition import NMF
nmf = NMF(n_components=6)
nmf_features = nmf.fit_transform(articles)
Python'da Unsupervised Learning

Strateji

  • Kelime sıklığı dizisine NMF uygulayın
  • NMF özellik değerleri konuları tanımlar
  • ... bu yüzden benzer belgelerin NMF özellikleri benzerdir
  • NMF özelliklerini karşılaştıralım mı?
Python'da Unsupervised Learning

Makale sürümleri

  • Aynı belgenin farklı sürümleri aynı konu oranlarına sahiptir
  • ... ancak tam özellik değerleri farklı olabilir!
  •  
  •  

Güçlü sürüm: Köpek adamı ısırdı! Korkunç köpeğin saldırısı adamı felç bıraktı...

Python'da Unsupervised Learning

Makale sürümleri

  • Aynı belgenin farklı sürümleri aynı konu oranlarına sahiptir
  • ... ancak tam özellik değerleri farklı olabilir!
  • Örn. bir sürüm çok anlamsız kelime kullanıyorsa
  •  

Zayıf sürüm: Duymuş olabilirsiniz, ne yazık ki görünüşe göre bir köpek belki de bir adamı ısırmış...

Python'da Unsupervised Learning

Makale sürümleri

  • Aynı belgenin farklı sürümleri aynı konu oranlarına sahiptir
  • ... ancak tam özellik değerleri farklı olabilir!
  • Örn. bir sürüm çok anlamsız kelime kullanıyorsa
  • Ancak tüm sürümler orijinden geçen aynı doğru üzerindedir

Evcil hayvanlar konusu vs tehlike konusu saçılım grafiği; güçlü ve zayıf sürüm orijinden geçen aynı doğru üzerinde

Python'da Unsupervised Learning

Kosinüs benzerliği

  • Doğrular arasındaki açıyı kullanır
  • Değer yükseldikçe benzerlik artar
  • Maksimum 1; açı 0 dereceyken

Belge A ve belge B saçılım grafiği; orijinden farklı açılarda geçen 2 ayrı doğru

Python'da Unsupervised Learning

Kosinüs benzerliklerini hesaplama

from sklearn.preprocessing import normalize

norm_features = normalize(nmf_features)
# if has index 23 current_article = norm_features[23,:] similarities = norm_features.dot(current_article)
print(similarities)
[ 0.7150569   0.26349967 ..., 0.20323616  0.05047817]
Python'da Unsupervised Learning

DataFrame'ler ve etiketler

  • Benzerlikleri makale başlıklarıyla etiketleyin; bir DataFrame kullanın
  • Başlıklar bir liste olarak verilir: titles
import pandas as pd

norm_features = normalize(nmf_features)
df = pd.DataFrame(norm_features, index=titles)
current_article = df.loc['Dog bites man']
similarities = df.dot(current_article)
Python'da Unsupervised Learning

DataFrame'ler ve etiketler

print(similarities.nlargest())
Dog bites man                            1.000000
Hound mauls cat                          0.979946
Pets go wild!                            0.979708
Dachshunds are dangerous                 0.949641
Our streets are no longer safe           0.900474
dtype: float64
Python'da Unsupervised Learning

Ayo berlatih!

Python'da Unsupervised Learning

Preparing Video For Download...