1. 程式人生 > >機器學習之決策樹演算法(1)

機器學習之決策樹演算法(1)

上一集中,我們講解了K近鄰演算法,那是一個十分入門的演算法,並沒有顯式的訓練方法。這次,我們要做一個真正的機器學習演算法,決策樹演算法。當然,它也是一個多元分類器。相比較K近鄰演算法對於數值型的資料處理較為舒服,因為畢竟是算距離,所以你就算是跑到天涯海角,也能算出來。但是決策樹對於數值型的資料處理起來還是有些吃力,最好的話能有較少的幾類標稱資料才行。

好的,閒話少說。我們進入正題,同樣的,我們繼續舉例子,我高中時候最喜歡生物了,界門綱目科屬種,等等,我記得是有9層分類,這就像我們的決策樹,那麼我們每一次分類都會有一些特徵,比如蜘蛛來說。蜘蛛是動物界,這個依據還用說麼,是節肢動物門,這個分類依據就是因為屬於這種動物的兩側對稱,異律分節,身體以及足分節,可分為頭胸腹3部分,每一體節上有一對……balabala等等,我也看不懂。然後依次往下類推了。對不對,分類上面是不是就是這麼簡單?這就使決策樹的使用,只需要把待檢測的樣本的每一個特徵依次比對,依照決策樹依次比對即可。

什麼,這就完了?這算什麼機器學習決策樹,這種我也會啊。別急,這只是進行實驗的過程,機器學習中的重點在於這個分類器的構建,也就是這個決策樹的產生。對,也就是說,機器學習,學習的是什麼,是分類方法。這種分類方法不是你告訴他的,不是我告訴他的,是他自己通過訓練樣本自己學習而來的。這麼神奇?對,這次我們講解的是一個相對簡單的決策樹演算法,ID3演算法。

ID3演算法的主要思想是,不對,先介紹一下決策樹構建的順序。決策樹構建,首先要選取第一個分類的特徵,那麼,我們選擇哪一個呢?點點豆豆,隨機選擇嗎?不,這樣的話,可能選擇出來的決策樹又長而且效率不高,這時候,就要用到ID3演算法,為的是選擇出來一個儘可能高效的分類特徵,也就是區別度最大的一個。那這個所謂的區別度最大的一個特徵,怎麼找出來,可能你說能分得最清楚的,或者是分的最詳細的等等。這些沒有辦法量化,不量化,就不能進行處理啊。於是,這時候,資訊理論可以出場了。它包含了一個描述資訊無序程度的量度,叫做資訊熵。什麼,不明白?熵原來是物理學裡的衡量能量無序程度的度量,資訊熵自然就是衡量資訊無序程度的度量。在數學上的表示是這樣的:


好吧,好像是有點大了,不過也很值得這麼大,因為它的提出是夏農,而曾經計算機界的最大的實驗室,貝爾實驗室最後分裂了,它的縮小版就是夏農實驗室。而在貝爾實驗室和MIT(麻省理工學院)有很多人將夏農和愛因斯坦相提並論,而其他人認為這種對比是不公平的,而不公平的物件不是愛因斯坦,而是夏農。當然,我們並不能講夏農和愛因斯坦誰更厲害,但是至少在計算機技術人員的眼裡,夏農所代表的成就是難以企及的。

這就是資訊熵的表示式,看起來很簡單的樣子,其中Pi所代表的是第i個資訊佔所有資訊總和的概率,而取log2則是為了單位,因為去Log2的話,單位是位元,其他的也可以。這樣,一個資訊集合的資訊熵就計算完成了。這個H的數目越大,表示了資訊的無序程度越高,而對於人的直觀反映就是個體與個體之間的差異性越大。比如也許蘋果和橘子的差距沒有蘋果和香蕉的差異大,這是因為蘋果和橘子除了都是水果外,它們還都是圓形的,這就是資訊熵的表現形式。

我們的儲備知識足夠了,現在要講ID3演算法了,它的主要思想是選擇一個特徵,通過這個特徵,可以把資訊集合的資訊熵下降的最快,也就是選擇差別度最大的一個特徵。比如我們的動物,植物,微生物,這種分類就是最大的感覺是一樣的,只不過動物界的分類是經過了成百上千年的人類經驗積累而得來的。我相信,如果我們能夠提供出足夠多的樣本資料和樣本特徵,計算機一定會構建出區分當今生物界的另外一套體系。

我們現在用的ID3演算法是最簡單的,每次選取一個特徵值來進行判別。那有人可能會問了,萬一我的種類超過了我的特徵值,這該如何區分呢。好吧,我們現在這個演算法不能夠完成你這個目標,不過後面的演算法也許可以了,請繼續關注。現在我們把它簡化了,如果最後出現特徵值用完了,但是類別還沒分清楚的話,我們就進行多數表決,讓所屬個數最多的分類來表示這個分類。這樣,就可以構建出決策樹了。

而機器學習中所謂的訓練過程,就是拿已有的資料,讓機器進行決策樹的構建,而測試過程,就是讓機器通過構建的決策樹來進行分類。這次可是急切學習了,可不要說我懶,總是用懶惰學習。

現在,我們已經介紹了2種機器學習的方法了,在機器學習中,這2種方法是較為簡單的方法,不過它已經可以做很多不可思議的事情了。比如給你足夠多的女生的照片,讓你判斷喜歡還是不喜歡,通過一陣子的訓練,機器就會知道你喜歡什麼樣的女生。比如給你足夠多的衣服,讓你去選擇買什麼樣的,通過一陣子訓練,機器就會知道你喜歡什麼樣的衣服,或者說,可以知道你最看重的是什麼,比如品牌,還是樣式還是什麼,等等。當然,以後攻克癌症啊,或者是發現人類的起源啊等等這些看似夢幻的研究,最終都會有一個答案。

我在期待,我也在努力,你在哪裡!