1959 年,Arthur Samuel 将机器学习定义如下:
Field of study that gives computers the ability to learn without being explicitly programmed.
使计算机无需明确编程即可学习的领域。

他编写了一个跳棋程序,其惊人之处在于 Arthur Samuel 本人并非一个非常好的跳棋选手。他所做的是,对计算机进行了编程,使其可以与自己进行数以万计的对局,程序通过观察哪些位置能够获胜以及哪些位置会导致失败,尝试学习什么是好的或坏的位置。计算机有耐心与自己对弈数万次,因此能够获得如此多的跳棋经验,最终成为 Arthur Samuel 本人更好的跳棋玩家。
机器学习的两种类型为:
- 监督学习(Supervised Leaning,实际应用最多的类型)
- 无监督学习(Unsupervised Leaning)
还有一种类型为强化学习(Reinforcement Learning),但是目前最常用的还是上面两类。
1 监督学习
吴老师认为,机器学习创造的经济价值有 99% 来源于监督学习。常见的监督学习指学习输入(x)到输出(y)的映射算法,其关键特征是提供学习算法示例以供学习,即从 x 到 y 的正确答案。

常见案例包括:

监督学习主要包括 2 类,回归和分类。

1.1 回归
以预测房价为例,我们有如下数据。横轴表示房屋大小(单位为平方英尺),纵轴为房子的价格:

假设一位朋友想知道他们 750 英尺大小的房子具体价格是多少,学习算法可能做的一件事是,使用直线进行拟合,预估在 750 位置处的房子可以卖到大约 150,000 美元。但拟合直线并不是可以使用的唯一学习算法,还有其他一些更好的方法,例如拟合曲线,在这里可以得到朋友的房子可以以接近 200,000 美元的价格出售。

以上是一个监督学习的具体示例,算法提供了一个数据集,其中为地块上的每个房屋提供了所谓的正确答案,即标签或正确价格 y。学习算法的任务是产生更多这样的正确答案,特别是预测其他房子(比如你朋友的房子)的可能价格。
这种房价预测是一种特殊类型的监督学习,称为回归。通过回归,我们试图从无限多个可能的数字中预测一个数字,例如我们示例中的房价,它可能是 150,000 或 70,000 或 183,000 或介于两者之间的任何其他数字,即学习输入、输出或 x 到 y 的映射。
1.2 分类
第二种主要类型的监督学习算法,称为分类算法。
以乳腺癌检测为例,假设您正在构建一个机器学习系统,数据集中有各种大小的肿瘤,以便医生可以使用诊断工具来检测乳腺癌。在本例中,指定 0 为恶性,指定 1 为良性。将数据绘制在图表上,其中水平轴代表肿瘤的大小,垂直轴仅取两个值 0 或 1,具体取决于肿瘤是良性的 0 还是恶性的 1。

我们试图仅预测少量可能的输出或类别,在本案例中,两个可能的输出 0 或 1,即良性或恶性。这不同于试图预测任何数字的回归,其所有可能的数字为无限多。因此,只有两种可能的输出这一事实构成了这种分类。
因此,使用两个不同的符号来表示类别,其中圆圈表示良性,十字表示恶性。

注意:
在分类中,术语 Class 和 Category 经常互换使用,意思是一样的。
类别不必是数字,它可以是非数字的,例如,图片是猫还是狗、肿瘤是良性还是恶性。
类别也可以是数字,例如 0、1 或 0、1、2。
这种情况下,分类与回归的不同之处在于:分类预测的是可能输出类别的有限有限集合,例如 0、1 和 2,但不是介于两者之间的所有可能数字,例如 0.5 或 1.7。
另一个案例是,您的新数据集现在有两个输入:年龄和肿瘤大小。在这个新数据集中,使用圆圈表示肿瘤为良性的患者,用十字表示肿瘤为恶性的患者。当有新病人进来时,医生可以测量病人的肿瘤大小,也可以记录病人的年龄。鉴于此,我们如何预测该患者的肿瘤是良性还是恶性?

学习算法可能会做的是找到一些将恶性肿瘤与良性肿瘤分开的边界,来帮助医生进行诊断。
2 无监督学习
2.1 聚类
监督学习在分类问题中如下图(左)所示,每个示例都与一个输出标签 y(良性或恶性)相关联,我们希望通过给定已有标签,得到未知数据的正确答案。
而在无监督学习中,给定的数据与任何输出标签 y 无关。我们的目的是找到数据中隐含的结构或模式,或其他一些有趣的东西。因此,我们不需要给出任何标签。

无监督学习算法可能会决定将数据分配给两个不同的组或两个不同的集群,称为**聚类**算法,如上图(右)所示。
例如,google news 用的是聚类,查看互联网上数十万篇新闻文章,并将相关内容组合在一起。

有趣的是,这种聚类算法会自行计算出哪些词暗示某些文章属于同一组。也就是说,谷歌新闻中没有一名员工告诉算法查找包含 panda 一词的文章、或者将 twins、zoo 放到同一个集群里,因为新闻话题每天都会发生变化。该算法必须在没有监督的情况下自行计算出今天的新闻文章有哪些。
另一个案例应用于聚类遗传或 DNA 数据。下图显示了 DNA 微阵列数据,看起来像微小的电子表格,每个小柱子代表一个人的遗传或 DNA 活动。红色、绿色、灰色等颜色显示了不同个体具有或不具有特定基因活性的程度,通过聚类算法,可以将个体分组到不同的类别中。

无监督学习没有提前告诉算法,没有指出一种人具有某些特征 A,另一种人具有某些特征 B。我不知道不同类型的人是什么,而是通过无监督学习自动找到数据间存在的隐含结构。
最后一个案例客户信息分类,通过将客户分组到不同的细分市场,以便更有效地为客户服务。例如,一类群体的主要动机是寻求知识以提高他们的技能;一类人的主要动机是寻找发展他们职业的方法;而另一类人想随时了解 AI 如何影响他们的工作领域。

2.2 异常检测
异常检测用于检测异常事件,这对于金融系统中的欺诈检测非常重要,异常事件、异常交易可能是欺诈的迹象。
2.3 降维
降维可以将一个大数据集神奇地压缩成一个小得多的数据集,同时丢失尽可能少的信息。

3 使用 Jupyter Notebook
Pycharm 中自带捆绑了 Jupyter Notebook 。
在 Jupyter Notebook 中,有 2 种单元格类型,分别为:
- Markdown:用于展示和描述内容。
- Code:用于编写并运行代码。

点击 Code 旁的执行按钮,运行代码得到结果。
