机器学习之决策树
决策树的定义
决策树:
一种对实例进行分类的树形结构,通过多层判断区分目标所属类别
本质:通过多层判断,从训练数据集中归纳出一组分类规则
优点:
- 计算量小,运算速度快
- 易于理解,可清晰查看各属性的重要性
缺点:
- 忽略属性间的相关性
- 样本类别分布不均匀时,容易影响模型表现
信息熵
信息熵(entropy):
是度量随机变量不确定性地指标,熵越大,变量地不确定性就越大。假定当前样本集合D中第k类样本所占的比例为pk,则D的信息熵为:
目标:
划分后样本分布不确定性尽可能小,即划分后信息熵小,信息增益大
决策树求解
假设给定训练数据集
D = {(x₁,y₁),(x₂,y₂),…,(xN,yN)}
其中,xi =(xi(1),xi(2),…,xi(m))T为输入实例,m为特征个数,
yi ε{1,2,3,…,K}为类标记,i = 1,2,…,N,N为样本容量。
目标:
根据训练数据集构建一个决策树模型,使它能够对实例进行正确的分类。
问题核心:
特征选择,每一个节点,应该选用哪一个特征。
三种求解方法:ID3、C4.5、CART
ID3:利用信息熵原理选择信息增益
最大的属性作为分类属性
,递归地拓展决策树地分枝,完成决策树地构造
决策树与逻辑回归对比
代码实现
#模型训练
from sklearn import tree
dc_tree = tree.DecisionTreeClassifier(
criterion = 'entropy', min_samples_leaf = 5)
dc_tree.fit(X,y)
)
# 可视化决策树:
tree.plot_tree(dc_tree,filled = 'True'
feature_names = ['SepalLength','SepalWidth','PetalLength','PetalWidth'],
class_names = ['setosa','versicolor','virginica'])
好文可以于大家分享,请注明转载