机器学习(十九)——PageRank算法, KNN, loss function详解
http://antkillerfarm.github.io/
PageRank算法
概述
在PageRank提出之前,已經有研究者提出利用網頁的入鏈數量來進行鏈接分析計算,這種入鏈方法假設一個網頁的入鏈越多,則該網頁越重要。早期的很多搜索引擎也采納了入鏈數量作為鏈接分析方法,對于搜索引擎效果提升也有較明顯的效果。 PageRank除了考慮到入鏈數量的影響,還參考了網頁質量因素,兩者相結合獲得了更好的網頁重要性評價標準。
對于某個互聯網網頁A來說,該網頁PageRank的計算基于以下兩個基本假設:
數量假設:在Web圖模型中,如果一個頁面節點接收到的其他網頁指向的入鏈數量越多,那么這個頁面越重要。
質量假設:指向頁面A的入鏈質量不同,質量高的頁面會通過鏈接向其他頁面傳遞更多的權重。所以越是質量高的頁面指向頁面A,則頁面A越重要。
利用以上兩個假設,PageRank算法剛開始賦予每個網頁相同的重要性得分,通過迭代遞歸計算來更新每個頁面節點的PageRank得分,直到得分穩定為止。 PageRank計算得出的結果是網頁的重要性評價,這和用戶輸入的查詢是沒有任何關系的,即算法是主題無關的。
優點:
這是一個與查詢無關的靜態算法,所有網頁的PageRank值通過離線計算獲得;有效減少在線查詢時的計算量,極大降低了查詢響應時間。
缺點:
1)人們的查詢具有主題特征,PageRank忽略了主題相關性,導致結果的相關性和主題性降低
2)舊的頁面等級會比新頁面高。因為即使是非常好的新頁面也不會有很多上游鏈接,除非它是某個站點的子站點。
馬爾可夫鏈
Markov鏈的基本定義參見《機器學習(十六)》。
這里補充一些定義:
定義1:設C為狀態空間的一個子集,如果從C內任一狀態i不能到C外的任何狀態,則稱C為閉集。除了整個狀態空間之外,沒有別的閉集的Markov鏈被稱為不可約的。
如果用狀態轉移圖表示Markov鏈的話,上面的定義表征了Markov鏈的連通性。
定義2:如果有正整數d,只有當n=d,2d,…時,P(n)ii>0,或者說當n不能被d整除時,P(n)ii=0,則稱i狀態為周期性狀態。如果除了d=1之外,使P(n)ii>0的各n值沒有公約數,則稱該狀態i為非周期性狀態。
這個定義表征了Markov鏈各狀態的獨立性。
定義3:
f(n)ij=P(Xm+v≠j,Xm+n=j|Xm=i)
其中,n>1,1≤v≤n?1。
上式表示由i出發,首次到達j的概率,也叫首中概率。
相應的還有最終概率:
fij=∑n=1∞f(n)ij
定義4:
如果fii=1, 則稱狀態i為常返的,如果fii<1, 則稱狀態i為非常返的。
令ui=∑∞n=1nf(n)ii,則ui表示由i出發i,再返回i的平均返回時間。
如果ui=∞,則稱i為零常返的。
常返態表征Markov鏈的極限分布。顯然如果長期來看,狀態i“入不敷出”的話,則其最終的極限概率為0。
根據上面的定義,還可得到Markov鏈的三個推論:
推論1:有限狀態的不可約非周期Markov鏈必存在平穩分布。
推論2:若不可約Markov鏈的所有狀態是非常返或零常返的,則不存在平穩分布。
推論3:若Xj是不可約的非周期的Markov鏈的平穩分布,則limn→∞P(n)ij=Xj,即極限分布等于平穩分布。
簡易推導
上圖是一個Web圖模型的示例。其中的節點表示網頁,箭頭表示網頁鏈接。因此,從圖論的角度來說,這是一個有向圖。而從隨機過程的角度,這也可以看做是一個Markov鏈。
上圖中,A有兩個入鏈B和C,則:
PR(A)=PR(B)+PR(C)
然而圖中除了C之外,B和D都不止有一條出鏈,所以上面的計算式并不準確:
PR(A)=PR(B)2+PR(C)1
一般化,即:
PR(A)=PR(B)L(B)+PR(C)L(C)
其中,L表示外鏈個數。
更一般化,可得:
PR(u)=∑v∈BuPR(v)L(v)
這里有兩種異常情況需要處理。
1.互聯網中不乏一些沒有出鏈的網頁,為了滿足Markov鏈的收斂性,設定其對所有的網頁(包括它自己)都有出鏈。
2.互聯網中一個網頁只有對自己的出鏈,或者幾個網頁的出鏈形成一個循環圈。那么在不斷地迭代過程中,這一個或幾個網頁的PR值將只增不減,顯然不合理。
對于這種情況,我們假定有一個確定的概率α會輸入網址直接跳轉到一個隨機的網頁,并且跳轉到每個網頁的概率是一樣的。即:
PR(pi)=α∑pj∈MpiPR(pj)L(pj)+(1?α)N
α也叫阻尼系數,一般設定為0.85。
由Markov鏈的收斂性可知,無論每個網頁的PR初始值如何設定,都不影響最終的PR值。
在實際計算中,由于網頁數量眾多,而其中的鏈接關系相對較少,因此這個計算過程,實際上是一個巨維稀疏矩陣的凸優化問題,此處不再贅述。
TextRank
TextRank算法是PageRank算法在NLP領域的擴展,被廣泛用于自動摘要和提取關鍵詞。
將原文本拆分為句子,在每個句子中過濾掉停用詞(可選),并只保留指定詞性的單詞(可選)。由此可以得到句子的集合和單詞的集合。
每個單詞作為TextRank中的一個節點。假設一個句子依次由下面的單詞組成:w1,…,wn。從中取出k個連續的單詞序列,組成一個窗口。我們認為窗口中任意兩個單詞間存在一個無向邊,從而構建出一個圖模型。
對該圖模型應用PageRank算法,可得:
WS(Vi)=(1?d)+d∑Vj∈In(Vi)wji∑Vk∈Out(Vj)wjkWS(Vj)
上式的W為權重(也可叫做結點相似度),一般采用以下定義:
W(Si,Sj)=|{wk|wk∈Si&wk∈Sj}|log(|Si|)+log(|Sj|)
其中,|Si|是句子i的單詞數。
上面說的是關鍵詞的計算方法。計算自動摘要的時候,將句子定義為結點,并認為全部句子都是相鄰的即可。自動摘要所用的權重函數,一般采用BM25算法。
參考
http://www.cnblogs.com/rubinorth/p/5799848.html
http://blog.csdn.net/hguisu/article/details/7996185
http://www.docin.com/p-1231683333.html
http://www.docin.com/p-630952720.html
KNN
K最近鄰(k-Nearest Neighbor,KNN)分類算法,是一個理論上比較成熟的方法,也是最簡單的機器學習算法之一。
該方法的思路是:如果一個樣本在特征空間中的k個最相似(即特征空間中最鄰近)的樣本中的大多數屬于某一個類別,則該樣本也屬于這個類別。
KNN算法中,所選擇的鄰居都是已經正確分類的對象。該方法在定類決策上只依據最鄰近的一個或者幾個樣本的類別來決定待分樣本所屬的類別。
KNN方法雖然從原理上也依賴于極限定理,但在類別決策時,只與極少量的相鄰樣本有關。由于KNN方法主要靠周圍有限的鄰近的樣本,而不是靠判別類域的方法來確定所屬類別的,因此對于類域的交叉或重疊較多的待分樣本集來說,KNN方法較其他方法更為適合。
和K-means的區別
雖然K-means和KNN都有計算點之間最近距離的步驟,然而兩者的目的是不同的:K-means是聚類算法,而KNN是分類算法。
一個常見的應用是:使用K-means對訓練樣本進行聚類,然后使用KNN對預測樣本進行分類。
KNN在時間序列分析上的應用
KNN雖然主要是個分類算法,但通過構建特殊的模型,亦可應用于其他領域。其中,KNN在時間序列分析上的應用,就是一個很有技巧性的事情。
假設已知時間序列X:{x1,…,xn},來預測xn+1。
首先,我們選取xn+1之前的最近m個序列值,作為預測值的特征向量Xm{n+1}。這里的m一般根據時間序列的周期來選擇,比如商場客流的周期一般為一周。
Xm{n+1}和預測值xn+1組成了擴展向量[Xm{n+1},xn+1]。為了表明xn+1是預測值的事實,上述向量又寫作[Xm{n+1},yn+1]。
依此類推,對于X中的任意xi,我們都可以構建擴展向量[Xm{i},yi]。即我們假定,xi的值由它之前的m個序列值唯一確定。顯然,由于是已經發生了的事件,這里的yi都是已知的。
在X中,這樣的m維特征向量共有n?m個。使用KNN算法,獲得與Xm{n+1}最鄰近的k個特征向量Xm{i}。然后根據這k個特征向量的時間和相似度,對k個yi值進行加權平均,以獲得最終的預測值yn+1。
參考:
http://www.doc88.com/p-1416660147532.html
KNN算法在股票預測中的應用
loss function詳解
Mean Squared Error(MSE)/Mean Squared Deviation(MSD)
MSE=1n∑i=1n(Yi^?Yi)2
Symmetric Mean Absolute Percentage Error(SMAPE or sMAPE)
MSE定義的誤差,實際上是向量空間中的歐氏距離,這也可稱為絕對誤差。而有些情況下,可能相對誤差(即百分比誤差)更有意義些:
SMAPE=1n∑t=1n|Ft?At|(At+Ft)/2
上式的問題在于At+Ft≤0時,該值無意義。為了解決該問題,可用如下變種:
SMAPE=100%n∑t=1n|Ft?At||At|+|Ft|
Mean Absolute Error(MAE)
MAE=1n∑i=1n|fi?yi|=1n∑i=1n|ei|
這個可以看作是MSE的1范數版本。
Mean Percentage Error(MPE)
MPE=100%n∑t=1nat?ftat
總結
以上是生活随笔為你收集整理的机器学习(十九)——PageRank算法, KNN, loss function详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Zigbee音频, 6LowPAN, I
- 下一篇: 数学狂想曲(五)——概率分布(2), 自