R語言:
R語言可以使用rpart包實現決策樹
fit3 <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis,control = rpart.control(cp = 0.05))
其中參數control 可以自己設置,也可以使用默認參數:
rpart.control(minsplit = 20, minbucket = round(minsplit/3), cp = 0.01,maxcompete = 4, maxsurrogate = 5, usesurrogate = 2, xval = 10,surrogatestyle = 0, maxdepth = 30, ...)
其中參數cp 表示模型複雜度的參數,如果任何劃分無法減小提高決策樹的損失函數(預測誤差+cp*模型複雜度),那麼該劃分不會被採用,所以rpart默認參數下一般不會產生完全擬合的樹(完全擬合的樹會用上所有可能的切分點,模型複雜度較高,導致損失函數值較大);
Python:Python庫sklearn.tree.DecisionTreeRegressor 中的參數:
class sklearn.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, presort=False)
其中參數min_impurity_decrease 默認為0,而我們知道隨著模型複雜度提高,預測誤差(即不純度)會越來越小,所以默認參數下算法會產生完全擬合的樹。