An Algorithm Summary of Programming Collective Intelligence (1)
就按照最后一章的順序來說吧。很多名字都不知道中文該怎么說,就直接用英文名稱了。
Naive Bayesian Classifier 樸素貝葉斯分類器
nb算法是通過學(xué)習(xí)樣本中已經(jīng)分類的條目,計算生成條目中的特性相對于類別的概率矩陣,然后根據(jù)待分類條目中特性在這個矩陣中的值來反向計算條目的類別概率。
P(Category|Item)=P(Item|Category)*P(Category)/P(Item)
在靜態(tài)樣本中,P(Item)是固定的,所以可以去掉簡化計算。但是如果樣本集是動態(tài)的,就需要考慮進(jìn)來。
P(Item|Category)=P(Feature1|Category)*P(Feature2|Category)*...
優(yōu)點:
速度快
增量訓(xùn)練時可以不使用舊樣本
容易理解
分類效果往往比想象的好
缺點:
對于內(nèi)容龐雜的大分類來說效果不太好,特別是出現(xiàn)比較中性的特性組合時更是如此。
Decision Tree Classifier 決策樹
dt算法進(jìn)行分類計算是很簡單直觀的,它的技巧在于決策樹的構(gòu)造過程。樣本是已知的條件結(jié)果數(shù)據(jù)矩陣,需要決定的是用來分類的條件順序。為了得到這個順序,就要針對每個條件計算單純應(yīng)用這個條件分類后結(jié)果的混合度,也就是看用哪個條件來分可以分得更清楚一些。確定了最好的分類條件,就把數(shù)據(jù)分開成若干子集,對每個子集再計算最佳分類條件,以此類推,直到子集只包含一個結(jié)果或者達(dá)到某些終止條件。
dt算法有兩個有意思的地方。一是如何計算應(yīng)用某個條件得到的分類結(jié)果的混合度。書里面給了一個簡單的計數(shù)算法和一個熵算法(好親切啊)。
p(i)=frequency(outcome)=count(outcome)/count(total rows)
Entropy=sum of p(i)*log(p(i) for all outcomes
進(jìn)一步計算information gain:
weight1 = size of subset1 / size of original set
weight2 = size of subset2 / size of original set
gain = entropy(original) – weight1*entropy(set1) – weight2*entropy(set2)
另外一個有意思的地方是對不同類型的條件數(shù)據(jù)如何選擇分類點。對于是否問題這個比較容易解決,但是對于數(shù)值或者字符串或者更復(fù)雜的類型就要特殊情況特殊處理了。
優(yōu)點:
結(jié)果簡潔直觀
可以處理不同的條件數(shù)據(jù)類型
缺點:
不能通過增量訓(xùn)練來改進(jìn),生成決策樹必須使用整個已知樣本集。
大數(shù)據(jù)集可能存在的眾多條件會產(chǎn)生巨大繁雜的決策樹,分類計算會變得緩慢。
轉(zhuǎn)載于:https://www.cnblogs.com/ysjxw/archive/2008/04/11/1148887.html
總結(jié)
以上是生活随笔為你收集整理的An Algorithm Summary of Programming Collective Intelligence (1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 去医院去痣多少钱啊?
- 下一篇: 知识的殿堂??!