简介
机器学习是一本博大和有趣的学问,意在通过机器的方式在不需要人类过多干预下,完成特定的某项目标。由于深度学习出色发挥,机器学习,深度学习出现很多机器学习方式完成的产品和项目。
这次学习也是完成一直以来的拖沓目标。理解机器学习的数学体系基础,算法实现基础,掌握技术使用技巧。
这里要写出机器学习理念的总纲,来源于《机器学习导论》Ethem Alpaydin
智能并非源于某些稀奇古怪的公式,而是源于简单,直接了当的算法和近乎蛮力的使用。
这句话并非一句虚言,在今后的使用中我们会慢慢体会到这一点,关于机器学习应用方向在这里做一些简单介绍
- 统计学估计,判别式分信息
- 人工智能相关,视觉识别,语音识别,文本分析,价值判断。 隐马尔可夫模型(Hidden Markov Model,HMM)对语音识别发展。
- 神经网络,深度学习
- 核函数,支持向量机 Kernel-SVM
- 生成模型(Generative Model)通过一组隐藏因子相互影响来解释观测数据。图模型(Graphical Model)用来对这些因子和数据项目影响进行可视化。贝叶斯形式化机制是(Bayesian Formalism)定义隐藏因子和模型上的先验信息,推导模型参数。
- 数据挖掘,综合性应用方式
序、基础应用
- 学习相关性
- 分类(Classification)
2.1 金融方向客户分类
2.2 模式识别(Patter Recognition) 比方说 光学字符识别(Optical Character Recognition,ORC)
2.3 文本语义识别,语音识别(Speech Recognition),自然语言处理(Natrual Language Processsing),机器翻译(Machine Translation)
2.4 人脸识别(Face Recongnition)
2.5 医学诊断(Speech recognition)
2.6 生物测定学(Biometrics)使用人类的生理特征和行为特征来识别人的身份。比如生理特征包括,面部图像,指纹,掌纹,虹膜;行为特征包括书写
习惯,嗓音,步态,键盘敲击方式。
2.7 知识抽取(Knowledge Extraction),压缩(Compression),拟合数据规则,减少数据记忆。
2.8 离群点检测(Outlier Detection),寻找不规则,例外的实例,比如诈骗。也可能是从未识别的,新颖且合理的情况。在这种情况下离群点检测又称为新颖检测(Novelty Delection) - 回归
3.1 线性回归 y = w x + w 0 y=wx+w_0 y=wx+w0,提高函数幂数完成更切合拟合
f ( x ) = ∑ k = 0 , … , n w k x k f(x)=\sum_{k=0,\dots,n}w_k x^k f(x)=∑k=0,…,nwkxk
3.2 响应面设计(Response Surface Design),通过新的数据增加,拟合新的模型
3.3 推荐系统(Recommenddation System),比方说根据用户的喜好,推荐适合的电影,形成排名(Ranking) - 非监督学习
4.1 密度估计(Density Estimation),最长用的做法是聚类(Clustering)
4.2 客户关系管理(Customer Relationship Manager)
4.3 图像压缩(Image Compression),利用统计方式压缩图像储存所需要的信息密度
4.4 文档聚类(Document Clustering),目标是把相似的文档分组
4.5 生物信息分组(Bioinformatics), DNA序列识别 - 增强学习(Reinforcement Learning)
在游戏方面,主要是动作(Action)和策略(Policy)识别,即达到目标正确动作序列。
5.1 完整信息博弈(象棋,军旗,等等)
5.2 不透明信息博弈(德州扑克,斗地主,等等)
5.3 多智能价值博弈(Multiple Agents)
一、线性回归
为什么我们要从线性回归开始,线性回归可说是回归学习方式基础,后续学习方法都可以用到线性回归中的所需要思想体系,
下面将会从线性回归开始,介绍机器学习使用的一些相关方法。
针对二维数据最简单的线性模型就是
y
=
w
x
+
w
0
y=wx+w_0
y=wx+w0,
从一个回归任务开始,逐步揭开机器学习的神秘面纱,请看下图:
这是一个电子商务销售量和在线广告费用一个相关关系,通过数据特征我们定义数据为
D
=
{
x
i
,
y
i
}
i
=
1
N
\mathcal{D}=\{\mathbf{x}_i,y_i\}_{i=1}^{N}
D={xi,yi}i=1N ,其中:
- N N N为训练样本数目,
- i i i为样本索引,
- x i \mathbf{x}_i xi 为第 i i i 个样本的输入特征,
- y i y_i yi为第 i i i个样本的输出/响应, y i ∈ R y_i \in R yi∈R
对于回归任务,根据训练样本
D
\mathcal{D}
D,学习一个映射
f
f
f表示输入
x
\mathbf{x}
x与输出
y
y
y的关系
而后通过新的数据
x
\mathbf{x}
x,通过映射
f
f
f预测
y
^
=
f
(
x
)
\hat{y}=f(\mathbf{x})
y^=f(x)
对于线性回归来说,我们假定输入 x \mathbf{x} x与输出 y y y之间为线性关系,即
y = f ( x ) = w τ x = [ w 0 w 1 … w D ] [ 1 x 1 … x D ] = w 0 + ∑ j = 1 D w i x i \begin{aligned} y&=f(\mathbf{x})\\ &=\mathbf{w^{\tau}x}\\ &= \left[ \begin{array} {ccc} w_0&w_1&\dots&w_D\end{array} \right] \left[ \begin{array} {ccc} 1 \\ x_1 \\ \dots \\ x_D\end{array} \right]\\ &= w_0 + \sum_{j=1}^{D}w_ix_i \end{aligned} y=f(x)=wτx=[w0w1…wD]⎣⎢⎢⎡1x1…xD⎦⎥⎥⎤=w0+j=1∑Dwixi
- D D D是特征维数
- j j j特征索引
- w , x \mathbf{w,x} w,x分别为特征权重和特征数据,增加一个常数项1 用于表示截距, x = ( 1 , x 1 , x 2 , … , x D ) τ \mathbf{x} = (1,x_1, x_2, \dots, x_D)^{\tau} x=(1,x1,x2,…,xD)τ
定义好计算公式我们回到最初的问题,如何将电子销售的数据转换成特征值映射
f
f
f,先看一下数据的散点图
这里数据太少不太清晰,如果增多数据我们可以看到目标上的数据都会收敛到一条直线上,示例图如下:
这里已经是一个相对完美的回归模型,在某种程度上可一个作为结果使用,通过
y
=
123.94
+
167.80
×
x
y=123.94 + 167.80 \times x
y=123.94+167.80×x得出
y
^
=
593.78
\hat{y} = 593.78
y^=593.78,关系如下:
通过上图直观的认识,可以清晰理解映射 f f f在二维数据,单一特征下是什么样子.
那么数据中心 w 0 = 123.94 , w 1 = 167.80 w_0 = 123.94, w_1=167.80 w0=123.94,w1=167.80是如何而来?
请听下回分解
数据公式来源参考CSDN学院人工智能学习班参考
线性回归模型优劣度量-RSS(残差平方和)
RSS (Residual Sum of Squares ) 残差平方和是一种有效的统计回归函数拟合效果的一种计算式,线性回归的整体目的就是找到映射 f ( x ) f(\mathbf{x}) f(x),使得RSS对应整个数据最小。
首先我们解释一下什么RSS:
R
S
S
=
∑
i
=
1
N
r
i
2
=
∑
i
=
1
N
(
y
i
−
y
^
i
)
2
RSS=\sum_{i=1}^{N}r_i^2=\sum_{i=1}^{N}(y_i-\hat{y}_i)^2
RSS=i=1∑Nri2=i=1∑N(yi−y^i)2
- r i = y i − y ^ i r_i=y_i-\hat{y}_i ri=yi−y^i就是残差,真是和预测值之间的差异
- 使用
r
i
2
r_i^2
ri2是就是取数据的方差,规避正负值相加抵消的情况,切扩大不规则差异数值.
例如 f a ( x ) f_a(\mathbf{x}) fa(x)的残差 -2, 2, f b ( x ) f_b(\mathbf{x}) fb(x)的残差 -1,3,
f a f_a fa的残差平方和 R S S a = ( − 2 ) 2 + 2 2 = 8 RSS_a=(-2)^2+2^2=8 RSSa=(−2)2+22=8
f b f_b fb的残差平方和 R S S b = ( − 1 ) 2 + 3 2 = 10 RSS_b=(-1)^2+3^2=10 RSSb=(−1)2+32=10
在残差范数和 R S A a = ∣ − 2 ∣ + ∣ 2 ∣ = 4 , R S A b = ∣ − 1 ∣ + ∣ 3 ∣ = 4 RSA_a=|-2|+|2|=4, RSA_b=|-1|+|3|=4 RSAa=∣−2∣+∣2∣=4,RSAb=∣−1∣+∣3∣=4相等的情况,越均衡的数据,约符合回顾函数。
绿色直线在训练集上的 R S S = ( − 41.20 ) 2 + ( − 35.64 ) 2 + ( 33.92 ) 2 + ( − 8.92 ) 2 + ( − 11.08 ) 2 + ( − 62.91 ) 2 = 8277.32 RSS=(-41.20)^2+(-35.64)^2+(33.92)^2+(-8.92)^2+(-11.08)^2+(-62.91)^2=8277.32 RSS=(−41.20)2+(−35.64)2+(33.92)2+(−8.92)2+(−11.08)2+(−62.91)2=8277.32
蓝色直线在训练集上的 R S S = ( 14 ) 2 + ( 10 ) 2 + ( 70 ) 2 + ( 204 ) 2 + ( 25 ) 2 + ( 142 ) 2 = 67601 RSS=(14)^2+(10)^2+(70)^2+(204)^2+(25)^2+(142)^2=67601 RSS=(14)2+(10)2+(70)2+(204)2+(25)2+(142)2=67601
明显绿色直线的RSS小于蓝色直线RSS,结论绿色直线更符合数据样本的拟合效果
RSS是一种很好的度量,表示拟合线性回归对数据关系的拟合效果,我们称能度量方式为回归的损失函数
损失函数(Loss Function)
L2损失
当损失函数使用RSS时,我们简称为L2损失,顾名思义,二次幂的损失函数。
L
(
y
,
y
^
)
=
(
y
−
y
^
)
2
=
r
2
L(y,\hat{y})= (y-\hat{y})^2=r^2
L(y,y^)=(y−y^)2=r2
目标函数:训练集上的损失函数嘴角(经验风险最小)
m i n ( ∑ i = 1 N L ( y , y ^ ) ) = m i n ( ∑ i = 1 N r 2 ) min(\sum_{i=1}^{N}L(y,\hat{y}))=min(\sum_{i=1}^{N}r^2) min(i=1∑NL(y,y^))=min(i=1∑Nr2)
L2损失处处可导,在计算梯度时可以做优化计算,但是由于2次幂的原因,会扩大噪声的影响,对噪声敏感
L1损失
当我们讲RSS改为RSA时,将二次幂换成绝对值,我们就得到了L1损失。
L
(
y
,
y
^
)
=
∣
y
−
y
^
∣
=
∣
r
∣
L(y,\hat{y})= |y-\hat{y}|=|r|
L(y,y^)=∣y−y^∣=∣r∣
相对L2损失,L1损失对噪声不敏感,由于绝对值角点的特性会在极值处产生角点,所以在做梯度计算时不方便优化
结合L1和L2损失的有点,得到Huber损失:
Huber损失
L δ ( r ) = { 1 2 r 2 ∣ r ∣ ≤ δ δ ∣ r ∣ − 1 2 δ o t h e r w i s e L_\delta(r)=\begin{cases} \frac{1}{2}r^2&|r|\le \delta \\ \delta|r|-\frac{1}{2}\delta&{otherwise} \end{cases} Lδ(r)={21r2δ∣r∣−21δ∣r∣≤δotherwise
拟合
之前反复的提到了拟合这个词汇,其定位回归和函数和真实数据之间的相似度。
为什们要单独列出来一节专门讲解相似度这个事情?
通过多次项分布线性回归
f
(
x
)
=
w
0
+
∑
j
=
1
D
w
i
x
i
f(\mathbf{x})= w_0 + \sum_{j=1}^{D}w_ix_i
f(x)=w0+j=1∑Dwixi
首先我们看四张图
这几个模式很好的诠释不同的拟合状态,
- 0阶多项式和1阶多项式明显 f ( x ) f(x) f(x) 没有办法很好表示数据分布情况,且损失函数得出误差与数据差距较大,我们称这种情况为欠拟合
- 9阶多项式同样明显f(x)f(x) 没有办法很好表示数据分布情况,且损失函数得出误差与数据差距较较小,我们称这种情况为过拟合
- 3阶多项式便属于一种比较优秀的拟合状态,那么3阶多项式就很好的表示数据的分布函数
这个从最直观的角度介绍如何拟合、欠拟合、过拟合的代表的含义,那么数学定义上如何计算一个严谨的方案
误差(RMS)
E r m s = 1 N ∑ i = 1 N r 2 E_{rms}=\sqrt{\frac{1}{N}\sum_{i=1}^{N}r^2} Erms=N1i=1∑Nr2
通过计算误差RSS均值,开平方降幂得到一个对不同数据都相对公平的差异计算方式。
在上图集合函数,表示一下在训练误差(Training)和 测试误差(Test)的变化曲线。
蓝色便是训练误差的变化曲线,红色是测试误差变化曲线
- 通过简单的分析我们了解到在 D<3 时,随着D的增加,训练误差和测试误差都有下降的趋势。
- 在数据到 3<D<9时,训练误差和测试误差的变化都接近水平
- 反而D=9时,训练误差为0, 测试误差却急剧增加。
那么(1)的情况就是欠拟合,训练误差和测试误差都比较大,(3)的情况就是过拟合,训练误差几乎为0,测试误差巨大无比,在人类任职情况下就是钻了牛角尖,认死理。
提一句,增加驯良样本,可也以减少高阶多项式过拟合现象。
当然很多情况, 训练数据和测试数据都是有限集,如何通过一种方法减弱过拟合现象?
正则化(Regularizer)
参考
https://www.zhihu.com/question/20924039
https://charlesliuyx.github.io/2017/10/03/【直观详解】什么是正则化/
我们取出误差的计算的主体:
R
e
m
p
(
f
(
x
)
)
=
∑
i
=
1
N
L
(
y
,
y
^
)
R_{emp}(f(x))=\sum_{i=1}^{N}L(y,\hat{y})
Remp(f(x))=i=1∑NL(y,y^)
- R e m p R_{emp} Remp可以称之为经验风险,表示现有的 f ( x ) f(x) f(x)的先验误差
上面的一小节讨论过单独以经验风险作为评估很容易出现过拟合的现象,所以而且在3<D<9的情况下,经验风险对于数据几乎没有变化。增加多项式的项数反而扩大
f
(
x
)
f(x)
f(x)的复杂度,所以我们需要一个方法平衡方程结构复杂度,定义结构风险
R
s
m
p
(
D
)
=
∑
j
=
i
D
∣
w
j
∣
q
R_{smp}(D)=\sum_{j=i}^{D}|w_j|^q
Rsmp(D)=j=i∑D∣wj∣q
- R s m p R_{smp} Rsmp是结构风险
- q q q是结构风险系数
最终的我们需要评估的风险就是:
L
(
w
,
λ
)
=
R
e
m
p
+
λ
R
s
m
p
=
∑
i
=
1
N
L
(
y
,
y
^
)
+
λ
∑
j
=
i
D
∣
w
j
∣
q
\begin{aligned} L(w, \lambda) &= R_{emp} + \lambda R_{smp} \\ &= \sum_{i=1}^{N}L(y,\hat{y}) + \lambda \sum_{j=i}^{D}|w_j|^q \end{aligned}
L(w,λ)=Remp+λRsmp=i=1∑NL(y,y^)+λj=i∑D∣wj∣q
- λ \lambda λ 是就是结构风险权重,经验所得 λ = − 18 \lambda=-18 λ=−18时效果最好
所以说在经验风险的基础上加上结构风险的评估,就是正则化,所需要求得的就是找到 f ( x ) f(x) f(x)使得 L ( w , λ ) L(w, \lambda) L(w,λ)最小
正则化得实质就是保证拟合效果和结构简单 (奥卡姆剃刀原则)
的双向平衡。
那么从视觉角度理解一下
R
s
m
p
R_{smp}
Rsmp代表的含义:
假定
D
=
2
D=2
D=2,就是一个平面(二维)内的点
q
=
0.5
,
1
,
2
,
4
q = 0.5, 1, 2, 4
q=0.5,1,2,4 将公式描述在平面直角坐标系内:
假定
D
=
3
D=3
D=3,内的点
q
=
0.5
,
1
,
2
,
4
q = 0.5, 1, 2, 4
q=0.5,1,2,4 将公式描述在平面直角坐标系内, 将函数映射到空间坐标系中:
同理Z轴俯视图是便可以观测到
L
(
w
,
λ
)
L(w, \lambda)
L(w,λ)的等高线,z轴表示的是正则项项的值
同样将
R
e
m
p
+
λ
R
s
m
p
R_{emp} + \lambda R_{smp}
Remp+λRsmp表示在坐标图内:
蓝色的圆圈表示没有经过限制的损失函数在寻找最小值过程,经验风险函数 R e m p R_{emp} Remp的投影, w w w的不断迭代(随最小二乘法,最终目的还是使损失函数最小)变化情况,表示的方法是等高线,
- z轴的值就是 E ( w ) E(w) E(w)取值
- w ∗ w^* w∗表示最小值取到的点
红色的圆圈便是结构风险的投影 R s m p R_{smp} Rsmp, 我们的目标函数(误差函数)就是求蓝圈+红圈的和的最小值,而这个值通在很多情况下是两个曲面相交的地方
正则项的目标就是限制模型的复杂度,即 R s m p R_{smp} Rsmp中D的大小,D是模型的阶次,D越大意味着需要决定的权重越多,所以模型越复杂。在多项式模型多,直观理解是每一个不同幂次的 x 前的系数,0(或很小的值)越多,模型越简单。这就从数学角度解释了,为什么正则化(规则化)可以限制模型的复杂度,进而避免过拟合
L1正则、L2正则
所谓L1正则、L2正则便是q在不同取值时的一个特定称谓
当 q = 1 q=1 q=1时, R s m p ( D ) = ∑ j = i D ∣ w j ∣ R_{smp}(D)=\sum_{j=i}^{D}|w_j| Rsmp(D)=∑j=iD∣wj∣,便是L1正则
当 q = 2 q=2 q=2时, R s m p ( D ) = ∑ j = i D ∣ w j ∣ 2 R_{smp}(D)=\sum_{j=i}^{D}|w_j|^2 Rsmp(D)=∑j=iD∣wj∣2,便是L2正则
从上图不难看出
L2正则项投影是一个近圆形,其优势为处处可导,方便计算
L1正则是一个带有拐点的矩形,不能处处可微,这在后续的计算中带来了一定的难度,
w
∗
w^∗
w∗ 的位置恰好是
w
1
=
0
w1=0
w1=0 的位置。
虽然正则项都能降低模型复杂度,防止过拟合,对于L2正则来说,L1正则由于没有扩大幂数,可以使这整个模型在这一方面做得更加彻底,更加稀疏,很多厉害的论文都是巧妙的使用了L1正则项写出来的,效果十分强大。
下一章介绍一下关于 L ( w , λ ) L(w, \lambda) L(w,λ)计算即优化