前面我们简单学习了线性回归、逻辑回归,不知道有没有做一个总结,那就是什么时候该用逻辑回归?
从结果来观察,可以看到,线性回归的过程就是在找那个合适的方程,来尽量满足你的每行数据。即Y=ax + bx^2 + …….
通过算法来寻找合适的a、b、c。
一般来说,线性回归适用于最终结果和各属性之间有数值上的关系,能通过一系列的组合,得出一个规律。当然,实际在应用中,我们一般不管什么数据集,都先跑一遍逻辑(线性)回归就是了,它性能优异,至少我们可以将它的结果作为baseline。
在实际生活中,我们面对的当然不仅仅是由数字得出的,很多时候是通过决策得出。譬如判断一朵花属于哪个品种,我们会根据它的叶片形状、颜色等一些属于分类的属性来进行判断;还有去相亲,可能会先根据对方的年龄、学历、高富帅程度等做决策。
so,这些问题都促使了决策树的诞生。决策树是一个巨大的机器学习分支,里面有很多著名的算法如C4.5和最近一些在竞赛中大放异彩的GDBT等,都属于决策树。
到底决策树是什么,我们直接上实例。
在weka安装目录里有个data文件夹,里面有一些weka从各处搜集来一些比较知名的数据样例。
拿weather.nominal.arff为例
这个数据集是根据外面的温度、刮风与否等来决定是不是要出去play。
将这个数据导入weka
我们先选择Logistics逻辑回归来试一下这个数据集
可以看到在test options为Use training set时,也就是所有样本作为训练集时,逻辑回归正确率达到了100%。这种并不奇怪,当数据量很小时,任何算法往往都能拟合的很好,给出一个并不通用的结果。
我们选择Cross-validation,10次交叉。再试一下,这次逻辑回归的正确率达到了71%。
OK,我们来使用决策树试试,先试试大名鼎鼎的C4.5分类器,在weka中对应J48。
在trees里找到J48,同样选择10次折叠,点击start。
可以看到正确率在50%。我们在模型上右键,选择查看这棵树。
可以看到,这就是决策树的本来面目。就像法庭上辩论时,对方律师问你问题,让你回答是与不是。决策树就是通过算法,挑选一个最合适做根节点的属性,然后开始往下依次生成子节点。通过树来构建一个模型预测新的数据。
不过这个案例数据太少,导致决策树表现不佳。当数据量变大时,这种类型的在决策树下表现通常会优于线性方程。
当然对于这个案例,通过使用融合梯度提升后的J48,也能让正确率达到70%多。
下面来看另一个数据集,鸢尾花,iris.arff,这个案例也非常知名,是UCI下载量最大的数据集,估计每个搞机器学习的helloworld阶段都会用过这个数据集。
导入数据,分别使用逻辑回归和J48来跑一下,发现两个都是96%的正确率。
这个数据集经过多次尝试,在各个算法上表现比较类似,差距不大,最好的结果是在SVM(支持向量机)上,96.6667%。