在日常机器学习工作或学习中,当我们遇到有监督学习相关问题时,不妨考虑下先用简单的假设空间(简单模型集合),例如线性模型逻辑回归。若效果不好,也即并没达到你的预期或评判效果基准时,再进行下换其他更复杂模型来实验。
随机森林VS 支持向量机
我更愿意认为随机深林是让你毫无压力的统计模型方法,假如在机器学习过程中存在这样事实:没有超参数需要调(除了树的数量,而一般,树越多效果越好)。相反,支持向量机则有非常多参数需要调整,如选择最合适的核函数,正则惩罚等。
随机深林和支持向量机都是非参数模型(复杂度随着训练模型样本的增加而增大)。相较于一般线性模型,就计算消耗来看,训练非参数模型因此更为耗时耗力。分类树越多,需要更耗时来构建随机森林模型。同样,我们训练出来的支持向量机有很多支持向量,最坏情况为,我们训练集有多少实例,就有多少支持向量。虽然,我们可以使用多类支持向量机,但传统多类分类问题的执行一般是one-vs-all(所谓one-vs-all 就是将binary分类的方法应用到多类分类中。比如我想分成K类,那么就将其中一类作为positive),因此我们还是需要为每个类训练一个支持向量机。相反,决策树与随机深林则可以毫无压力解决多类问题。
至此,我们总结如下:对于相关从业者来说,随机森林在训练模型上要更为简单。你很容易可以得到一个又好且具鲁棒性的模型。随机森林模型的复杂度与训练样本和树成正比。支持向量机则需要我们在调参方面做些工作,除此之外,计算成本会随着类增加呈线性增长。
就经验来说,我更愿意认为支持向量机在存在较少极值的小数据集上具有优势。随机森林则需要更多数据但一般可以得到非常好的且具有鲁棒性的模型。而,至于深度学习算法,好吧,则需要更多的数据量来训练好的模型,你也需要再合适时间内选择合适基础架构去训练他们。往往,深度学习算法需要耗时更大,相比于诸如随机森林和支持向量机那样的现成分类器,安装配置好一个神经网络模型来使用深度学习算法的过程则更为乏味。但不可否认,深度学习在更为复杂问题上,如图片分类,自然语言处理,语音识别方面更具优势。另外一个优势为你不需要太关注特征工程相关工作。实际上,至于如何选择分类器取决于你的数据量和问题的一般复杂性(和你要求的效果)。这也是你作为机器学习从业者逐步会获得的经验。
就预测效果来看,有许多情况下是支持向量机好于随机森林,反之亦然。可以参考以下论文:
· Caruana, Rich, and Alexandru Niculescu-Mizil. "An empirical comparisonof supervised learning algorithms." Proceedings of the 23rdinternational conference on Machine learning. ACM, 2006.
对深度学习来说,也一样道理。假如我们来查阅MNIST效果(http://yann.lecun.com/exdb/mnist/))。较好的模型来训练这些数据为35 ConvNets,据报道只有0.23%的预测错误。而较好的支持向量机则有0.56%错误率。如下图所示:
The ConvNet组合获得了更好的准确率(我们假设预测为无偏估计,也即系统误差为零的估计(无偏估计是参数的样本估计量的期望值等于参数的真实值。估计量的数学期望等于被估计参数,则称此为无偏估计,如设A'=g(X1,X2,...,Xn)是未知参数A的一个点估计量,若A'满足E(A')= A则称A'为A的无偏估计量,否则为有偏估计量。)。但值得注意的是the 35 ConvNet committee更为的耗时。所以,如果你有决策权,仅仅提高0.33%是否值得要花费那么大代价去换取呢)好吧,在某些情况是值得的,如金融部门或非实时预测,但其他情况下则并不一定。
至此,给出我的实践经验如下:
定义好效果评估方法指标去衡量你的模型效果
扪心自问:你期望的效果是多少,需要什么硬件花销,项目什么时候截止
从最简单模型开始
假如你并没满足你的期望,去尝试更复杂的模型(假如技术上可以实施的话)
作者Bio:SebastianRaschka做为一位数据科学家,对机器学习充满热情,热爱Python和开源。著有'Python Machine Learning',密歇根州立大学(成立于1855年的密歇根州立大学(MichiganState University简称MSU)位于美国密歇根州兰辛市,是一所美国一流的公立研究型大学,同时也是公立常青藤的一员)。
欢迎加入本站公开兴趣群
商业智能与数据分析群
兴趣范围包括各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识
QQ群:81035754