在wikipedia的決策樹詞條中,有如下概念:
統計學,資料探勘和機器學習中的決策樹訓練,使用決策樹作為**模型來**樣本的類標。這種決策樹也稱作分類樹或回歸樹。在這些樹的結構裡, 葉子節點給出類標而內部節點代表某個屬性。我們前面已經介紹過分類和回歸這兩個機器學習中的基本概念。而分類樹和回歸樹,即分別是解決這兩種問題的重要演算法之一。在資料探勘中決策樹訓練是乙個常用的方法。目標是建立乙個模型來**樣本的目標值。
那麼,什麼是決策樹?
決策樹(decision tree)是乙個樹結構(可以是二叉樹或非二叉樹)。其每個非葉節點表示乙個特徵屬性上的測試,每個分支代表這個特徵屬性在某個值域上的輸出,而每個葉節點存放乙個類別。(以上摘自 )使用決策樹進行決策的過程就是從根節點開始,測試待分類項中相應的特徵屬性,並按照其值選擇輸出分支,直到到達葉子節點,將葉子節點存放的類別作為決策結果。
總結來說,決策樹模型核心是下面幾部分:
也就是說,我們通過從一棵決策樹的根結點出發,根據情況逐級向下遍歷,直到葉子結點,即得到了所需要的分類或回歸結果。
這個過程模擬了人的決策過程,即逐個因素序列考慮,符合人類的思維模式,因而其原理相比於其他機器學習演算法更容易理解。
對於任何一種資料結構和演算法,我們都有必要明確其優點和缺點所在,從而在合適的場合下選用。
只需很少的資料準備,其他技術往往需要資料歸一化。
既可以處理數值型資料也可以處理類別型資料。其他技術往往只能處理一種資料型別。例如關聯規則只能處理類別型的而神經網路只能處理數值型的資料。
使用白箱模型. 輸出結果容易通過模型的結構來解釋。而神經網路是黑箱模型,很難解釋輸出的結果。
可以通過測試集來驗證模型的效能 。可以考慮模型的穩定性。
強健控制,對雜訊處理有好的強健性。
可以很好的處理大規模資料。
決策樹的構造通常有三個步驟:
決策樹學習的演算法通常是乙個遞迴地選擇最優特徵,並根據該特徵對訓練資料進行分割,使得對各個子資料集有乙個最好的分類的過程。這一過程對應著對特徵空間的劃分,也對應著決策樹的構建。
這一過程對應著對特徵空間的劃分,也對應著決策樹的構建。
cart演算法:classification and regression tree。顧名思義,cart演算法既可以用於建立分類樹(classification tree),也可以用於建立回歸樹(regression tree)、模型樹(model tree),兩者在建樹的過程稍有差異。既可以解決分類問題,也可以解決回歸問題。根據某乙個維度d和某乙個閾值v進行二分,得到的決策樹是二叉樹。
演算法從根節點開始,用訓練集遞迴建立cart分類樹。
input : 訓練集d,基尼係數的閾值,樣本個數閾值。
output: 決策樹t。
1. 對於當前節點的資料集為d,如果樣本個數小於閾值或沒有特徵,則返回決策子樹,當前節點停止遞迴。
2. 計算樣本集d的基尼係數,如果基尼係數小於閾值,則返回決策樹子樹,當前節點停止遞迴。
3. 計算當前節點現有的各個特徵的各個特徵值對資料集d的基尼係數。
4. 在計算出來的各個特徵的各個特徵值對資料集d的基尼係數中,選擇基尼係數最小的特徵a和對應的特徵值a。根據這個最優特徵和最優特徵值,把資料集劃分成兩部分d1和d2,同時建立當前節點的左右節點,做節點的資料集d為d1,右節點的資料集d為d2。
5. 對左右的子節點遞迴的呼叫1-4步,生成決策樹。
當資料擁有眾多特徵並且特徵之間關係十分複雜時,構建全域性模型的想法就顯得太難了,也略顯笨拙。而且,實際生活中很多問題都是非線性的,不可能使用全域性線性模型來擬合任何資料。一種可行的方法是將資料集切分成很多份易建模的資料,然後利用線性回歸技術來建模。如果首次切分後仍然難以擬合線性模型就繼續切分。在這種切分方式下,樹結構和回歸法就相當有用。呼叫**如下:回歸樹的目標是連續資料,樹被用來**目標變數的值是多少。
cart回歸樹和cart分類樹的建立類似,區別在於樣本的輸出,如果樣本輸出是離散值,這是分類樹;樣本輸出是連續值,這是回歸樹。分類樹的輸出是樣本的類別,回歸樹的輸出是乙個實數。
對於決策樹建立後做**的方式,cart分類樹採用該葉子節點裡概率最大的類別作為當前節點的**類別。回歸樹輸出不是類別,採用葉子節點的均值或者中位數來**輸出結果。
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.model_selection import train_test_split
boston = datasets.load_boston()
x = boston.data
y = boston.target
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=666)
from sklearn.tree import decisiontreeregressor
dt_reg = decisiontreeregressor()
dt_reg.fit(x_train, y_train)
dt_reg.score(x_test, y_test)
機器學習 機器學習實戰 決策樹
缺點 可能會產生過度匹配問題 適用資料型別 數值型和標稱型 收集資料 可以使用任何方法 準備資料 樹構造演算法只適用於標稱型資料,因此數值型資料必須離散化 分析資料 可以使用任何方法,構造樹完成之後,我們應該檢查圖形是否符合預期 訓練演算法 構造樹的資料結構 測試演算法 使用經驗樹計算錯誤率。使用演...
機器學習 決策樹
一 基本概念 決策樹 decision tree 是一種基本的分類與回歸方法。決策樹模型呈樹形結構,在分類問題中,表示屬於特徵對例項進行分類的過程,它可以認為是if then規則的集合,也可以認為是電議在特徵空間與類空空上的條件概率分布,其主要優點是模型具有可讀性,分類速度快。決策樹的學習通常包括3...
機器學習 決策樹
我覺得決策樹是機器學習所有演算法中最可愛的了 沒有那麼多複雜的數學公式哈哈 下圖是一棵決策樹,用來判斷西瓜是好瓜還是壞瓜 決策過程中提出的每個判定問題都是都對某個屬性的測試,每個測試結果要麼推導出最終結論,要麼匯出進一步判斷的問題,在上次決策結果限定的範圍內做進一步判斷。從上圖可以看出,葉節點對應決...