机器学习算法主要分为两大类:有监督学习与无监督学习。对于有监督学习,每个数据实例都需带有目标属性值,这在进行模型训练前需要投入大量时间和精力来构建含有目标属性值的数据集。
线性回归、网络和决策树都是有监督学习中的重要方法。先前已对线性回归和网络进行了详细介绍,感兴趣者可自行查阅。这两种方法更适合处理数值型输入。若数据集中的输入属性主要为标称类型,那么使用决策树模型会更加合适。
决策树以树状结构构建分类或回归模型,通过一系列判断条件,最终叶节点显示分类结果或回归值。
决策树构造中常用的算法包括ID3(信息增益)、C4.5(信息增益率)、C5.0(C4.5的改进版)、CART(基尼系数)。
不论使用何种算法和指标,构造树节点的核心思路是相同的。以某图示数据集为例,通过特定指标的计算,确定哪个属性(如年龄段、是否有工作、是否有房子、情况或是否批准)应置于哪个树节点。对于指标计算得分较低的属性,可进行剪枝处理,即不在树中显示该属性。
以C4.5算法为例,我们可以观察到其构造的决策树。而ID3算法则使用信息增益来选择属性,结合图示数据集,可构建出ID3决策树。
值得注意的是,信息增益有时会倾向于选择数据集中具有更多值的属性,因此有了C4.5算法的改进。C4.5算法采用信息增益率作为选择属性的依据。
CART算法采用基尼系数进行属性选择。基尼系数最大为1,最小等于0,越接近0表示分配越平等。在构建决策树时,我们需要选择基尼系数较低的特征。
在机器学习应用中,找到与特定数据集匹配的学习算法是真正的挑战。我们需要深入了解每种模型/算法的应用场景。
以下为几个应用案例:
案例1:【分类问题】银行系统审核人资质,采用分类模型预测是否批准。
案例2:【回归或概率问题】员工是否会离职的预测模型。
案例3:【回归问题】预测二手商品的价值,采用回归模型进行分析。
关于以上案例的完整源代码和相关数据集,可参考附带的tree.py、dataset.txt及treePlotter.py文件。