机器学习

随着计算机的帮助和互联网上足够大的可用的数据集,所谓的机器学习就出现了。机器学习是人工智能的一个分支。人工智能的研究是从以“推理”为重点到以“知识”为重点,再到以“学习”为重点,一条自然、清晰的脉络。显然,机器学习是实现人工智能的一个途径,即以机器学习为手段解决人工智能中的问题。机器学习在近30多年已发展为一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。

机器学习研究的是计算机怎样模拟人类的学习行为,以获取新的知识或技能,并重新组织已有的知识结构使之不断改善自身。简单一点说,就是计算机从数据中学习出规律和模式,以应用在新数据上做预测的任务。机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。为此,机器学习主要关注于模式识别。机器学习有助于识别数据集内的模式,并因此尝试根据现有数据进行预测。深度学习是一种实现机器学习的技术1

人工智能关系图

人工智能关系图

机器学习框架图

机器学习框架图

一个简单的数学建模,我们需要考虑的是:1. 要做什么?2. 怎么做?3. 这样做合理吗?4. 如果这样做,假设那些可以改变?5. 这样做需要用到那些模型?6. 这种模型简洁吗?7. 确定了这种模型,怎么求解?8. 求解出来了,与现实合理吗?9. 在这个模型中,存在什么缺点,怎么去优化?10. 总结。

实现过程

华盛顿大学 eScience Institute 和 Institute for Neuroengineering 的数据科学博士后 Michael Beyeler2介绍了如何依靠已有的方法(模型选择和超参数调节)去指导你更好地去选择算法。

  1. 了解基本知识。机器学习里面三个主要类别:监督学习,无监督学习和强化学习。
    • 在监督学习(supervised learning)中,每个数据点都会获得标注,如类别标签或与数值相关的标签。一个类别标签的例子:将图片分类为「猫」或「狗」;数值标签的例子如:预测一辆二手车的售价。监督学习的目的是通过学习许多有标签的样本,然后对新的数据做出预测。例如,准确识别新照片上的动物(分类)或者预测二手车的售价(回归)。
    • 在无监督性学习(unsupervised learning)中,数据点没有相关的标签。相反,无监督学习算法的目标是以某种方式组织数据,然后找出数据中存在的内在结构。这包括将数据进行聚类,或者找到更简单的方式处理复杂数据,使复杂数据看起来更简单。
    • 在强化学习(reinforcement learning)中,算法会针对每个数据点来做出决策(下一步该做什么)。这种技术在机器人学中很常用。传感器一次从外界读取一个数据点,算法必须决定机器人下一步该做什么。强化学习也适合用于物联网应用。在这里,学习算法将收到奖励信号,表明所做决定的好坏,为了获得最高的奖励,算法必须修改相应的策略。
  2. 对问题进行分类
    • 根据输入数据分类:如果我们的数据有标签,这就是一个监督学习问题;如果数据没有标签而且我们想找出数据的内在结构,那这就是无监督学习;如果我们想通过与环境交互来优化目标函数,这是强化学习。
    • 根据输出结果分类:如果模型输出结果是一个数值,这是回归问题;如果输出结果是一个类别,这是分类问题;如果输出结果是一组输入数据,那这是聚类问题。
  3. 寻找可用的算法。
  4. 数据特征探索工程。或许比选择算法更重要的是正确选择表示数据的特征。虽然大多数特征的有效性需要靠实验来评估,但是了解常见的选取数据特征的方法是很有帮助的。这里有几个较好的方法:
    • 主成分分析(PCA):一种线性降维方法,可以找出包含信息量较高的特征主成分,可以解释数据中的大多数方差。
    • 尺度不变特征变换(SIFT):计算机视觉领域中的一种有专利的算法,用以检测和描述图片的局部特征。它有一个开源的替代方法 ORB(Oriented FAST and rotated BRIEF)。
    • 加速稳健特征(SURF):SIFT 的更稳健版本,有专利。
    • 方向梯度直方图(HOG):一种特征描述方法,在计算机视觉中用于计数一张图像中局部部分的梯度方向的 occurrence。
    • 智能的特征选择
      • 前向搜索:
      • 最开始不选取任何特征。
      • 然后选择最相关的特征,将这个特征加入到已有特征;计算模型的交叉验证误差,重复选取其它所有候选特征;最后,选取能使你交叉验证误差最小特征,并放入已选择的特征之中。
      • 重复,直到达到期望数量的特征为止!
      • 反向搜索:
      • 从所有特征开始。
      • 先移除最不相关的特征,然后计算模型的交叉验证误差;对其它所有候选特征,重复这一过程;最后,移除使交叉验证误差最大的候选特征。
      • 重复,直到达到期望数量的特征为止!
  5. 实现所有适用的算法,模型选择。
    • 对于任何给定的问题,通常有多种候选算法可以完成这项工作。那么我们如何知道选择哪一个呢?通常,这个问题的答案并不简单,所以我们必须反复试验。原型开发最好分两步完成。在第一步中,我们希望通过最小量的特征工程快速且粗糙地实现一些算法。在这个阶段,我们主要的目标是大概了解哪个算法表现得更好。
    • 一旦我们将列表减少至几个候选算法,真正的原型开发开始了。理想情况下,我们会建立一个机器学习流程,使用一组经过仔细选择的评估标准来比较每个算法在数据集上的表现。
  6. 超参数优化。例如,主成分分析中的主成分个数,k 近邻算法的参数 k,或者是神经网络中的层数和学习速率。最好的方法是使用交叉验证来选择。

