1. 常用分类方法
任务:根据用户的学习动力、能力提升意愿、兴趣度、空余时间,判断其是否适合学习本门课程。
如图所示常用的分类方法:
接下来重点介绍用决策树实现分类。
在逻辑回归中,我们根据不同特征数据求出逻辑方程的决策边界,从而实现分类任务。
而决策树是一种对实例进行分类的树形结构,通过多层判断区分目标所属类别,本质上是通过多层判断,从训练数据集中归纳出一组分类规则。
优点:
- 计算量小,运算速度快
- 易于理解,可清晰查看各属性的重要性
缺点:
- 忽略属性间的相关性
- 样本类别分布不均匀时,容易影响模型表现
2. 决策树求解
(1)案例分析
对于给定的数据集,我们如何构造决策树模型是关键。核心是特征选择,即每一个节点,应选用哪个特征。
举例
图中有四个特征(动力、能力提升、兴趣度、时间),两个类别(是、否),构造决策树模型。
(2)求解原理
求解方法:ID3算法
它的核心是利用信息熵原理选择信息增益最大的属性作为分类属性,递归地拓展决策树的分枝,完成决策树的构造。
那么什么是信息熵?
信息熵是度量随机变量不确定性的指标,熵越大,变量的不确定性就越大。
Ent(D)的值越小,变量的不确定性越小。
根据信息熵,可以计算以属性a进行样本划分带来的增益:
目标:划分后样本分布不确定性尽可能小,即划分后信息熵小,信息增益大。
(3)画出决策树模型
所以只要根据上述公式计算各个特征的信息增益值,优先选择最大的做节点。如图所示兴趣特征的信息增益值最大。
由此画出决策树模型:
3. 代码实现
上述案例及分析帮助大家更好的了解决策树模型是如何构造的。接下来用代码实现。
Iris鸢尾花数据集是一个经典数据集,在统计学习和机器学习领域都经常被用作示例。本例中只给出了部分数据集,帮助大家理解。
#模型训练
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='Ture',
feature_names=['SepalLength','SepalWidth','PetalLength','PetalWidth'],
class_names=['setosa','versicolor','virginica'])
诸如很多模型,在弄清楚原理之后代码也是很容易理解了,在计算机中底层都对算法封装好了,只需几行代码就可以。