從零基礎開始參加了幾場資料探勘方面的比賽,每次比賽都會學到不少東西,自從上次在elo
的 kernel 中看見很多人都使用lightgbm、xgboost
,那之後我也開始用起了這些,但是卻從未花時間去了解過這是究竟是什麼,其內部工作原理是怎麼樣的,正好這段時間在參加df平台
的消費者人群畫像—信用智慧型評分
這一比賽,做起了調參,但因為對其內部並不是很收悉,便準備好好學習有關樹模型方面的內容,並寫下這系列的部落格。這裡將從最基礎的決策樹開始講起。
決策樹(decision tree)是一類常見的機器學習方法。類似於流程圖,一顆決策樹包含乙個根節點、若干個內部節點和葉子節點,每乙個樹節點表示對乙個特徵或屬性的測試,每乙個分支代表乙個屬性的輸出,每乙個葉子節點對應一種決策結果。從根節點到每個葉節點的路徑對應了乙個判定測試序列。其學習的基本流程遵循分治(divide-and-conquer)策略。
輸入:訓練集\(d=\\)
屬性集\(a=\\\\)
過程:函式\(treegenerate(d,a)\)
\(1:生成節點 node;\)
\(2:if\) $ d $ $ 中樣本全屬於同一類別$ $ c$ $ then$
\(3:\quad將\) $ node$ \(標 記為\) $ c$ $ 類葉節點;$ $ return$
\(4:end\) $ if$
\(5:if\) $ a=\emptyset $ $ or$ $ d$ $ 中樣本在a上取值相同$ $ then $
\(6:\quad 將node標記為葉節點,其類別標記為d中樣本數最多的類;then\)
\(7:end\)
\(if\)
\(8:從a中選擇最優劃分屬性\)
$9:for $ $ a_* $ \(的每乙個值\) $ a_^$ $ do$
\(10:\quad 為node生成乙個分支;令d_v表示d中在a_*上取值為a_^ 的樣本子集:\)
$11:\quad if $ \(d_v\)
\(為空\)
\(then\)
\(12:\quad\quad將分支節點標記為葉節點,其類別標記為d中樣本最多的類;return\)
\(13:\quad else\)
\(14:\quad\quad以treegenerate(d_v,a\) \ \(\)為分支節點\)
\(15:\quad end\)
\(if\)
\(16:end\)
\(for\)
輸出:以\(node\)為節點的一顆決策樹
從上面的演算法中可以看出,最重要的一步就是第8行選取最優劃分,但我們該如何選取最優劃分呢?這裡就涉及到了資訊增益的概念。在講解資訊增益前,先來了解了解資訊熵和條件熵。
資訊熵
(information entropy)是度量樣本集合純度最常用的一種指標,它可以衡量乙個隨機變數出現的期望值。如果資訊的不確定性越大,熵的值也就越大,出現的各種情況也就越多。
假設當前樣本集合\(d\)中第\(k\)類樣本所佔比例為\(p_k(k=1,2,\cdots,|n|)\),則\(d\)的資訊熵為:
\[ent(d)=-\sum_^p_k\log_2p_k \tag
\]定義:\(0log0 = 0\)
條件熵
(conditional entropy)表示在已知隨機變數x的條件下隨機變數y的不確定性。定義隨機變數x給定的條件下隨機變數y的概率分布的熵:
\[ent(y|x)=\sum_^p_kh(y|x=x_k) \tag
\]假定離散屬性(特徵)a有v個可能取值\(\\),若使用a來對樣本集d進行劃分,則會產生v個分支節點,其中第\(v\)個分支節點包含了\(d\)中所有在屬性(特徵)a上取值為\(a^v\)的樣本,記作\(d^v\)。那麼,特徵\(a^v\)的條件概率分布為 \(\frac\),我們可得資訊增益
(information gain):
\[gain(d,a)=ent(d)-ent(d|a) \tag \\
=ent(d)-\sum_^\fracent(d^v)
\]由上式可知,資訊增益是相對於特徵而言的,定義為集合\(d\)的資訊熵與特徵\(a\)下\(d\)的條件熵之差。
這裡回到一開始的問題,如何選擇最優劃分?方法是對訓練資料集\(d\),計算其每個特徵的資訊增益,並比較它們的大小,選擇資訊增益最大的特徵。
然而,有時存在這麼乙個問題,以資訊增益作為劃分訓練資料集的特徵,存在偏向於選擇取值較多的特徵的問題。對這一問題的解決方法是使用資訊增益比
(information gain ratio):
特徵a對訓練資料集d的資訊增益比\(g_r(d,a)\)定義為其資訊增益\(g(d,a)\)與訓練資料集d關於a的值的熵\(h_a(d)\)之比,即
\[g_r(d,a)=\frac \tag
\]其中,\(h_a(d)=-\sum_^n\fraclog_2\frac\),n是特徵a取值的個數。
這篇文章中介紹了決策樹的一些基本理論,對於決策樹的優化以及id3、c4.5、cart的**實現將在後面的文章中給出。
機器學習 決策樹
一 基本概念 決策樹 decision tree 是一種基本的分類與回歸方法。決策樹模型呈樹形結構,在分類問題中,表示屬於特徵對例項進行分類的過程,它可以認為是if then規則的集合,也可以認為是電議在特徵空間與類空空上的條件概率分布,其主要優點是模型具有可讀性,分類速度快。決策樹的學習通常包括3...
機器學習 決策樹
我覺得決策樹是機器學習所有演算法中最可愛的了 沒有那麼多複雜的數學公式哈哈 下圖是一棵決策樹,用來判斷西瓜是好瓜還是壞瓜 決策過程中提出的每個判定問題都是都對某個屬性的測試,每個測試結果要麼推導出最終結論,要麼匯出進一步判斷的問題,在上次決策結果限定的範圍內做進一步判斷。從上圖可以看出,葉節點對應決...
機器學習 決策樹
一 演算法簡介 決策樹一般都是自上而下來生成的,每個決策後事件 即自然狀態 都可能引出兩個或多個事件,導致結果的不同,把這種結構分支畫成形狀很像一棵樹的枝幹,故稱為決策樹。決策樹能夠讀取資料集合,並且決策樹很多任務都是為了資料中所蘊含的知識資訊,因此決策樹可以使用不熟悉的資料集合,並從中提取一系列規...