实用建议

总结了机器学习研究者和从业者的宝贵经验34,其中包括需要避免的陷阱、值得关注的重点问题、常见问题的答案:

  1. 并非所有的问题都适合用机器学习解决(很多逻辑清晰的问题用规则能很高效和准确地处理),也没有一个机器学习算法可以通用于所有问题。从功能的角度分类,机器学习在一定量级的数据上,可以解决下列问题:分类、回归、聚类。
  2. 快速选择开发/测试集——如果有必要不要害怕更换。思考清理贴错标签的开发/测试集是否值得。考虑将开发集分为多个子集。
  3. 学习=表征+评估+优化。一个相关的问题是如何表征输入,即使用哪些特征。需要一个评估函数来区分分类器的好坏。我们要用一种方法搜索得分最高的分类器。
  4. 泛化能力很关键。
  5. 选择正确的评估指标。
  6. 仅有数据是不够的。机器学习并非魔术,它无法做到无中生有,它所做的是举一反三。
  7. 过拟合具有多面性。理解过拟合的一种方法是将泛化的误差进行分解,分为偏差和方差。除交叉验证之外,还有很多方法可以解决过拟合问题。最流行的是在评估函数中增加一个正则化项。
  8. 高维度会挫伤直觉。
  9. 理论保证与实际的出入。
  10. 特征工程是关键。
  11. 数据量为王。
  12. 不单单学习一个模型。
  13. 简单不意味着准确。
  14. 可表征并不意味着可学习。
  15. 相关性并不意味着因果关系。
  16. 机器学习是一个迭代过程:不要指望第一次就成功。快速构建第一个系统,然后迭代。并行评估多个想法。

学习资源

The Who’s Who Of Machine Learning, And Why You Should Know Them

机器学习里所说的“算法”与程序员所说的“数据结构与算法分析”里的“算法”略有区别。前者更关注结果数据的召回率、精确度、准确性等方面,后者更关注执行过程的时间复杂度、空间复杂度等方面。 当然,实际机器学习问题中,对效率和资源占用的考量是不可或缺的。

『数学基础』『典型机器学习算法』『编程基础』三个并行的部分,是因为机器学习是一个将数学/算法理论和工程实践紧密结合的领域,需要扎实的理论基础帮助引导数据分析与模型调优,同时也需要精湛的工程开发能力去高效化地训练和部署模型和服务。(每一个算法,要在训练集上最大程度拟合同时又保证泛化能力,需要不断分析结果和数据,调优参数,这需要我们对数据分布和模型底层的数学原理有一定的理解。)。具备了机器学习的必要条件,剩下的就是怎么运用它们去做一个完整的机器学习项目。其工作流程如下: 抽象成数学问题—— 获取数据——特征预处理与特征选择——训练模型与调优——模型诊断——模型融合——上线运行。

列出了一些最好的免费机器学习书籍,绝对值得阅读。

数据集

部分网址可能需要科学上网

谢谢鼓励,欢迎留言反馈
0%
Title - Artist
0:00