一,決策樹:
簡介:
????????決策樹是一種通過構建類似樹狀的結構(顛倒的樹),從根節點開始逐步對數據進行劃分,最終在葉子節點做出預測結果的模型。
結構組成:
????????根節點:初始的數據集全集,沒有經過任何劃分(最頂層的部分)
????????內部節點:代表對某個特征的測試,根據特征值將數據劃分為子節點(中間部分)
????????葉子節點:代表最終的分類結果或回歸值(最底層的部分)
學習過程:
????????①選擇根節點:找到一個明顯的特征,能將數據最純凈地分為兩組
????????②遞歸:對每個子節點重復上述操作,直到所有樣本都同屬于一類(完全純凈) or 沒有更多的特征可用 or 達到的預設的樹的深度(防止過擬合)
測量分類純度(以區分貓狗為例):
????????①信息熵:
????????熵(H)的函數圖像如上圖所示,當區分后的樣本全為貓或狗時,熵為0;當樣本中貓和狗的比例越接近于1時,熵越大。
????????熵的函數:
????????
????????Pi是數據集中第i類樣本的比例
????????當所有樣本屬于同一類時(完全純凈),熵為0;當樣本類別均勻分布時,熵最大。
????????②基尼指數:
????????????????基尼指數衡量隨機抽取的兩個樣本類別不一致的概率,數值越小純度越高
????????????????公式:
????????????????
????????????????當數據集完全純凈時,基尼指數為0;當數據集類別分布均勻時,基尼指數為0.5
????????③分類誤差:
????????????????分類誤差表示使用多數類作為標簽時誤分類的概率
????????????????公式:
????????????????????????????????
????????????????完全純凈時誤差為0,二分類均勻分布時誤差為0.5
????????三者比較:
????????計算效率:基尼指數=分類誤差>信息熵
????????敏感度:信息熵>基尼指數>分類誤差
三者在決策樹中的應用:
????????信息增益(熵):通過父節點減去子節點熵的加權平均值來選擇增益最大的特征
????????基尼指數:類似信息增益,選擇使基尼指數下降最多的分割
信息增益的實現:? ? ?
????????信息增益:在構建決策樹過程中,使用某個特征對數據集實現分割后,學習熵的減少程度。
????????核心:選擇使信息增益最大的特征進行分割(即使學習熵減少程度最大),最大程度上純化子節點
實現步驟:
????????①計算父節點的熵:
????????②按照特征分割,計算子節點的熵
????????③計算加權子節點的熵
????????④計算信息增益
舉例:?
????????假設父節點中有10個樣本,6個屬于A類,4個屬于B類
????????①計算父節點的熵:代入信息熵的公式得到父節點的熵為0.971
????????②按特征分割數據,計算子節點的熵:用特征將這10個樣本分為兩個子節點,每個子節點有5個樣本,分別計算兩個子節點的熵。
????????????????????????????????子節點1(4A1B):熵為0.722
????????????????????????????????子節點2(2A3B):熵為0.971
????????③計算加權子節點熵:
????????????????加權熵=(5/10)*子節點1熵+(5/10)*子節點2熵=0.8465
????????④計算信息增益:
???????????????信息增益=父節點熵-加權子節點熵=0.1245
構建決策樹:
①數據準備和預處理:
????????????????從決策樹的根結點開始,對數據進行數據清洗和特征處理或標簽編碼
②分割:
?????????????????通過選擇該特征后提供的最高信息增益的特性進行分割
③創建樹的分支:
????????????????根據所選特性將數據集拆分成兩個子集,并創建樹的分支,后將數據集劃分給分支
④遞歸:
????????????????對每個子節點重復上述操作,直到滿足停止條件
停止條件:
- 節點純度達標
- 達到預設的最大樹深
- 繼續分割的信息增益低于閾值(無顯著信息增益)
- 子節點的樣本數小于閾值(樣本數過少)
One-Hot編碼:
????????One-Hot編碼是將包含K個類別的離散特征轉換為K個二元特征,常用在構建決策樹時,處理多類別特征。
????????舉例:原始特征“顏色”包含三個類別:紅,藍,綠
??????????????????經過One-Hot編碼后生成三個新特征:是不是紅色,是不是藍色,是不是綠色
????????優點:可以將多類別特征轉換為二元特征,每個特征僅對應一個類別,模型可以更靈活的選擇分割點;可以避免算法對多取值特征的偏好
????????缺點:
? ? ? ? ????????????????1.增加特征數量,增加計算負擔
? ? ? ? ? ? ? ? ? ? ? ? 2.降低單個特征的重要性,使得信息分散
? ? ? ? ? ? ? ? ? ? ? ? 3.過擬合風險
拆分連續值的決策樹分支:
????????連續值的分割目標是找到某個閾值,將數據集分為兩個子集,使得分割后的子集純度最高。
實現步驟:
- 排序連續特征值
- 根據排完序的特征值點生成候選分割點
- 計算每個分割點之間的純度
- 對比執行后分割
二,回歸樹模型:
????????回歸樹是一種用來預測連續數值的決策樹模型,如用來預測房價,溫度......。與分類樹不同,分類樹預測的是類別,而回歸樹預測的是連續的數值。
????????實現原理:
????????????????從根節點到葉節點,分而治之,將數據集劃分為多個小區域,每個區域內的樣本數盡可能相似,直到每個小區域足夠純凈
????????拆分步驟:
????????????????????????①遍歷所有特征
????????????????????????②遍歷每個特征的所有可能分割點:
????????????????????????若為連續特征:嘗試相鄰值的中間點;若為離散特征,嘗試每個類別
????????????????????????③選擇最優分割點
????????衡量指標:均方誤差(EMS)
????????????????均方誤差是衡量一個區域內樣本的數值差異的程度,均方誤差越小,該區域內樣本越相似。
????????通過計算分割后的左右子區域的均方誤差和,選擇使總均方誤差和最小的分割方式。
????????回歸樹的構建流程:
????????????????從根節點開始,遍歷所有特征---> 遍歷分割點,選擇使總均方誤差最小的分割方式--->生成子節點,按分割條件將數據分為左右兩個部分 ---> 遞歸處理子節點,重復上述步驟 ---> 達到停止條件(回歸樹達到預測樹深||區域內樣本數過少||均方誤差下降不明顯)
????????代碼實現及運行結果:
from sklearn.tree import DecisionTreeRegressor
import pandas as pd# 示例數據:房屋面積(㎡)和價格(萬元)
data = pd.DataFrame({'面積': [80, 120, 100, 90, 150],'價格': [300, 450, 400, 350, 500]
})# 訓練回歸樹模型
model = DecisionTreeRegressor(max_depth=2) # 限制樹深度為2
model.fit(data[['面積']], data['價格'])# 預測新樣本
new_house = pd.DataFrame({'面積': [110]})
predicted_price = model.predict(new_house)
print(f"預測價格:{predicted_price[0]:.1f}萬元") # 輸出:預測價格:425.0萬元
????????決策樹模型中的放回抽樣:
????????????????從原始的數據集中有放回地隨機抽取樣本的方法,每次抽取時,每個樣本被選中的概率相同,而且可能被重復選中。每個訓練子集的樣本數與原始數據集相同
三,隨機森林算法:
????????隨機森林算法是一種通過組合多個決策樹的算法(集成樹)。
????????集成方法:
????????????????①Bagging:通過自助采樣,從原始數據集中生成多個子集,每個子集訓練一棵決策樹
????????????????②隨機特征選擇:每棵樹節點分裂時,隨機選擇部分特征作為候選,降低樹之間的相關性,防止過擬合
????????訓練過程:
- 有放回地抽樣,從原始數據集中隨機抽取N個樣本作為訓練集
- 用未參與訓練的樣本驗證模型,無需額外的驗證集
- 特征抽樣:每個節點分裂時,從全部特征中隨機選取子集
- 每棵樹生長到最大深度||葉子節點純度達標時停止
四,XGBoost:(類似貪心算法)?
????????XGBoost是一種基于梯度提升樹的集成算法,通過加法模型和前向分布算法逐步優化目標函數。每次訓練后,把側重點放在先前訓練過但擬合效果不好的決策樹上。
????????第一次循環:通過已有的訓練集開始訓練決策樹
? ? ? ? 第二-N次循環:根據前一次循環產生的決策樹的訓練效果,側重于選擇訓練不好的決策樹,來進行訓練。
????????XGBoost優點:
????????????????????????①可以選擇默認拆分標準和停止標準
????????????????????????②內置正則化防止過擬合
五,決策樹 VS 神經網絡:? ? ? ??
????????決策樹:適用于數據量小,特征明顯,訓練速度快的場景,例如分群,評分。
????????神經網絡:適用于數據量大,數據種類多樣(圖像,音頻,文件),的場景。