1. 程式人生 > >機器學習(十九)——PageRank演算法, KNN, loss function詳解

機器學習(十九)——PageRank演算法, KNN, loss function詳解

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+vj,Xm+n=j|Xm=i)

其中,n>1,1vn1

上式表示由i出發,首次到達j的概率,也叫首中概率

相應的還有最終概率

fij=n=1f(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鏈的平穩分佈,則limnP(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)=vBuPR(v)L(v)

這裡有兩種異常情況需要處理。

1.網際網路中不乏一些沒有出鏈的網頁,為了滿足Markov鏈的收斂性,設定其對所有的網頁(包括它自己)都有出鏈。

2.網際網路中一個網頁只有對自己的出鏈,或者幾個網頁的出鍊形成一個迴圈圈。那麼在不斷地迭代過程中,這一個或幾個網頁的PR值將只增不減,顯然不合理。

對於這種情況,我們假定有一個確定的概率α會輸入網址直接跳轉到一個隨機的網頁,並且跳轉到每個網頁的概率是一樣的。即:

PR(pi)=αpjMpiPR(pj)L(pj)+(1α)N

α也叫阻尼係數,一般設定為0.85。

由Markov鏈的收斂性可知,無論每個網頁的PR初始值如何設定,都不影響最終的PR值。

在實際計算中,由於網頁數量眾多,而其中的連結關係相對較少,因此這個計算過程,實際上是一個巨維稀疏矩陣的凸優化問題,此處不再贅述。

TextRank

TextRank演算法是PageRank演算法在NLP領域的擴充套件,被廣泛用於自動摘要和提取關鍵詞。

將原文字拆分為句子,在每個句子中過濾掉停用詞(可選),並只保留指定詞性的單詞(可選)。由此可以得到句子的集合和單詞的集合。

每個單詞作為TextRank中的一個節點。假設一個句子依次由下面的單片語成:w1,,wn。從中取出k個連續的單詞序列,組成一個視窗。我們認為視窗中任意兩個單詞間存在一個無向邊,從而構建出一個圖模型。

對該圖模型應用PageRank演算法,可得:

相關推薦

機器學習——PageRank演算法, KNN, loss function

PageRank演算法 概述 在PageRank提出之前,已經有研究者提出利用網頁的入鏈數量來進行連結分析計算,這種入鏈方法假設一個網頁的入鏈越多,則該網頁越重要。早期的很多搜尋引擎也採納了入鏈數量作為連結分析方法,對於搜尋引擎效果提升也有較明顯

機器學習——拉普拉斯光順Laplace smoothing

我們已經描述過的樸素貝葉斯演算法能夠很好地解決許多問題,但是有一個簡單的改變使得它更好地工作,特別是對於文字分類。讓我們簡單地討論演算法在當前形式下的問題,然後討論如何修復它。考慮垃圾郵件/電子郵件分類,讓我們假設在完成CS229並完成了對專案的出色工作之後,您決定在2003

機器學習之python學習

今天來學習python中的檔案操作這是很關鍵的, 這次先學習檔案的讀寫,需要注意的是檔案的許可權的問題。 總結如下最常用的許可權: 許可權 數量 r 開啟只讀檔案,該檔案必須存在。

機器學習 關聯分析之Apriori演算法

前言        目前隨著資料量迅速增多,從海量資料中尋找有價值的資訊帶來的成本也在不斷增加,傳統的搜尋資料方式已經不能滿足我們的需要,我們先來通過一個演算法看一下演算法時間複雜度快慢帶來的影響,通過計算耗時我們會有個感性

機器學習 讓你輕鬆理解K-means 聚類演算法

前言        你還記得菜市場賣菜的嗎?書店賣書的或者是平時去超市買東西時的物品,它們是不是都根據相似性擺放在一起了呢,飲料、啤酒、零食分佈在各自區域,像這樣各級事物的相似特點或特性組織在一起的方法,在機器學習裡面即成為

吳恩達機器學習K-means無監督學習、聚類演算法

目錄 0. 前言 學習完吳恩達老師機器學習課程的無監督學習,簡單的做個筆記。文中部分描述屬於個人消化後的理解,僅供參考。 如果這篇文章對你有一點小小的幫助,請給個關注喔~我會非常開心

吳恩達機器學習推薦系統基於梯度下降的協同過濾演算法

目錄 0. 前言 學習完吳恩達老師機器學習課程的推薦系統,簡單的做個筆記。文中部分描述屬於個人消化後的理解,僅供參考。 如果這篇文章對你有一點小小的幫助,請給個關注喔~我會非常開心的~ 0. 前言 在推薦系統中,主要有兩種方法,基於內容的推薦

演算法工程師修仙之路:吳恩達機器學習

吳恩達機器學習筆記及作業程式碼實現中文版 第十章 支援向量機 大間隔分類器的數學原理 假設我有兩個二維向量 u

演算法工程師修仙之路:吳恩達機器學習

吳恩達機器學習筆記及作業程式碼實現中文版 第十章 支援向量機 直觀上對大間隔的理解 人們有時將支援向量機看作是大間距分類器。 支援向量機模型的代價函式,在左邊這裡我畫出了關於 z 的代價函式

演算法工程師修仙之路:吳恩達機器學習

吳恩達機器學習筆記及作業程式碼實現中文版 第九章 機器學習系統設計 確定執行的優先順序 以一個垃圾郵件分類器演算法為例進行討論。 為了解決這樣一個問題,我們首先要做的決定是如何選擇並表達特徵向量

演算法工程師修仙之路:吳恩達機器學習

吳恩達機器學習筆記及作業程式碼實現中文版 第八章 應用機器學習的建議 決定下一步做什麼 獲得更多的訓練例項——通常是有效的, 但代價較大, 下面的方法也可能有效, 可考慮先採用下面的幾種方法: 嘗試減少特徵的數量; 嘗試獲得更多的特徵

機器學習——協同過濾的ALS演算法2、主成分分析

Kendall秩相關係數(Kendall rank correlation coefficient) 對於秩變數對(xi,yi),(xj,yj): (xi−xj)(yi−yj)⎧⎩⎨>0,=0,<0,concordantneither con

C++語言學習——C++類型識別

c++類 面向 字節 檢查 case include 指向 指針和引用 peid C++語言學習(十九)——C++類型識別 一、C++類型識別簡介 1、C++類型識別簡介 C++是靜態類型語言,其數據類型是在編譯期就確定的,不能在運行時更改。C++語言中,靜態類型是對象自身

GO語言學習Go 錯誤處理

錯誤處理 math println 接口 class int 處理機 nil sprintf Go 錯誤處理 Go 語言通過內置的錯誤接口提供了非常簡單的錯誤處理機制。 error類型是一個接口類型,這是它的定義: type error interface {

深度學習基於空間金字塔池化的卷積神經網路物體檢測

原文地址:http://blog.csdn.net/hjimce/article/details/50187655 作者:hjimce 一、相關理論    本篇博文主要講解大神何凱明2014年的paper:《Spatial Pyramid Pooling in Dee

吳恩達機器學習機器學習流水線、上限分析

目錄 0. 前言 1. 流水線 2. 上限分析(Ceiling analysis) 學習完吳恩達老師機器學習課程的照片OCR,簡單的做個筆記。文中部分描述屬於個人消化後的理解,僅供參考。 如果這篇文章對你有一點小小的幫助,請給個關注

JMeter學習JMeter測試MongoDB

JMeter測試MongoDB效能有兩種方式,一種是利用JMeter直接進行測試MongoDB,還有一種是寫Java程式碼方式測試MongoDB效能。   第一種方法 1.編寫Java程式碼,內容如下: package com.test.mongodb; im

機器學習 電商O2O優惠券使用預測-2

介紹        這篇文章是想繼續總結一遍優惠券預測,寫寫感受並進行一個記錄總結,零零散散以作為記錄整理之用。 本篇是選了三點本人覺得專案中重要的寫了一下,其它內容暫時略過 第一部分:資料清洗資料分析程式碼

機器學習 kaggle競賽之泰坦尼克號專案實戰-2

導航        想寫這篇部落格的由衷是做完幾個專案,有時對於圖的畫法和模型融合演算法原理理解還很膚淺,特此加深一下印象。 內容概覽 圖 pandas、matplotlib、seaborn 餅圖 直方圖

機器學習 輕鬆理解模型評價指標

篇首語        相信大家都知道下面的圖片是啥意思,每個無論在啥公司、無論哪個行業都有自己的KPI評價指標,公司會根據公司情況設定公司戰略KPI、部門KPI、以及每個人的指標,對於員工也是比較關心自己的KPI因為關係著你