4. 決策樹
1. 決策樹基本資訊
- 非引數學習
- 解決分類問題
- 天然就解決多分類問題
- 也可以解決迴歸問題
- 非常好的可解釋性
2. 資訊熵
熵: 代表隨機變數不確定度的度量
熵越大:資料的不確定性越高
熵越小:資料的不確定性越低
表示式:
3. 使用資訊熵尋找最優劃分
from sklearn.tree import DecisionTreeClassifier
dt_clf = DecisionTreeClassifier(max_depth=2, criterion='entropy', random_state=2) # criterion標準使用entropy資訊熵計算,預設為基尼係數gini
dt_clf.fit(x,y)
- 資訊熵的模擬
def split(X, y, d, value): # 對資料分割
index_a = (X[:,d] <= value)
index_b = (X[:,d] > value)
return X[index_a], X[index_b], y[index_a], y[index_b]
from collections import Counter
from math import log
def entropy(y): # 求出在某點時的資訊熵
counter = Counter(y)
res = 0.0
for num in counter.values(): # 對某點左右兩邊的資料值統計,根據資訊熵公式求出
p = num / len(y)
res += -p * log(p)
return res
def try_split(X, y): # 遍歷資料集求出最小的資訊熵
best_entropy = float('inf')
best_d, best_v = -1, -1
for d in range(X.shape[1]): # 根據不同的列遍歷
sorted_index = np.argsort(X[:,d]) # 求出對某列資料的排序後的索引,按照從小到大的值的順序排列的索引
for i in range(1, len(X)): # 對當前列的所有值不改變順序的 按照順序去搜尋出最小的資訊熵
if X[sorted_index[i], d] != X[sorted_index[i-1], d]:
v = (X[sorted_index[i], d] + X[sorted_index[i-1], d])/2 #
X_l, X_r, y_l, y_r = split(X, y, d, v)
p_l, p_r = len(X_l) / len(X), len(X_r) / len(X) # 在某點左右兩側值的概率
e = p_l * entropy(y_l) + p_r * entropy(y_r) # 資訊熵
if e < best_entropy: # 如果當前資訊熵更低替換
best_entropy, best_d, best_v = e, d, v
return best_entropy, best_d, best_v
4. 基尼係數
from sklearn.tree import DecisionTreeClassifier
dt_clf = DecisionTreeClassifier(max_depth=2, criterion="gini", random_state=42) # 預設為gini,設定通過critertion標準為gini基尼係數
dt_clf.fit(X, y)
- 資訊熵的計算比基尼係數稍慢,sklearn預設為基尼係數,大多數時候兩者效果差不多
5. CART 與決策樹中的超引數
- 複雜度:預測:O( logm ), 訓練:O( n * m * logm )
- 通過剪枝降低複雜度,解決過擬合:
max_depth = 2
,min_sample_split = 10
,max_leaf_nodes = 4
…
6. 決策樹的迴歸問題解決
from sklearn.tree import DecisionTreeRegressor
dtr_clf = DecisionTreeRegressor(max_depth=4, max_features=11, )
dtr_clf.fit(x_train, y_train)
dtr_clf.score(x_test, y_test)
7. 決策樹的侷限性
- 分割線橫平豎直,無法斜向表示、
- 對個別資料非常的敏感
相關文章
- 決策樹
- 決策樹模型(3)決策樹的生成與剪枝模型
- 決策樹示例
- Decision tree——決策樹
- 決策樹(Decision Tree)
- Python機器學習:決策樹001什麼是決策樹Python機器學習
- 分類——決策樹模型模型
- 決策樹演算法演算法
- ML《決策樹(三)CART》
- 關於決策樹的理解
- 機器學習:決策樹機器學習
- 決策樹和隨機森林隨機森林
- 決策樹學習總結
- 機器學習——決策樹模型機器學習模型
- 大資料————決策樹(decision tree)大資料
- 機器學習之決策樹機器學習
- 決策樹模型(2)特徵選擇模型特徵
- ML《決策樹(一)ID3》
- ML《決策樹(二)C4.5》
- 【Python機器學習實戰】決策樹和整合學習(二)——決策樹的實現Python機器學習
- 決策樹模型(4)Cart演算法模型演算法
- 決策樹模型(1)總體介紹模型
- 決策樹演算法-實戰篇演算法
- 決策樹詳解,從熵說起熵
- 決策樹演算法-理論篇演算法
- 【西瓜書筆記】3. 決策樹筆記
- ML《決策樹(四)Bagging 和 Random Forest》randomREST
- 02決策樹-初識與構建
- 深入淺出學習決策樹(二)
- 決策樹在sklearn中的實現
- 深入淺出學習決策樹(一)
- 分類演算法-決策樹 Decision Tree演算法
- 機器學習筆記(四)決策樹機器學習筆記
- 機器學習|決策樹-sklearn實現機器學習
- 機器學習Sklearn系列:(三)決策樹機器學習
- 01 決策樹 - 數學理論概述 - 熵熵
- 淺談樹模型與整合學習-從決策樹到GBDT模型
- 使用 SVM 和決策樹進行整合學習