算法工程师修仙之路:机器学习实战(一)

第一部分:分类

第一章 机器学习基础


  • 在监督学习的过程中, 我们只需要给定输入样本集, 机器就可以从中推演出指定目标变量的可能结果。

  • 监督学习相对比较简单,机器只需从输入数据中预测合适的模型,并从中计算出目标变量的结果。

  • 监督学习一般使用两种类型的目标变量:标称型和数值型。

    • 标称型目标变量的结果只在有限目标集中取值,如真与假、动物分类集合 {爬行类、鱼类、哺乳类、两栖类} ;
    • 数值型目标变量则可以从无限的数值集合中取值,如0.100、42.001、1000.743等;
    • 数值型目标变量主要用于回归分析。

何谓机器学习

  • 简单地说,机器学习就是把无序的数据转换成有用的信息,机器学习对于任何需要解释并操作数据的领域都有所裨益。

  • 拿工程实践来说,它要利用科学知识来解决具体问题,在该领域中,我们常会面对那种解法确凿不变的问题。然而, 在现实世界中,并不是每个问题都存在确定的解决方案。在很多时候,我们都无法透彻地理解问题,或者没有足够的计算资源为问题精确建立模型,例如我们无法给人类活动的动机建立模型。为了解决这些问题,我们就需要使用统计学知识。除了人类行为,现实世界中存在着很多例子,我们无法为之建立精确的数学模型,而为了解决这类问题,我们就需要统计学工具。

传感器和海量数据
  • 地震预测就是一个很好的例子,传感器收集了海量的数据,如何从这些数据中抽取出有价值的信息是一个非常值得研究的课题。

  • 移动计算和传感器产生的海量数据意味着未来我们将面临着越来越多的数据,如何从海量数据中抽取到有价值的信息将是一个非常重要的课题。

机器学习非常重要
  • 现今的情况具有很大的二义性,类似于“最大化利润”,“最小化风险”、“找到最好的市场策略”,诸如此类的任务要求都已成为常态。虽然可从互联网上获取到海量数据,但这并没有简化知识工人的工作难度。针对具体任务搞懂所有相关数据的意义所在,这正成为基本的技能要求。

  • 如何解释数据、处理数据、从中抽取价值、展示和交流数据结果,在未来十年将是最重要的职业技能,甚至是大学,中学,小学的学生也必需具备的技能,因为我们每时每刻都在接触大量的免费信息,如何理解数据、从中抽取有价值的信息才是其中的关键。

关键术语

  • 通过构建下面的鸟类分类系统,我们将接触机器学习涉及的常用术语。这类系统非常有趣,通常与机器学习中的专家系统有关。

  • 表1-1是我们用于区分不同鸟类需要使用的四个不同的属性值,我们选用体重、翼展、有无脚蹼以及后背颜色作为评测基准。通常的做法是测量所有可测属性,而后再挑选出重要部分。测量的这四种值称之为特征,也可以称作属性。
    算法工程师修仙之路:机器学习实战(一)

    • 表1-1中的每一行都是一个具有相关特征的实例;
    • 表1-1的前两种特征是数值型,可以使用十进制数字;
    • 第三种特征(是否有脚蹼)是二值型,只可以取0或1;
    • 第四种特征(后背颜色)是基于自定义调色板的枚举类型,这里仅选择一些常用色彩;
    • 如果仅仅利用常见的七色作为评测特征,后背颜色也可以是一个整数。
  • 机器学习的主要任务就是分类。假定我们可以得到所需的全部特征信息,判断飞入进食器的鸟是不是象牙喙啄木鸟的任务就是分类,有很多机器学习算法非常善于分类。本例中的类别就是鸟的物种,更具体地说,就是区分是否为象牙喙啄木鸟。

  • 我们决定使用某个机器学习算法进行分类:

    • 首先需要做的是算法训练,即学习如何分类。
    • 通常我们为算法输入大量已分类数据作为算法的训练集。
    • 训练集是用于训练机器学习算法的数据样本集合,表1-1是包含六个训练样本的训练集,每个训练样本有4种特征、一个目标变量。
    • 目标变量是机器学习算法的预测结果,在分类算法中目标变量的类型通常是标称型的,而在回归算法中通常是连续型的。
    • 训练样本集必须确定知道目标变量的值,以便机器学习算法可以发现特征和目标变量之间的关系。
    • 这里的目标变量是物种,也可以简化为标称型的数值。
    • 我们通常将分类问题中的目标变量称为类别,并假定分类问题只存在有限个数的类别。
  • 特征或者属性通常是训练样本集的列,它们是独立测量得到的结果,多个特征联系在一起共同组成一个训练样本。

  • 为了测试机器学习算法的效果,通常使用两套独立的样本集:训练数据和测试数据。

    • 当机器学习程序开始运行时,使用训练样本集作为算法的输入,训练完成之后输入测试样本。
    • 输入测试样本时并不提供测试样本的目标变量,由程序决定样本属于哪个类别。
    • 比较测试样本预测的目标变量值与实际样本类别之间的差别,就可以得出算法的实际精确度。
  • 假定这个鸟类分类程序,经过测试满足精确度要求,我们能否可以看到机器已经学会如何区分不同的鸟类的工作称之为知识表示。

    • 某些算法可以产生很容易理解的知识表示,而某些算法的知识表示也许只能为计算机所理解。
    • 知识表示可以采用规则集的形式,也可以采用概率分布的形式,甚至可以是训练样本集中的一个实例。
    • 在某些场合中,人们可能并不想建立一个专家系统,而仅仅对机器学习算法获取的信息感兴趣。此时,采用何种方式表示知识就显得非常重要了。