2.3 监督机器学习
监督学习对数据集进行转换
监督学习是一种将一个数据集转换成另一个数据集的方法。例如,如果你有一个名为“周一股价”的数据集,它记录了过去10年里每一只股票的价格,还有一个名为同一时段内的“周二股价”的数据集。那么我们可以尝试使用监督学习方法,使用其中一个来预测另一个(这并不是一个好主意,只是一个简单的例子)。
@startuml
!include ./plantuml_C4/c4_context.puml
!include ./plantuml_C4/c4_container.puml
!include ./plantuml_C4/full-plantuml.puml
LAYOUT_LEFT_RIGHT
Container(Input, "输入数据", "周一股价")
Container(Algo, "算法", "监督学习")
Container(Output, "输出数据", "周二股价")
Rel(Input, Algo, "输入")
Rel(Algo, Output, "输出")
@enduml
如果你在十年的周一与周二数据上成功地训练了监督机器学习算法,那么给定任何一个周一的股价,就可以预测紧接着的周二的股价。我希望你现在可以停下来认真思考一下这个问题。
监督机器学习属于应用人工智能(也被称为弱人工智能)领域的一部分。对于将你所知道的东西作为输入,并快速地将其转换成你想知道的东西这一场景来说,它是很有用的。它允许监督机器学习算法以看起来无穷无尽的方式延申人类的智力和能力。
机器学习的大部分工作都是训练某种监督分类器。甚至我们常会用无监督机器学习(稍后会谈及)来协助开发更精确的监督机器学习算法。
@startuml
!include ./plantuml_C4/c4_context.puml
!include ./plantuml_C4/c4_container.puml
!include ./plantuml_C4/full-plantuml.puml
LAYOUT_LEFT_RIGHT
Container(Input, "你知道的","数据")
Container(Algo, "监督学习","算法")
Container(Output, "你想知道的","预测结果")
Rel(Input, Algo, "输入")
Rel(Algo, Output, "输出")
@enduml
监督学习的输入数据是已经贴好标签的数据,它通过逻辑分析将输入数据转换为有价值的输出数据。
2.4 无监督机器学习
无监督学习对数据进行分组
无监督学习与有监督学习有一个共同的特性:它将一个数据集转换为另一个数据集。但是它转换得到的数据集不是已知的。不像监督学习,对于你想建立的模型来说,并不存在一个你希望得到的“正确答案”。你只需要告诉一个无监督算法:“在这些数据中找到某种模式,然后告诉我它是什么。”
举个例子,将数据集进行聚类就是一种无监督学习。聚类算法将一系列的数据点转换为对应的一系列的类别标签。如果它学习到了10个类别,通常就会用数字1~10进行相应的标记。每个数据点都将被打上它所在类别的数字标签。因此,数据集将从一堆数据点转换为一堆标签。通常这些数字标签必须要靠人去辅助定义,给它们各自的名字。计算机实际上是在告诉你:“嗨,伙计。我发现了一些结构,看起来你的数据集可以被划分为几类。”
@startuml
!include ./plantuml_C4/c4_context.puml
!include ./plantuml_C4/c4_container.puml
!include ./plantuml_C4/full-plantuml.puml
LAYOUT_LEFT_RIGHT
Container(Input, "一系列数据点","数据")
Container(Algo, "无监督学习","算法")
Container(Output, "一系列聚类标签","分类结果")
Rel(Input, Algo, "输入")
Rel(Algo, Output, "输出")
@enduml
实际上,狭义的无监督学习就可以看作是聚类。尽管无监督学习包含很多种算法,但所有的无监督学习都可以看作是某种形式的聚类。
@startuml
!include ./plantuml_C4/c4_context.puml
!include ./plantuml_C4/c4_container.puml
!include ./plantuml_C4/full-plantuml.puml
LAYOUT_LEFT_RIGHT
Container(Input, "小狗\n披萨\n小猫\n热狗\n汉堡","数据")
Container(Algo, "无监督学习","算法")
Container(Output, "1\n2\n1\n2\n2","分类结果")
Rel(Input, Algo, "输入")
Rel(Algo, Output, "输出")
@enduml
看看这个例子。尽管算法并没有告诉我们每个类别的名称,但是你能弄明白如何把单词组合在一起吗?答案很简单:1代表宠物,2代表食物。稍后,我们将讲解为什么其他形式的无监督学习也只是某种形式的聚类,以及为什么聚类的结果能够对监督学习起到帮助作用。
网友评论