各种机器学习算法最佳应用场景 – 2

此前,跨象乘云™ 曾介绍了基于 scikit-learn 的机器学习算法工程导图,并介绍了在选取合适的机器学习算法前,都需要完成的必要数据科学流程。再强调一遍:掌握机器学习算法的价值,不单纯研究算法背后的数学原理,而是熟练理解各种机器学习算法应用的业务场景,搞清楚机器学习算法究竟能解决什么实际的业务问题。毕竟大多数企业希望聘请的是能提升业务的工程师,而不是科研数学家。因此,我们今天进一步介绍几种常用的机器学习应用场景:

线性回归

这可能是机器学习中最简单的算法。例如,当你想要计算一些连续值,而不是将输出分类时,可以使用回归算法。因此,当你需要预测一个正在运行的过程未来的值时,你可以使用回归算法。然而,当特征冗余,即如果存在多重共线性(multicollinearity)时,线性回归就不太稳定。在下列情况下可以考虑使用线性回归:

  • 从一个地方移动到另一个地方所需的时间
  • 预测下个月某种产品的销售情况
  • 血液中的酒精含量对协调能力的影响
  • 预测每个月礼品卡的销售情况,并改善年收入的估算

Logistic 回归

Logistic 回归执行二进制分类,因此输出二值标签。它将特征的线性组合作为输入,并且对其应用非线性函数(sigmoid),因此它是一个非常小的神经网络的实例。logistic 回归提供了许多方法对你的模型进行正则化处理,因此正如在朴素贝叶斯算法中那样,你不必担心你的特征是否相关。该模型还有一个很好的概率化的解释。不像在决策树或者支持向量机中那样,你可以很容易地更新你的模型以获取新的数据。如果你想要使用一个概率化的框架,或者你希望在未来能够快速地将更多的训练数据融合到你的模型中,你可以使用 logistic 回归算法。logistic 回归还可以帮助你理解预测结果背后起作用的因素,它不完全是一个黑盒方法。在下列情况下可以考虑使用 logistic 回归算法:

  • 预测客户流失
  • 信用评分和欺诈检测
  • 评价市场营销活动的效果

决策树

决策树很少被单独使用,但是不同的决策树可以组合成非常高效的算法,例如随机森林或梯度提升树算法。决策树很容易处理特征交互,并且决策树是一种非参数模型,所以你不必担心异常值或者数据是否是线性可分的。决策树算法的一个缺点是,它们不支持在线学习,因此当你要使用新的样本时,你不得不重新构建决策树。决策树的另一个缺点是,它很容易发生过拟合,而这就是像随机森林(或提升树)这样的集成学习方法能够派上用场的地方。决策树也需要大量的内存空间(拥有的特征越多,你的决策树可能会越深、越大)决策树能够很好地帮助你在诸多行动路径中做出选择:

  • 做出投资决策
  • 预测客户流失
  • 找出可能拖欠银行贷款的人
  • 在「建造」和「购买」两种选择间进行抉择
  • 销售主管的资质审核
  • 泰坦尼克号乘客生存分析

K-均值

有时,你完全没有数据的标签信息,并且你的目的是根据对象的特征来为其打上标签。这种问题被称为聚类任务。聚类算法可以在这种情况下被使用:例如,当你有一大群用户,你希望根据他们共有的一些属性将其划分到一些特定的组中。如果在你的问题声明中有这样的问题:例如,找出一群个体的组织形式,或将某些东西分组,或找出特定的组。这时,你就应该使用聚类算法。该方法最大的缺点是,K-均值算法需要提前知道你的数据会有多少簇,因此这可能需要进行大量的试验去「猜测」我们最终定义的簇的最佳个数 – K。在下列情况下可以考虑使用 K-均值算法:

  • 客户分析
  • 客户购物习惯
  • 垃圾邮件分类
  • 识别犯罪地点
  • 交通流量预测
  • 球队状态分析

主成份分析(PCA)

主成分分析能够对数据进行降维。有时,你拥有各种各样的特征,这些特征之间的相关性可能很高,而模型如果使用如此大量的数据可能会产生过拟合现象。这时,你可以使用主成分分析(PCA)技术。主成分分析(PCA)能够起作用的关键因素是:除了低维的样本表征,它还提供了各种变量的一种同步的低维表征。同步的样本和变量的表征提供了一种能够可视化地找到能够表示一组样本的特征的变量的方法。在下列情况下可以考虑使用主成份分析(PCA)算法:

  • 碳元素含量分析
  • 啤酒风味评价分析
  • 食品领域分析

