3 机器学习入门——决策树之天气预报、鸢尾花

时间:2024-04-02 14:55:33

前面我们简单学习了线性回归、逻辑回归,不知道有没有做一个总结,那就是什么时候该用逻辑回归?

从结果来观察,可以看到,线性回归的过程就是在找那个合适的方程,来尽量满足你的每行数据。即Y=ax + bx^2 + …….

通过算法来寻找合适的a、b、c。

一般来说,线性回归适用于最终结果和各属性之间有数值上的关系,能通过一系列的组合,得出一个规律。当然,实际在应用中,我们一般不管什么数据集,都先跑一遍逻辑(线性)回归就是了,它性能优异,至少我们可以将它的结果作为baseline。

在实际生活中,我们面对的当然不仅仅是由数字得出的,很多时候是通过决策得出。譬如判断一朵花属于哪个品种,我们会根据它的叶片形状、颜色等一些属于分类的属性来进行判断;还有去相亲,可能会先根据对方的年龄、学历、高富帅程度等做决策。

so,这些问题都促使了决策树的诞生。决策树是一个巨大的机器学习分支,里面有很多著名的算法如C4.5和最近一些在竞赛中大放异彩的GDBT等,都属于决策树。

到底决策树是什么,我们直接上实例。

在weka安装目录里有个data文件夹,里面有一些weka从各处搜集来一些比较知名的数据样例。

拿weather.nominal.arff为例

3 机器学习入门——决策树之天气预报、鸢尾花

这个数据集是根据外面的温度、刮风与否等来决定是不是要出去play。

将这个数据导入weka

3 机器学习入门——决策树之天气预报、鸢尾花

我们先选择Logistics逻辑回归来试一下这个数据集

3 机器学习入门——决策树之天气预报、鸢尾花

可以看到在test options为Use training set时,也就是所有样本作为训练集时,逻辑回归正确率达到了100%。这种并不奇怪,当数据量很小时,任何算法往往都能拟合的很好,给出一个并不通用的结果。

我们选择Cross-validation,10次交叉。再试一下,这次逻辑回归的正确率达到了71%。3 机器学习入门——决策树之天气预报、鸢尾花

OK,我们来使用决策树试试,先试试大名鼎鼎的C4.5分类器,在weka中对应J48。

在trees里找到J48,同样选择10次折叠,点击start。

可以看到正确率在50%。我们在模型上右键,选择查看这棵树。

3 机器学习入门——决策树之天气预报、鸢尾花

3 机器学习入门——决策树之天气预报、鸢尾花

可以看到,这就是决策树的本来面目。就像法庭上辩论时,对方律师问你问题,让你回答是与不是。决策树就是通过算法,挑选一个最合适做根节点的属性,然后开始往下依次生成子节点。通过树来构建一个模型预测新的数据。

不过这个案例数据太少,导致决策树表现不佳。当数据量变大时,这种类型的在决策树下表现通常会优于线性方程。

当然对于这个案例,通过使用融合梯度提升后的J48,也能让正确率达到70%多。

下面来看另一个数据集,鸢尾花,iris.arff,这个案例也非常知名,是UCI下载量最大的数据集,估计每个搞机器学习的helloworld阶段都会用过这个数据集。

导入数据,分别使用逻辑回归和J48来跑一下,发现两个都是96%的正确率。

3 机器学习入门——决策树之天气预报、鸢尾花

3 机器学习入门——决策树之天气预报、鸢尾花

这个数据集经过多次尝试,在各个算法上表现比较类似,差距不大,最好的结果是在SVM(支持向量机)上,96.6667%。