1. 程式人生 > >《集體智慧程式設計》閱讀筆記

《集體智慧程式設計》閱讀筆記

本書從實際業務、應用場景出發,介紹機器學習演算法。

提供推薦

主要從如何尋找相似使用者、通過相似使用者對使用者進行商品推薦以及相似商品進行講述。

每一位使用者對部分商品如影片有評價分數,根據兩個人對同一商品的打分情況可以判斷兩使用者相似情況。判斷相似程度有歐幾里得距離、皮爾遜相關度等。其中歐式距離計算不同分數之差的平方和的開方,範圍在0到正無窮,容易受到“誇大分數”的影響。皮爾遜相關度根據兩人對同樣幾件商品的評價分數,進行直線擬合,其範圍為0~1,並且可有效減小誇大分數的影響。

通過計算不同使用者之間的相似程度,可根據相似使用者看過的商品進行推薦。為避免一些特殊的評論出現,可考慮將相似使用者的相似度與其對該影片的評分加權求和,同時為了避免不同影片觀影人數差異,可用影片評分加權之和除以相似使用者的相關度之和。

相似商品的計算方法與相似使用者近似,只需將資料庫中使用者與商品位置互換,如原本記錄方式為使用者1{商品1,商品2},使用者2{商品1,商品2},改為商品1{使用者1,使用者2},商品2{使用者1,使用者2}。

發現群組

本章主要討論一種無監督學習方法——聚類。聚類通常用於資料量很大的情況,例如零售商們據此檢測出具有相似購買模式的消費者群體。常見有分級聚類(Hierarchical Clustering)和K均值聚類(K-Means Clustering)。

分級聚類每次計算兩兩個體之間相似距離,將距離最小的兩個個體合併為一個群體,可以用樹狀圖來儲存。在每一次的計算中,存在大量之前已經計算的距離,因此可以將其儲存,僅計算更新的新群體與其他個體之間的距離。儘管如此,分級聚類的計算量仍十分驚人。

K均值聚類首先隨機確定k個聚類中心(k給定),根據各個體與各聚類中心的距離,將其劃分為不同的聚類群體,之後根據每個群體的個體值的均值作為新的聚類中心,重複操作,直到個體分配不再發生變化。由於初始時k個聚類中心隨機確定,因此返回結果的順序大概率不同。

搜尋與排名

本章介紹了從大量文件或網頁中搜索一系列單詞,並根據單詞與文件的相關程度對搜尋結果進行排名。

首先,需要從一定規模的文件,或者一組網頁的連結逐步追蹤其他網頁,建立索引,儲存文件、不同單詞位置的資訊。建立索引之後,需要據此進行搜尋結果的排名。常用的度量方法有所搜尋的關鍵詞在文件中的頻率、關鍵詞在文件中的位置(越靠近前面或者標題中越有可能接近主題)、搜尋多個關鍵詞時不同關鍵詞在文件中的距離、外部其他網頁誰鏈向該網頁以及這些網頁對該網頁的評價。

還介紹了Google創始人Larry Page建立的PageRank,對每個頁面設定PageRank值,初始時每個頁面設定隨機值,根據指向該頁面的頁面的PageRank值更新當前頁面的值,多次迭代後每個頁面的值基本接近真實值。

另外,根據使用者的線上點選情況,可以建立人工神經網路,例如輸入各單詞是否點選,輸出使用者的實際點選頁面的URL,通過線上點選資料更新網路引數