नॉन-नेगेटिव मैट्रिक्स फैक्टोराइज़ेशन (NMF)

Python में Unsupervised Learning

Benjamin Wilson

Director of Research at lateral.io

नॉन-नेगेटिव मैट्रिक्स फैक्टोराइज़ेशन

  • NMF = "non-negative matrix factorization"
  • डायमेंशन रिडक्शन तकनीक
  • NMF मॉडल समझने योग्य हैं (PCA के विपरीत)
  • आसान व्याख्या का मतलब आसान समझाना!
  • शर्त: सभी सैंपल फीचर्स non-negative (>= 0) हों
Python में Unsupervised Learning

समझने योग्य भाग

  • NMF डॉक्यूमेंट्स को टॉपिक्स (या "themes") के कॉम्बिनेशन के रूप में व्यक्त करता है

 

टेक्स्ट बॉक्स: DataCamp is the first and foremost leader in Data Science Education offering skill-based training, pioneering technical innovation... लगभग बराबर 0.6 गुना टेक्स्ट बॉक्स जिसमें शब्द program, r, python, function, और method हैं, प्लस 0.5 गुना टेक्स्ट बॉक्स जिसमें words data, analysis, cluster, statistics, mean हैं, प्लस 0.7 गुना टेक्स्ट बॉक्स जिसमें words teaching, learn, lesson, lessons, और course हैं

Python में Unsupervised Learning

समझने योग्य भाग

  • NMF इमेजेज़ को पैटर्न्स के कॉम्बिनेशन के रूप में व्यक्त करता है

 

3 पट्टियों वाला बॉक्स लगभग बराबर 0.98 गुना एक पट्टी वाला बॉक्स प्लस 0.91 गुना अलग पट्टी वाला बॉक्स प्लस 0.95 गुना अलग पट्टी वाला बॉक्स

Python में Unsupervised Learning

scikit-learn NMF का उपयोग

  • fit() / transform() पैटर्न फॉलो करता है
  • कंपोनेंट्स की संख्या देनी होती है, जैसे NMF(n_components=2)
  • NumPy arrays और csr_matrix के साथ काम करता है
Python में Unsupervised Learning

उदाहरण: वर्ड-फ्रीक्वेंसी array

  • वर्ड-फ्रीक्वेंसी array, 4 शब्द, कई डॉक्यूमेंट्स
  • हर डॉक्यूमेंट में शब्दों की उपस्थिति "tf-idf" से मापें
    • "tf" = डॉक्यूमेंट में शब्द की फ्रीक्वेंसी
    • "idf" बार-बार आने वाले शब्दों का असर घटाता है

वर्ड-फ्रीक्वेंसी array

Python में Unsupervised Learning

NMF का उदाहरण उपयोग

  • samples वर्ड-फ्रीक्वेंसी array है
from sklearn.decomposition import NMF

model = NMF(n_components=2)
model.fit(samples)
NMF(n_components=2)
nmf_features = model.transform(samples)
Python में Unsupervised Learning

NMF components

  • NMF में components होते हैं
  • ... जैसे PCA में principal components होते हैं
  • components का डायमेंशन = samples का डायमेंशन
  • एंट्रीज़ non-negative होती हैं
print(model.components_)
[[ 0.01  0.    2.13  0.54]
 [ 0.99  1.47  0.    0.5 ]]
Python में Unsupervised Learning

NMF features

  • NMF फीचर वैल्यूज़ non-negative होती हैं
  • इनसे samples को पुनर्निर्मित कर सकते हैं
  • ... फीचर वैल्यूज़ को components से मिलाएँ
print(nmf_features)
[[ 0.    0.2 ]
 [ 0.19  0.  ]
  ...
 [ 0.15  0.12]]
Python में Unsupervised Learning

किसी sample का reconstruction

print(samples[i,:])
[ 0.12  0.18  0.32  0.14]
print(nmf_features[i,:])
[ 0.15  0.12]

NMF के components को फीचर वैल्यू से गुणा कर जोड़ना

Python में Unsupervised Learning

sample reconstruction

  • components को फीचर वैल्यूज़ से गुणा करें और जोड़ें
  • इसे मैट्रिक्स के गुणनफल के रूप में भी लिख सकते हैं
  • यही "NMF" में "Matrix Factorization" है
Python में Unsupervised Learning

NMF सिर्फ non-negative डेटा पर फिट होता है

  • हर डॉक्यूमेंट में word frequencies
  • arrays के रूप में एन्कोडेड इमेजेज़
  • ऑडियो स्पेक्ट्रोग्राम्स
  • ई-कॉमर्स साइट्स पर परचेज हिस्ट्रीज़
  • ... और बहुत कुछ!
Python में Unsupervised Learning

अभ्यास करते हैं!

Python में Unsupervised Learning

Preparing Video For Download...