《Spark机器学习进阶实战》——3.4 App数据的分类实现
3.4 App数据的分类实现
本节将用到从360应用市场爬取下来的App数据,为了方便叙述,对数据进行了裁剪。本章对应的GitHub上的数据仅保留了购物优惠、地图旅游、教育学习、金融理财和游戏娱乐5个类别,更多类别可在http://zhushou.360.cn/上查看。
在Spark本地模式下,可以快速运行实践,步骤如下。
1)准备数据:转换数据并加载数据;
2)训练模型:使用朴素贝叶斯和SVM分类器进行训练;
3)评估性能:计算指标并进行评估;
4)模型参数调优:选择两个维度,观察每次迭代中心点的变化,选择合适的k值。
3.4.1 选择分类器
实践之前,我们先来看一看算法选择的一般准则。
如何为分类问题选择合适的机器学习算法?如果你真正关心准确率,那么最佳方法是使用不同参数,测试各种不同的算法,然后通过交叉验证进行选择。或者,从Netflix Prize和Middle Earth中吸取教训,只使用了一个集成方法进行选择。如果只是为问题寻找一个“足够好”的算法,或者一个起点,这里有一些还不错的一般准则。
朴素贝叶斯优点:超级简单,你只是在做一串计算。如果朴素贝叶斯条件独立性假设成立,相比于逻辑回归这类判别模型,朴素贝叶斯分类器将收敛得更快,所以你只需要较小的训练集。如果独立性假设不成立,朴素贝叶斯分类器在实践方面仍然表现很好。如果想得到简单快捷的执行效果,这将是个好的选择。主要缺点是,不能学习特征之间的相互作用。
逻辑回归优点:有许多正则化模型的方法,并且对于它们你不需要像在朴素贝叶斯分类器中那样担心特征间的相互关联性。与决策树和支持向量机不同,你还可以有一个很好的概率解释,并能轻松地使用一个在线梯度下降方法更新模型来吸收新数据。如果你想要一个概率框架(比如简单地调整分类阈值),或你期望未来接收更多想要快速并入模型中的训练数据,就选择逻辑回归。
决策树的优点:易于说明和解释,它们可以很容易地处理特征间的相互作用,并且是非参数化的,所以你不用担心异常值或者数据是否线性可分(比如,决策树可以很容易地判断出某特征x的低端是类A,中间是类B,然后高端又是类A的情况)。它的一个缺点是不支持在线学习,所以当有新样本时,你将不得不重建决策树。另一个缺点是,容易过拟合,但这也正是诸如随机森林(或提高树)之类的集成方法的切入点。除此之外,随机森林往往是很多分类问题的赢家,它们快速并且可扩展,同时你无须担心要像支持向量机那样调一堆参数,所以它们最近似乎相当受欢迎。
SVM的优点:高准确率,为过拟合提供了好的理论保证,并且即使你的数据在基础特征空间线性不可分,只要选定一个恰当的核函数,它们仍然能够取得很好的分类效果。它们在超高维空间是常态的,在文本分类问题中尤其受欢迎。
K-近邻优点:训练和预测过程可以同时进行,不具有固定的模型,在更新样本的同时就完成了模型的更新,但是由于将模型的训练延迟到预测时进行,在预测时需要进行大量的距离计算,导致模型在线上预测时有计算开销大、运算速度慢等缺点。
更好的数据往往能打败更好的算法,设计好的特征大有裨益。另外,如果你有一个庞大的数据集,这时你使用哪种分类算法对于分类性能来说可能并不要紧,所以建议基于速度和易用性选择算法。
- 点赞
- 收藏
- 关注作者
评论(0)