模型:
從二維數據中挖掘出新的特征,必須進行分解,從分解的矩陣中得出結論
A=[ word1,word2,word3,...,wordN
docu1:
docu2:
...
docuN:
]
非負矩陣因式分解(NMF)算法思想:
1.找到特征矩陣和權重矩陣,使其乘積和原矩陣近似
特征矩陣:每個特征對應一行,單個單詞對應一列,矩陣中的數代表了某個單詞對這個特征的重要程序
權重矩陣:作用是將特征映射到文章矩陣,每一行對應一篇文章,每一列對應一個特征,矩陣的數代表了某個特征應用於某篇文章的程度;將權重*特征矩陣=文章矩陣;現實中這種可能性較小,算法的目標是盡可能的重新構造出原來的數據集
2.使用成本優化方法與乘法更新法則(multiplication update rules;http://hebb.mit.edu/people/seung/papers/nmfconverge.pdf),此法則產生了4個新的更新矩陣,原始的文章矩陣稱為數據矩陣
hn:轉置后的權重矩陣與數據矩陣相乘得到的矩陣
hd:轉置后的權重矩陣與原權重矩陣相乘,再與特征矩陣相乘得到的矩陣
wn:數據矩陣與轉置后的特征矩陣相乘得到的矩陣
wd:權重矩陣與特征矩陣相乘,再與轉置后的特征矩陣相乘得到的矩陣
特征矩陣和權重矩陣的更新方法:
先將矩陣用array()轉為數組
將特征矩陣中的每個值與hn中對應的值相乘,並除以hd中的值得到新的權重矩陣
將權重矩陣中的每個值與wn中的對應值相乘,並除以wd中的值得到新的權重矩陣
能最快的得到最優的解
3.根據特征矩陣和權重矩陣展示特征的topN文章以及文章的topN特征
1.目的:
不是為了預測,而是嘗試對數據進行特征識別,並且告訴客戶值得關注的重要信息
雜音分離、文檔主題的識別(一篇文章多個主題,一個主題包含多個文章)
2.數據准備:
i.從各個網站或者RSS下載文章
ii.對文章進行分詞(簡單的以空格,並且選取長度大於3的單詞,以過濾掉副詞、stop詞等)
iii.
將結果組合成一個矩陣,每一個行是一篇文章中出現的詞的次數,而列數是所有文章中出現的詞(過濾掉出現次數小於3,且在所有文章中出現的比例大於60%的詞)的個數(且按字典順序排列)
構造矩陣
3.模型選擇:
i.貝葉斯分類:
缺陷:開發人員在訓練數據前,必須確定所有的分類,包括決策樹、支持向量機等監督學習算法
ii.聚類
缺陷:結果不夠准確,且耗時
iii.非負矩陣因式分解(NMF)
目的是為了找到兩個更小的矩陣,使得兩者的乘機能得到原來的矩陣,兩個矩陣分別是:
a.特征矩陣:
每個特征對應一行,單個單詞對應一列,矩陣中的數代表了某個單詞對這個特征的重要程序
b.權重矩陣:
作用是將特征映射到文章矩陣,每一行對應一篇文章,每一列對應一個特征,矩陣的數代表了某個特征應用於某篇文章的程度;將權重*特征矩陣=文章矩陣;現實中這種可能性較小,算法的目標是盡可能的重新構造出原來的數據集
c.具體的算法:
python中的numpy包,可以通過matrix()、shape()、transpose()來構造矩陣、得到矩陣的維度便於遍歷以及轉置
成本函數的引入:
將特征矩陣和權重矩陣的乘積與原始文章矩陣的差值的平方累加起來構造成本函數
其后用退火優化算法找到一個滿意的題解,但是最優的方法是使用乘法更新法則(multiplication update rules;http://hebb.mit.edu/people/seung/papers/nmfconverge.pdf),此法則產生了4個新的更新矩陣,原始的文章矩陣稱為數據矩陣
hn:轉置后的權重矩陣與數據矩陣相乘得到的矩陣
hd:轉置后的權重矩陣與原權重矩陣相乘,再與特征矩陣相乘得到的矩陣
wn:數據矩陣與轉置后的特征矩陣相乘得到的矩陣
wd:權重矩陣與特征矩陣相乘,再與轉置后的特征矩陣相乘得到的矩陣
特征矩陣和權重矩陣的更新方法:
先將矩陣用array()轉為數組
將特征矩陣中的每個值與hn中對應的值相乘,並除以hd中的值得到新的權重矩陣
將權重矩陣中的每個值與wn中的對應值相乘,並除以wd中的值得到新的權重矩陣

4.結果展示:
i.特征應用於所有文章的情況:
對每一個特征,先在特征矩陣中求出其單詞權重最高的6個單詞,成為模式名稱,然后在權重矩陣中,將所有的文章對此特征的權重、特征索引、文章名稱作為toppattern


ii.以文章的形式呈現
列出每篇文章及應用於該文章的前三項特征
5.新聞對股票的交易量的影響:
以交易量建模,是因為NMF使用的都是非負的
