1. 程式人生 > 其它 >機器學習sklearn(三十四):演算法例項(三)迴歸(一)決策樹迴歸(一) DecisionTreeRegressor

機器學習sklearn(三十四):演算法例項(三)迴歸(一)決策樹迴歸(一) DecisionTreeRegressor

classsklearn.tree.DecisionTreeRegressor(*,criterion='mse',splitter='best',max_depth=None,min_samples_split=2,min_samples_leaf=1,min_weight_fraction_leaf=0.0,max_features=None,random_state=None,max_leaf_nodes=None,min_impurity_decrease=0.0,min_impurity_split=None,ccp_alpha=0.0)

幾乎所有引數,屬性及介面都和分類樹一模一樣。需要注意的是,在迴歸樹種,沒有標籤分佈是否均衡的問題,因此沒有class_weight這樣的引數。

1 重要引數,屬性及介面

criterion 迴歸樹衡量分枝質量的指標,支援的標準有三種: 1)輸入"mse"使用均方誤差mean squared error(MSE),父節點和葉子節點之間的均方誤差的差額將被用來作為特徵選擇的標準,這種方法通過使用葉子節點的均值來最小化L2損失 2)輸入“friedman_mse”使用費爾德曼均方誤差,這種指標使用弗裡德曼針對潛在分枝中的問題改進後的均方誤差 3)輸入"mae"使用絕對平均誤差MAE(mean absolute error),這種指標使用葉節點的中值來最小化L1損失 屬性中最重要的依然是feature_importances_,介面依然是apply, fifit, predict, score最核心。 其中N是樣本數量,i是每一個數據樣本,fifi是模型迴歸出的數值,yi是樣本點i實際的數值標籤。所以MSE的本質,其實是樣本真實資料與迴歸結果的差異。在迴歸樹中,MSE不只是我們的分枝質量衡量指標,也是我們最常用的衡量回歸樹迴歸質量的指標,
當我們在使用交叉驗證,或者其他方式獲取迴歸樹的結果時,我們往往選擇均方誤差作為我們的評估(在分類樹中這個指標是score代表的預測準確率)。在迴歸中,我們追求的是,MSE越小越好。 然而,迴歸樹的介面score返回的是R平方,並不是MSE。R平方被定義如下:   其中u是殘差平方和(MSE * N),v是總平方和,N是樣本數量,i是每一個數據樣本,fifi是模型迴歸出的數值,yi是樣本點i實際的數值標籤。y帽是真實數值標籤的平均數。R平方可以為正為負(如果模型的殘差平方和遠遠大於模型的總平方和,模型非常糟糕,R平方就會為負),而均方誤差永遠為正。   值得一提的是,雖然均方誤差永遠為正,但是sklearn當中使用均方誤差作為評判標準時,卻是計算”負均方誤差“(neg_mean_squared_error)。
這是因為sklearn在計算模型評估指標的時候,會考慮指標本身的性質,均方誤差本身是一種誤差,所以被sklearn劃分為模型的一種損失(loss),因此在sklearn當中,都以負數表示。真正的均方誤差MSE的數值,其實就是neg_mean_squared_error去掉負號的數字。 簡單看看回歸樹是怎樣工作的