机器学习的概述
诞生
现实生活许多领域的问题不能通过显式编程实现,比如制造自动驾驶汽车、智能工厂、规模农业、计算机视觉等等,一种好的实现方式是通过学习算法让计算机自己学习如何做。
现在
现在是学习机器学习最好的时机,因为机器学习在未来能产生巨大的价值
未来
- 机器学习在软件领域方面取得了巨大的价值,比如智能推荐,网络搜索,图像识别等
- 机器学习在许多其他的领域仍有巨大的价值,比如未来在自动驾驶汽车,工厂,农业,医疗等方面产生巨大的价值
机器学习定义
定义
计算机不需要显式编程的情况下能够自己学习的领域
感悟
- 掌握学习算法很重要,但是更重要的是如何运用学习算法解决实际问题。
- 假如把学习算法比作成一套工具,那么首先你得拥有这一套工具,其次是你要掌握如何使用这套工具(即学习算法的实用技巧)。
监督学习和无监督学习导图
监督学习(supervised learning)
定义
给定一个数据集(学习算法示例),这个数据集包含输入和输出;学习算法通过学习输入 x x x,输出标签 y y y,输入 x x x 到输出标签 y y y 的映射;这时给定一个新的输入 x x x(没有输出标签 y y y 的值),学习算法给出输出标签 y y y 准确的预测值。
种类
- 监督学习包括回归和分类。
- 什么是回归?即预测输出标签 y y y 是一个数字,这个数字有无限多种可能。
- 什么是分类?即预测输出标签
y
y
y 是一种类别,这种类别是有限多种可能(比如2种或者3种)。
示例
回归示例
房价预测
现在有一个数据集,横坐标表示房子大小,纵坐标表示房子价格;现在你的朋友有一个750平方英尺的房子,请你预测一下房子的价格是多少?
分析: 这是一个回归的例子,因为我们拟合不同的函数,会得到不同的房价。
若拟合的是一条直线,可以得出房子的预售价格是
150
k
150k
150k 美元,若拟合的是一条曲线,可以得出房子的预售价格是
200
k
200k
200k 美元,若拟合其他的函数,还可以得出其他的房价,比如
170
k
170k
170k 美元。
因此这是一个回归的典型示例,房价是一个输出标签值,但是它有无限种可能的输出,取决于我们拟合不同的函数。
分类示例
肿瘤检测
现在有一个数据集,横坐标表示肿瘤大小,纵坐标表示肿瘤是恶性(1表示)还是良性(0表示),现在某个病人身上有一个肿瘤,请通过学习算法判断该肿瘤是良性还是恶性的?
分析: 这是一个分类的例子,因为输出标签的值要么是良性,要么是恶性;输出标签有2种可能,所以是分类的示例。
请观察下图:
这里输出标签的值有三种可能:良性、恶性1、恶性2;输出有3种可能,是分类的典型示例。
多输入分类问题
上面的例子输入均只有一个值,事实上可以有多个输入值。以上面肿瘤检测为例,输入病人的年龄和肿瘤大小,现在给定一个病人肿瘤的详细信息,请利用学习算法判断肿瘤是良性还是恶性?
分析:
学习算法需要拟合出一条边界,针对新的肿瘤,推测该肿瘤是良性还是恶性。若学习算法推测出粉红色线条是边界,针对粉红色的肿瘤,可以判断该肿瘤大概率是良性肿瘤。
无监督学习(unsupervised learning)
定义
给定一个数据集,输入的数据没有标签(即没有正确的算法学习示例),学习算法尝试找到数据隐含的结构或模式,然后做出一系列的分析。
看到这里可能你还是会有一点懵圈,接下来我将无监督学习和监督学习做一个比较你就明白了。
无监督学习和监督学习比较
以肿瘤检测的输入数据为例,监督学习中给定的数据和输出标签
y
y
y 相关,即良性或恶性(算法的学习示例给出了哪一个数据被归到哪一个类别),而无监督学习中给定的数据和输出标签
y
y
y 无关,学习算法需要寻找数据集隐含的模式或结构,从而将具有相同特征的数据自动归为某一类,具有不同特征的数据被归到不同的类别中,这种无监督学习又称为聚类算法(clustering algorithm)。
种类
- 常见的无监督学习有以下几种,分别是聚类算法(Clustering)、异常检测(Anomaly detection)、降维(Dimensionality reduction)。
- 什么是聚类算法? 学习算法获取没有标签的数据并且尝试将它们自动分组到集群中。
- 什么是异常检测?顾名思义异常检测就是检测异常事件,这在应用程序中应用非常广泛,比如金融系统检测是否存在欺诈。
- 什么是降维?给定一个很大的数据集,将数据集压缩成一个很小的数据集并且尽可能少的丢失信息。
示例
聚类示例
一:谷歌新闻聚类
面对每天数百万的新闻词条,谷歌公司的程序员并没有编写程序将含有熊猫、动物园、双胞胎词条的文章放在一个集群,而是学习算法在无监督的情况下(输入的新闻文章没有被标记),自动将具有相似特征的文章放在一个集群中。
二:DNA微阵列
这是一个DNA微阵列图,图中的每一列代表一个人所有的基因,每一行代表某种特定类型的基因,比如表示眼睛的基因,图中的不同颜色表示不同基因的活跃程度,数据没有被打任何标签,学习算法需要尝试将这些数据分组到不同的集群中,比如说图中的
t
y
p
e
1
type1
type1、
t
y
p
e
2
type2
type2、
t
y
p
e
3
type3
type3;输入的数据并没有告诉学习算法将数据集分成多少人群,哪些人聚合到一类,但是学习算法能在无监督的情况下自动聚类。
三:顾客分组
这是一个顾客的数据集,学习算法在无监督的情况下自动将数据分组到不同的集群,这样做的目的是更好的进行市场划分,瞄准目标,投其所好;比如人群
A
A
A的共同特征是通过学习知识和技能提升自己,人群
B
B
B的共同特征是通过升职和加薪获得事业上的成功;针对不同的人群推送不同的广告,文章,追求更高的经济价值。
线性回归模型
机器学习常见术语
- 训练集:机器学习模型用于训练和学习的数据集
- x x x = 输入变量 = 输入特征(简单的机器学习模型使用单个输入特征,复杂的机器学习模型使用多个输入特征)
- y y y = 输出变量 = 目标变量 = 标签(标签可以是房价,照片中的物种等等)
- ( x , y ) (x, y) (x,y) 表示单个训练示例
- m m m = 训练集单个训练示例的数量
- ( ( ( x ( i ) x^{(i)} x(i), y ( i ) y^{(i)} y(i) ) ) ) 表示训练集中第 i i i 个训练示例
- y ^ ŷ y^ 表示对 y y y 的估计或预测
- 模型:模型定义了输入特征和目标变量之间的关系,比如房价预测中模型会将输入的特征和房价紧密相联系起来,模型生命周期有两个重要的线路,接下来我重点说一下这两条线路(可以结合我下面画的图理解):
(1)训练:即将训练集输入到学习算法中,学习算法不断学习输入特征和目标变量之间的关系,最终创建出模型,我们一般用 f f f 表示
(2)推断:即将训练好的模型获取新的输入 x x x(没有标签),通过模型计算后,输出目标变量 y y y 的预测值 y ^ ŷ y^。
监督学习的工作过程
训练集包括输入特征和输出变量,因此若要训练模型,需要将训练集的输入特征和输出变量输入到学习算法;学习算法不断学习输入特征和目标变量之间的关系,最终,你的学习算法会产生一些功能
f
f
f,我们把这个功能称作为模型,然后模型
f
f
f 会接受新的输入特征
x
x
x,通过模型计算后,输出目标变量
y
y
y 的预测值
y
^
ŷ
y^。
问题:如何表示函数
f
f
f
这里我们暂定用线性函数表示
f
f
f,即
f
(
x
)
=
w
∗
x
+
b
f(x) = w * x + b
f(x)=w∗x+b,事实上我们也可以选择其它的函数拟合,因为这里我们讨论线性模型,所以用线性函数。