機器學習理解(一)

Spark這部分寫完了,忽然發現自己沒什麼可寫的了。。。還是把機器學習這部分寫下,雖然有關機器學習的博客有很多,而且有的博客寫的真的很好,但還是想將自己在學習機器學習時的一個理解記錄下來,可能存在許多不足,因此如果有了新的理解,我會進行更新,當然,更加希望的是能借助之後在工作中的一些經驗來逐步完善這方面的知識。。
1.分類決策樹---有監督學習
分類決策樹是一棵自上而下的樹,用來進行預測,分支節點包括根節點是數據集的各個屬性,屬性有幾個取值則節點就有幾個分支,葉子節點則爲分類結果,從根節點到葉子節點所走的路徑即爲一條規則,對新數據集的預測則是根據這棵樹而來,常用的建樹算法有ID3(Iterative Dichotomiser 3 迭代二叉樹3代)和C4.5
ID3算法的基本思想:選取信息增益最大的屬性作爲根節點,如屬性A,屬性A有幾個取值,就有幾個分支,接着再選取其餘屬性作爲各個分支下的子樹的根節點,根節點的選取都是根據信息增益最大來取,信息增益又是根據信息熵來求的(PS:熵就是系統有序化的度量,或者可以認爲熵=無序化,熵越大,無序化程度越高,有序化程度越低,即不穩定程度越大,或者更誇大一點就可以理解爲不知道去哪個值),具體求法如下:

       
        1.求出系統熵;
        2.單獨求出屬性各個取值的信息熵;
        3.加權上一步求得的屬性的各個取值的信息熵作爲屬性的信息熵;
        4.求得信息增益:系統熵-屬性的信息熵;
        5.信息增益最大的作爲根節點;
        6.重複步驟2,直至所有屬性的信息熵爲0;
優點:原理比較簡單,易於理解;
缺點:用信息增益選擇屬性作爲樹或者子樹的根節點時偏向於選擇分支比較多的屬性,即取值多的屬性;需要重複掃描數據庫,效率不高;
C4.5是對ID3算法的改進,它是選取信息增益率最大的屬性作爲樹或者子樹的根節點,解決了ID3中偏向於選擇分支比較多的屬性作爲根節點的缺點,同時C4.5在處理屬性爲連續值的情況下比ID3更加有效率,C4.5也是將連續值轉換爲離散值,它先將屬性的取值進行排序,在結果發生改變的取值處進行劃分,這樣就會形成多個取值段,這些取值段就爲屬性的離散取值
PS:互信息=I(X,Y)=entropy(X)+entropy(Y)-entropy(X,Y)

信息增益率=信息增益/分裂度    
比如屬性A有A1,A2,A3三個取值,屬性A有7個樣例,其中A1有2個樣例,A2有2個樣例,A3有3個樣例,則分裂度=-(2/7log2/7)-(2/7log2/7)-(3/7log3/7)

參考博客:http://www.cnblogs.com/zhangchaoyang/articles/2196631.html
                  http://www.cnblogs.com/zhangchaoyang/articles/2842490.html
CART分類迴歸樹:實質上也是一棵決策樹,不過不同的是它是一棵二叉樹,同時非葉子節點多有兩個孩子,因此對於某屬性有多個取值時,我們要對這些屬性值進行處理,如某屬性A有B1,B2,B3三個屬性,那就按照B1和非B1,B2和非B2,B3和非B3進行劃分,分別求得各個情況下的GINI指數值,選取GINI指數值最小的作爲分類情況,其餘的大致上和決策樹類似
2.樸素貝葉斯分類器---有監督學習
樸素貝葉斯分類器的基本原理是利用貝葉斯公式,即條件概率的公式:,求得給定條件下,其所屬各個分類的概率,哪個分類下的概率最大,則其就爲哪個分類,如事件所給定的條件爲B1,B2,B3,分類爲A1,A2,則該事件的分類結果可以通過如下公式求得:

因爲P(B)都一樣,因此只需比較分母的大小即可

,則該事件屬於分類A2,否則屬於分類A1
若某屬性的取值中出現了零頻問題,可以通過數據平滑的方法來解決,最簡單的就爲拉普拉斯估計--即爲每個計數加1;
若某屬性爲連續取值,則一可以將其像決策樹那樣轉換爲離散取值,二可以通過計算該分類下給定的相應屬性取值的概率密度函數作爲其概率;

優點:思路比較簡單,有效;
缺點:樸素貝葉斯分類器假設屬性之間是相互獨立的,當屬性之間不獨立的時候結果可能就會產生誤差
參考博客:http://www.cnblogs.com/zhangchaoyang/articles/2586402.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章