MATLAB机器学习
上QQ阅读APP看书,第一时间看更新

1.3 选择正确的算法

前面我们了解了3类机器学习算法的异同。现在是时候回答这个问题了:如何根据具体需求选择相应算法呢?

然而,这个问题没有针对所有情形都普遍适用的答案,最好的答案可能是:看情况。对于不同情况都需要考虑哪些因素呢?需要考虑的主要因素来源于数据集,包括数据集的大小、质量高低以及数据间隐含的联系。同时,也需要考虑任务的目的、算法是如何编写的、有多长时间去训练这些算法等。总之,没有统一的标准,确定一个算法选取是否合理的唯一办法就是通过使用一下试试效果。

不过,为了弄明白最适合需求的算法是什么,我们可以进行一些预备分析。通过分析数据集、现有的工具(算法)、任务目标(输出结果)的基础性质,我们能够得到许多挑选算法的有用信息。

从分析数据集这个方法出发。我们可以从两个不同的角度挑选算法——输入和输出。译者注:这两个角度虽然都属于数据集的性质范围,但不是同一层次上的问题。这里的“输入”指的是算法接收的训练数据集的性质,比如数据集中的样本点是否都有对应的标签。输出是指对于给定算法的数据集(如训练数据集)中的输入值,对应的输出值的性质,是连续、离散抑或是组成的簇(见下文)。

(1)根据算法的输入进行挑选。

● 监督学习:接收的训练数据集中样本既有输入值,也有对应的标签。

● 无监督学习:接收的训练数据集中没有标签集,我们希望得到数据集中样本间的某种关系。

● 强化学习:接收的训练数据是通过与外界进行互动迭代式积累的,我们希望在迭代、与环境交互中优化目标函数。

(2)根据输出进行挑选。

● 回归问题:输出是连续数值。

● 分类问题:输出是离散类型。

● 聚类问题:输出结果是输入样本组成的一些簇。

图1.9展示了基于已有的数据在挑选算法时可以参考的两个角度。

图1.9 预备分析

在了解了数据集的基本性质的基础上,我们可以进一步根据已有算法分析哪些算法适合我们的输入数据集,能够给出想要的输出结果,从而缩小目标算法的挑选范围。

在了解了数据集和有了明确的算法范围后,我们需要训练这些算法,评估各个算法的表现。我们把选择的算法应用到手头的数据集上。接下来,通过一系列精心选择的衡量算法表现的指标,我们能够对这些算法的表现进行比较,最终选出最合适的算法。