信息熵:信息熵是度量样本集合纯度常用的一种指标。
联合熵:联合熵就是度量一个联合分布的随机系统的不确定度。
条件熵:在得知某一确定信息的基础上获取另外一个信息时所获得的信息量。
信息增益:信息增益代表使用属性a带来的纯度提升,信息增益越大,带来的纯度提升越大。计算公式就是父节点的信息熵减去所有子节点的信息熵。
基尼不纯度:从一个数据集中随机选取子项,度量其被错误的划分到其他组里的概率。
决策树生成的过程就是将数据集不断划分成为纯度更高,不确定更小的子集的过程。
ID3算法:ID3的算法计算的是信息增益,缺点是喜欢选择选项多的特征
C4.5算法:在ID3的基础熵增加信息增益率,采用了悲观剪枝,采用了离散化处理连续属性,处理缺失值
CART:采用基尼系数划分数据,同时决定改特征的最优二值切分点,可针对离散和连续型,可以做分类和回归。
建立回归树大致步骤: 将预测变量空间 ( X 1 , X 2 , . . . , X p ) (X_1,X_2,...,X_p) (X1,X2,...,Xp)的可能取值分为n个互不重叠的区域 ( R 1 , R 2 , . . . , R n ) (R_1,R_2,...,R_n) (R1,R2,...,Rn),再对每个区域R_n取算数平均作为该区域的预测值。然后求各分法的损失函数,取其最小的分法作为最优分法。
损失函数定义为
其中 c n c_n cn是各区域的均值。
重复分割步骤(递归二分),使L
L尽可能减小,直到达到某个阈值即停止分割。
分类树模型:采用通用的分类模型评估指标
Accuracy
Precision
Recall
F1-score
ROC曲线和AUC
PR曲线
回归树模型:采用通用的回归模型评估指标
MSE
MAE
R^2
tree.DecisionTreeClassifier(class_weight=None, #balanced & None 可选
criterion=‘gini’,#“gini"或者"entropy”,前者代表基尼系数,后者代表信息增益。
max_depth=None,max_depth控制树的深度防止overfitting
max_features=None, #可使用多种类型值,默认是"None",划分时考虑所有的特征数;
“log2” 划分时最多考虑log2Nlog2N个特征;
“sqrt"或者"auto” 划分时最多考虑√N个特征。
整数,代表考虑的特征绝对数。
浮点数,代表考虑特征百分比,即考虑(百分比xN)取整后的特征数。
其中N为样本总特征数。
max_leaf_nodes=None,最大叶节点树
min_impurity_split=1e-07, 限制决策树的增长,
如果某节点的不纯度(基尼系数,信息增益)小于这个阈值,则该节点不再生成子节点,即为叶子节点。
min_samples_leaf=1,min_samples_split=2,#min_samples_split或min_samples_leaf来控制叶节点上的样本数量;
两者之间的主要区别在于min_samples_leaf保证了叶片中最小的样本数量,而min_samples_split可以创建任意的小叶子。但min_samples_split在文献中更常见。
min_weight_fraction_leaf=0.0,#限制叶子节点所有样本权重和的最小值。如果小于这个值,则会和兄弟节点一起被剪枝。
一般来说,如果我们有较多样本有缺失值,或者分类树样本的分布类别偏差很大,
就会引入样本权重,这时我们就要注意这个值了。
presort=False
,布尔值,默认是False
不排序。预排序,提高效率。
设置为true可以让划分点选择更加快,决策树建立的更加快。
random_state=None
, #随机生成器种子设置,默认设置为None,如此,则每次模型结果都会有所不同。
splitter=‘best’)#split"best"
或者"random"。
前者在特征的所有划分点中找出最优的划分点。
后者是随机的在部分划分点中找局部最优的划分点。
默认的"best"适合样本量不大的时候,而如果样本数据量非常大,此时决策树构建推荐"random"。