支持向量机(SVM)

支持向量机(SVM)是一种在模式识别和分类问题中被广泛应用的监督机器学习技术——当你的数据恰好有两类时。支持向量机准确率高,对于防止过拟合很好的理论保障。当你使用一个合适的核函数时,即使你的数据在基(低维)特征空间中是线性不可分的,他们也可以很好地工作。支持向量机在文本分类问题中非常流行,在该问题中,输入是一个维度非常高的空间是很正常的。然而,SVM 是一种内存密集型算法,它很难被解释,并且对其进行调优十分困难。在下列现实世界的应用中,你可以使用支持向量机:

  • 发现患有糖尿病等常见疾病的人
  • 手写字符识别
  • 文本分类 —— 将文章按照话题分类
  • 股票市场价格预测

朴素贝叶斯

这是一种基于贝叶斯定理的分类技术,它很容易构建,非常适用于大规模数据集。除了结构简单,据说朴素贝叶斯的表现甚至比一些复杂得多的分类方法更好。当 CPU 和内存资源有限时,朴素贝叶斯算法也是一个很好的选项。朴素贝叶斯非常简单,你仅仅是在做大量的计数工作。如果朴素贝叶斯的条件独立假设确实成立,朴素贝叶斯分类器的收敛速度会比 logistic 回归这样的判别模型更快,因此需要的训练数据更少。即使朴素贝叶斯的假设不成立,朴素贝叶斯分类器往往也能很好地完成任务。如果你想使用一种快速的、简单的、性能也不错的模型,朴素贝叶斯是一个很好的选择。这种算法最大的缺点就是它不能学习到特征之间的相互作用。在下列真实世界的应用中,你可以使用朴素贝叶斯:

  • 情感分析和文本分类
  • 类似于 Netflix、Amazon 这样的推荐系统
  • 识别垃圾邮件
  • 人脸识别

随机森林

随机森林是一种决策树的集成方法。它能够同时解决具有大规模数据集的回归问题和分类问题,还有助于从数以千计的输入变量中找出最重要的变量。随机森林具有很强的可伸缩性,它适用于任何维数的数据,并且通常具有相当不错的性能。此外,还有一些遗传算法,它们可以在具有最少的关于数据本身的知识的情况下,很好地扩展到任何维度和任何数据上,其中最简单的实现就是微生物遗传算法。然而,随机森林学习的速度可能会很慢(取决于参数设置),并且这种方法不能迭代地改进生成模型。在下列现实世界的应用中,你可以使用随机森林:

  • 预测高危患者
  • 预测零件在生产中的故障
  • 预测拖欠贷款的人

神经网络

神经网络中包含着神经元之间连接的权重。这些权重是平衡的,逐次对数据点进行学习。当所有的权重都被训练好后,如果需要对新给定的数据点进行回归,神经网络可以被用于预测分类结果或一个具体数值。利用神经网络,可以对特别复杂的模型进行训练,并且将其作为一种黑盒方法加以利用,而在训练模型之前,我们无需进行不可预测的复杂特征工程。通过与「深度方法」相结合,甚至可以采用更加不可预测的模型去实现新任务。例如,最近人们已经通过深度神经网络大大提升了物体识别任务的结果。深度学习还被应用于特征提取这样的非监督学习任务,也可以在人为干预更少的情况下,从原始图像或语音中提取特征。另一方面,神经网络很难被解释清楚,其参数设置也复杂地让人难以置信。此外,神经网络算法也都是资源密集型和内存密集型的。目前,神经网络在新一代人工智能上的应用已经非常普遍,在各种领域上都能找到神经网络技术应用的影子。

最后,Scikit learning 为大家提供了一个非常深入的、解释地很清楚的流程图,它能够帮助你选择正确的算法。一般来说,你可以根据上面介绍的要点来筛选出一些算法,但是要想在一开始就知道哪种方法最好是很难的。你最好多迭代几次选择算法的过程。将你的数据输入给那些你确定的潜在优秀机器学习算法,通过并行或串行的方式运行这些算法,最终评估算法性能,从而选择出最佳的算法。