[toc]
一、目的
之前看過一些pagerank的知識和原始碼,自己也動手了一遍。今天看那本mining of massive dataset講pagerank章節的時候,對pagerank又有了更多的理解,現在闡釋如下。 pagerank演算法研究網路之間的相互引用的問題,我認為可以看成一種「名聲資源」的流動的過程。流動的這個過程其實就是馬爾科夫過程,而我們要求的pagerank值就是達到平衡狀態時的值。
二、馬爾科夫過程平衡兩個條件
強連通。 就是各個節點能夠相互訪問
沒有終止點。
三、pagerank兩個問題
這兩個條件的不滿足其實就造成了pagerank演算法需要面對的兩個問題。
3.1 deadend終止點這種界定這個必然不滿足第二個條件,終止點的解決方法有兩種 a) 心靈漂移 b) 將這種點去除,先將連通的整個網路的pagerank值計算出來後,再管他們
3.2 spidertrap不能滿足各個節點相互訪問的條件 這個情況有一組網頁相互連線,不跟其他人打交道。這組連線跟整個網路唯一的聯絡就是有一些網頁引用他們,也就是說有外部網頁給他們資源,但是他們從來不輸出資源。無法滿足條件1
四、從矩陣上分析兩個問題
pagerank的矩陣運算如下
4.1 deadend問題分析
乙個deadend的節點的分配是這樣的。下圖中,第三個點是deadend點。
豎著第三列是deadend的資源輸出分配,你可以看到他從來不分配給其他值。 橫著第三列是輸入給deadend資源的配置,你可以看到每次都有各種pagerank值輸血給deadend節點,但是deadend節點在輸出方面卻是一毛不拔的。 如果這樣持續到後面,就會看到整個網路都把資源給了deadend,而deadend怎麼做呢?從矩陣運算上,也就是左乘矩陣中一行一行向量和右邊的pagerank向量相乘的時候,每行的第三個元素都和v3值相乘,但是我們知道每行第三個元素都是0啊,這樣每行和pagerank列向量相乘的時候,v3的pagerank都不貢獻作用,甚至連v3自己的pagerank值他都起不上作用,那麼我們分配給deadend節點的pagerank值**去了?
完全被蒸發浪費掉了!
4.2 spidertrap問題分析-
而乙個spidertrap的點在矩陣中是如何做的呢?spidertrap只是一味的接收別人的資源,它不像deadend那樣乙個節點都不給,他也給,也有輸出行為,但是令人髮指的是,他的輸出行為是他自己,他的錢財從左荷包出來,又從右荷包進去了。 - 為了簡化思路,我們這裡以乙個單節點的spidertrap,也就是下面的d為例。如果有乙個組spidertrap節點,達到的也是這個效果。
觀察豎著第三列,這是spidertrap節點的資源輸出分配,從感官上看,你看到他是有分配的,但是細看你發現他給的是自己,他把100%的東西都給自己了! 這意味著什麼? 這意味著,每次pagerank迭代,這個傢伙都會分毫不差的拿到自己原來的pagerank值,然後還要加上其他節點給他自己的值。
next v3=(1/3)v1+(1/2)v2+100%*v3這傢伙自己對自己貢獻的是1v3,加上其他的值就是穩賺不賠的買賣了。而如果這個點是deadend的話,他的值其實是自己是沒有貢獻的,0v3, 這是損人不利己的做法。 因此,到後來其實我們可以看到,隨著迭代繼續,整個網路的資源總值不會減少,但是分布上會有很大變化,到後面幾乎所有的值都要跑到spidertrap上來了。那樣,
對比了下deadend和spidertrap,其實我們發現,兩者其實描述上不太一樣,但是在矩陣資源分配上,我們可以看到他們的區別其實就是乙個誰也不分配,乙個就管分配自己。乙個讓整個網路的總值發生了損失,而另乙個則讓整個網路的分布發生了變化。(其實deadend也讓分布發生了變化的,deadend其實就是整個網路失血點所在,到了失血點的血液資源,全都被廢掉了!)
五、pagerank兩種方法通用解決措施
那麼補救措施是什麼?心靈漂移teleporting。 什麼意思,就是在一般情況下85%的情況下,我都是按照網路情況走的,但是在15%的情況下,我的資源流向不按照分布矩陣那樣配置資源了,而是天下大同,將各個節點的資源平均分給各個節點。 這個法子對deadend和spidertrap都有效。 為啥? 「心靈漂移」倡導平均富裕,在這15%的時間,我就會對所有節點進行強制平均分配,「打到土豪分田地」。 這樣即使deadend有獲取到東西就把東西砸壞的打算,即使spidertrap有獲取到的東西都是屬於我的的打算,我們都可以通過這15%的時間進行某種程度的挽救。 但是這種挽救長久麼?能不能夠真正緩解pagerank網路本身的這兩種缺陷呢?我也不知道。在實際操作上來看,是可以的,雖然我不知道為啥?
六、pagerank一句話
其實說到這裡,我們可以把spidertrap和deadend理解成兩個壞孩子,我們如何懲罰這兩個壞孩子,才能夠讓好孩子們的資源網走的流暢,就是pagerank演算法給我解決的問題。
七、參考
[1] mining of massive dataset書籍
機器學習從入門到創業手記 機器學習環境配置
我,路思和高維從單位領了新的筆記本,也坐到了公司給我們提供的寬敞明亮的工位上,我覺得當時拒絕父母讓我回去工作也許是對的。第一天的工作並不複雜,李里給每個人列印了一張 機器學習開發環境配置表 的檔案,讓我們按照紙面的步驟把機器配置好。機器學習開發環境配置表 python 3.x安裝 訪問 圖3.1.1...
機器學習手記 6 KNN演算法
knn演算法,是監督學習,已知一組訓練資料,知道多個特徵對應值和所屬類別,然後新增測試資料,計算測試樣本在多特徵空間上到各類別訓練資料的歐式距離,距離那個類別訓練資料集的距離小,就屬於那個類別。需要指出這個對於訓練資料集的選擇很重要,如果某類樣本很多,另一類樣本較少,這會對分類結果有影響。另外knn...
機器學習從入門到創業手記 基礎開發技術
從戰情室出來時,我除了收穫機器學習演算法的基礎知識外也和路思與高維熟悉了很多,路思這人來自與小縣城,但當年高考也是全縣第四的成績考入了的大學,他時常有些忿忿不平的表示當年要是全國統一分數線,他一定會上個211,985之類的重點,我也十分了解他的鬱悶,他從初中時就學校就採用封閉式教育,半個月才能回家一...