1.2 选择算法
本书将讨论10多种用于分析数据的算法。如何选择算法,取决于任务类型。任务大致可以分为3大类,每一类对应一些算法,如表1-3所示。
表1-3 各种算法及其对应的任务类型
1.2.1 无监督学习
任务目标:指出数据中隐藏的模式。
当希望找出数据集中隐藏的模式时,可以使用k均值聚类、主成分分析、关联规则、社会网络分析等无监督学习算法。之所以称之为无监督学习算法,是因为我们不知道要找的模式是什么,而是要依靠算法从数据集中发现模式。
以表1-1中的数据为例,可以应用无监督学习模型找出哪些商品是顾客经常搭配购买的(其中会用到第4章讲解的关联规则算法),或者根据购买的商品对顾客进行分类(第2章将进行讲解)。
通过间接手段,可以对无监督学习模型输出的结果进行验证,比如检查得到的顾客分类是否与我们熟悉的分类(如食草动物和食肉动物)相符合。
1.2.2 监督学习
任务目标:使用数据中的模式做预测。
当需要做预测时,就会用到回归分析、k最近邻、支持向量机、决策树、随机森林、神经网络等监督学习算法。之所以称之为监督学习算法,是因为它们的预测都基于已有的模式。
以表1-1中的数据为例,监督学习模型可以根据“顾客类别”以及“是否买鱼”(二者皆为预测变量)来预测“水果购买量”。
通过输入非表中顾客的预测变量值(“顾客类别”和“是否买鱼”),并且对比预测结果和实际的“水果购买量”,可以直接评估监督学习模型的准确度。
像“水果购买量”这样的整型数值或连续数值的预测过程,实际上是在解决回归问题,如图1-1a所示。二元值或分类值的预测过程,如预测是否会下雨,则是在解决分类问题,如图1-1b所示。尽管如此,大部分分类算法也可以生成连续的概率值,比如预测“降水概率是75%”,这种预测精度更高。
图1-1 回归会产生一条趋势线,而分类则会把数据点分组。请注意,这两项任务都可能出错:在回归过程中,某些数据点可能会远离趋势线;在分类过程中,某些数据点可能被错误地分组
1.2.3 强化学习
任务目标:使用数据中的模式做预测,并根据越来越多的反馈结果不断改进。
无监督学习模型和监督学习模型在部署之后便无法更改。不同于此,强化学习模型自身可以通过反馈结果不断改进。
暂且抛开表1-1中的动物顾客,让我们举一个实际的例子:假设要比较两个在线广告的效果。首先,让这两个广告的投放频率一样,然后确定每个广告的点击人数。接着,利用强化学习模型把点击人数作为衡量广告受欢迎程度的指标,并根据这个指标提高受欢迎广告的投放频率。通过这样的迭代过程,模型不断得到改进,最终会让广告投放取得更好的效果。
1.2.4 注意事项
除了要了解算法适用的任务类型之外,还要了解它们在其他方面的不同,比如各种算法对不同数据类型的分析能力,以及结果的本质。接下来的各章在介绍相应的算法时将具体讲解。此外,附录A和附录B将分别总结无监督学习算法和监督学习算法的特点。