中文版鏈接:https://dataminingguide.books.yourtion.com/
源碼鏈接: https://github.com/yourtion/DataminingGuideBook-Codes
像讀一本小說一樣。
一本很好的數據挖掘入門書和python入門書,如果代碼寫得差數學也不好也看得下去。
整本書都是小案例,邊看邊demo比較好。
Part I 協同過濾
協同過濾是什么?
比如我想推薦一本書給你,我會在網站上搜索與你興趣類似的其他用戶,看看這個用戶喜歡什么書然后把它們推薦給你。
如何尋找相似用戶?
根據用戶A和B有共同評價的書的評分計算距離:
如何解決用戶的評級差異問題?
皮爾森相關系數
但A和B有共同評價的書可能很少(數據稀疏),余弦相似度可以忽略這樣的0-0匹配:
僅依賴于最相近的用戶推薦有時候是片面的,基于多個相似用戶的推薦可能更好。比如K近鄰算法。
隱式評級
除了用戶給出評級(顯式評級)之外,觀察用戶行為也是獲得結果的方法:比如跟蹤用戶在紐約時報在線的點擊軌跡。
到目前為止都是基于用戶的過濾,但有兩個問題:1 、擴展性(用戶數量會變多);2、稀疏性。
因此最好采用基于物品的過濾,計算出最相近的兩件物品。
同樣用余弦相似度計算兩個物品的相似度(為抵消分數夸大的情況,我們從每個評級結果中減掉平均評分):
Slope one 算法
(1)計算所有物品對的偏差
(2)利用加權偏差進行預測
Part II 內容過濾和分類
內容過濾不同于協同過濾,它是基于物品屬性的過濾。
選定某些特征,給出物品各項特征得分,其他和第一部分計算相似。
Part III 算法評估和KNN
(1)算法評估
n折交叉驗證(留一法):測試集和訓練集的劃分可能會導致準確率無法反應實際分類器的精確程度。若把數據集分為N份,使用其中n-1份進行訓練,剩下一份測試,重復10次做平均。(計算機開銷比較大,適合小數據集)
混淆矩陣:可視化輸出結果
Kappa統計量
(2)kNN(選取最近的k個點投票)
Brill:更多訓練數據比算法改進帶來的準確率提高更多。
Part IV 概率和樸素貝葉斯
(1)樸素貝葉斯簡介
近鄰方法:lazy learner (每次都要遍歷整個訓練數據)
貝葉斯方法:eager learner(給定數據集立刻進行數據分析和模型構建)
P(h)即某個假設h為真的概率稱為h的先驗概率。
P(h|d)即觀察到數據d之后h的概率稱為后驗概率。
樸素貝葉斯(假設相互獨立)
P(A|B,C,D)=P(A)P(B|A)P(C|A)P(D|A)
概率估計(防止nc為0)
數據類型
貝葉斯方法用categorical data,區間內的值計數問題可以用如下解決:
方法一:構建類別
方法二:高斯分布
(2)樸素貝葉斯及文本-非結構化文本分類
Part V 聚類--群組發現
kmeans聚類
層次聚類
其他:
- heapq模塊 http://blog.csdn.net/marksinoberg/article/details/52734332
*assert
assert語句:用以檢查某一條件是否為True,若該條件為False則會給出一個AssertionError。
用法:assert type(x)=int and x>=0
如果不滿足后面的expression,則會彈出
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
assert type(n)==int and n>0
AssertionError