如何选择机器学习算法?
在这篇文章中,我将解释机器学习算法的类型以及应当如何针对你的任务进行选择。 我认为了解机器学习算法的类型,有助于看清人工智能技术的全貌,理解在这个领域中大家在做的所有事情的目标是什么,从而可以帮助你更好地分析现实问题并设计出一个机器学习系统。
本文会使用如下术语:
- 标注过的数据 (
labeled data
):由一组训练样本组成的数据,其中每个样本包含输入和期望的输出(也称为监督信号、标签等 ) - 分类(
classification
):分类的目标是预测(有限的)离散值,例如{1,0}
,{True,False}
,{垃圾邮件,非垃圾邮件}
。 - 回归(
regression
):回归的目标是预测(无限的)连续值,例如房价。
机器学习算法的类别
在如何定义机器学习算法的类别方面,存在一些不同的观点,但是通常可以根据使用目的将算法划分成不同类别,主要类别如下:
- 监督学习:
Supervised Learning
- 无监督学习:
Unsupervised Learning
- 半监督学习:
Semi-supervised Learning
- 强化学习 :
Reinforcement Learning
监督学习
我喜欢用函数逼近(function approximation
)的概念来看待监督学习,基本上我们训练算法并在最终得到一个能够最好地描述输入数据的函数,即对于一个给定的X
该函数能够做出最好的估计y
:X -> y
。 之所以视之为一种函数逼近,一个原因在于大多数时候我们无法写出能够做出正确预测的真实函数的数学封闭形式,另一原因在于这些算法依赖于我们对机器如何进行学习所作出的一些假设,而这些假设会引入偏差(bias
),关于偏差这个话题我会在另一篇文章中进行解释。
在这里,人类专家扮演着老师的角色,我们向计算机提供包含输入(input
)和正确输出(label
)的训练数据,利用监督学习算法,计算机应该能够从训练数据中学习到输入-输出的关系模式(pattern
)。
监督学习算法试图对目标预测输出和输入特征之间的关系和依赖进行建模,这样我们就可以基于学习到的模型(输出-输出之间的关系)来预测新的输入数据的输出值。
监督学习类型的算法,具有以下特征:
- 属于预测式模型
- 使用标注过的数据
- 包括回归(连续值预测)和分类 (离散值预测)
常用的监督学习类型的算法包括:
- 最近邻算法:
nearest neighbour
- 朴素贝叶斯:
naive bayes
- 决策树:
decision tree
- 线性回归:
linear regression
- 支持向量机:
support vector machine
- 神经网络 :
neural network
无监督学习
在无监督学习中,计算机使用未标注过的数据进行训练。
无监督学习不需要老师,计算机能够在学习到训练数据中隐含的模式之后教给你一些新的洞察,这些算法在人类专家不知道如何处理数据时特别有用。
无监督学习主要用于模式检测(detection
)和描述性(descriptive
)建模 。 但是, 在无监督学习中没有输出类别或标签来帮助算法建模。 这些算法总是尝试直接在输入数据中挖掘规则 、检测模式 、对数据进行总结和分组,从而获得对数据的洞察,并更好地向用户描述数据。
无监督学习算法的主要特点是:
- 属于描述性模型
- 包括聚类(
clustering
)算法和关联规则(association rule
)学习算法。
无监督学习类型的算法包括:
- k均值聚类:
k-means clustering
- 关联规则:
association rules
半监督学习
在前两种类型中,要么没有数据集中所有观测样本的标签,要么所有的观测值都存在标签。 半监督学习处于这两者之间。 在许多实际情况下,标注的成本相当高,因为它需要熟练的人类专家来完成。 因此,在大多数观测样本中没有标签的情况下,半监督算法是模型构建的最佳候选者。 半监督学习基于这一思想:即使未标注数据的分组(group
)是未知的,这些数据依然携带有关于其分组的重要信息。
强化学习
强化学习方法的目的是利用从与环境(action
)的交互中采集到的观测样本(observation
),来采取可以最大化奖励(reward
)或最小化风险的行动(action
)。 强化学习算法(称为代理:agent
)以迭代的方式不断地从环境中学习。 在这个过程中,代理从它与环境的交互中学习,直到探索完所有可能的状态(state
)。
强化学习是一种机器学习 ,因此也是人工智能的一个分支。 它允许机器和软件代理自动地确定特定环境下的理想行为,以最大限度地提高性能。 代理需要简单的奖励反馈来学习其行为; 这被称为强化信号:
有很多不同的算法来解决这个问题。 事实上,强化学习是由一种特定类型的问题所定义的,所有针对此问题的解决方案都被归类为强化学习算法。 在这个问题中,代理应该根据其当前状态决定最佳的动做。 当这一步骤不断重复时,这个问题被称为马尔科夫决策过程 (MDP
)。
为了生成智能代理,强化学习需要经过以下步骤:
- 代理观察输入状态。
- 代理使用决策函数来选择并执行一个动作。
- 行动结束后,代理从环境中获得奖励或强化信号。
- 代理存储状态-动作对应的回报信息。
常用的强化学习算法列表如下:
-
Q
学习:Q-learning
- 时间差分算法:
temporal difference
- 深度对抗网络 :
deep adversarial network
强化学习算法的典型应用包括机器下棋(国际象棋,围棋)、机器手和自动驾驶。
结语
有可能存在不同的标准来对机器学习算法的类型进行分类,但是我认为以要解决的任务作为分类依据,可以很好地可视化机器学习算法的类型,我相信根据你面对的问题和所掌握的数据,可以很容易地决定是否将使用监督、无监督或强化学习。 在后续的文章中,我将给出更多关于每种机器学习算法的例子。
下图来自en.proft.me
,可能会对你有所帮助: