绪论
机器学习是通过数据改善学习算法(模型)的手段.
数据集
1. 样本:对于数据集的采样;
2. 特征:每个样本的信息;
3. 样本空间:样本的属性构成的空间;
4. 特征向量:特征在样本空间中所对应的信息.
模型
·有监督学习
1. 分类:二元分类, 多分类.预测结果为离散值
2. 回归:预测结果为连续值
·无监督学习
1. 聚类:样本无标签
奥卡姆剃刀: 若有多个假设与观察一致,则选择最简单的那个.(减小方差Variance)
NFL(No free lunch):脱离具体问题谈论算法优越性毫无意义.
模型评估与选择
经验误差与过拟合
经验误差:模型在训练集上的误差;
过拟合:模型在训练集上表现出色,但缺少泛化能力导致在测试集上表现不佳的现象.
评估方法
通过对模型的泛化误差进行评估进而做出选择.注意,测试集和训练集需要保持互斥.
- 留出法:需要保持数据分布的一致性;多次随机划分取平均值.
- K折交叉验证:将数据集随机平均划分k个子集,每次取一个子集为测试集,其余的为训练集,结果取k次测试的平均值.
- 自助法:随机对数据集采样生成数据子集D’作为训练集,D-D’作为测试集.(改变数据分布,会引入估计偏差)
- 调参与最终模型:数据集中划分验证集用于模型的调参与选择.
性能度量
-
回归任务
均方误差(Mean squared error)
E ( f ; D ) = 1 m ∑ i = 1 m ( f ( x i ) − y i ) 2 E(f;D)=\frac{1}{m}\sum^{m}_{i=1}(f(x_{i})-y_{i})^{2} E(f;D)=m1i=1∑m(f(xi)−yi)2 -
分类问题
错误率与精度
错误率 : E ( f ; D ) = 1 m ∑ i = 1 m ( f ( x i ) ≠ y i ) 精度 : a c c ( f ; D ) = 1 m ∑ i = 1 m ( f ( x i ) = y i ) a c c ( f ; D ) = E ( f ; D ) \begin{aligned} 错误率:E(f;D) = \frac{1}{m}\sum^{m}_{i=1}(f(x_{i})\neq y_{i})\\ 精度:acc(f;D) = \frac{1}{m}\sum^{m}_{i=1}(f(x_{i})= y_{i})\\ acc(f;D) = E(f;D) \end{aligned} 错误率:E(f;D)=m1i=1∑m(f(xi)=yi)精度:acc(f;D)=m1i=1∑m(f(xi)=yi)acc(f;D)=E(f;D)
查准率、查全率与F1Notation: TP真正例:真实为真,预测为真; TN真反例:真实为假,预测为假; FP假正例:真实为假,预测为真; FN假反例:真实为真,预测为假.
查准率 P = T P T P + F P 查准率P = \frac{TP}{TP + FP}\\ 查准率P=TP+FPTP
查全率 R = T P T P + F N 查全率R = \frac{TP}{TP + FN} 查全率R=TP+FNTP
查全率和查准率相互矛盾,需要用一个标准来综合考虑两者的性能:
F 1 = 2 × P × R P + R F1 = \frac{2\times P\times R}{P + R} F1=P+R2×P×R
将F1进行推广,以表达对于P和R的不同偏好:
F β = ( 1 + β 2 ) × P × R ( β 2 × P ) + R F_{\beta} = \frac{(1+\beta^{2})\times P\times R}{(\beta^{2}\times P) + R} Fβ=(β2×P)+R(1+β2)×P×R
其中,β度量了P和R的相对重要性:β>1时查全率R更重要;β<1时查准率P更重要.- 此外面对多个二分类问题时,先求PR再算平均所得为宏F1(macro-F1);先计算平均再求PR所得为微F1(micro-F1)
ROC和AUC
ROC曲线是用来研究学习器泛化性能的工具.
按预测结果排序,按此顺序为各样本计算TPR(真正例率)和FPR(假正例率).以TPR为纵轴,FPR为横轴绘制ROC曲线.AUC(Area under ROC curve)面积越大,说明曲线越偏向TPR,代表泛化性能越好.
T P R = T P T P + F N F P R = F P F P + T N TPR = \frac{TP}{TP + FN}\\ FPR = \frac{FP}{FP + TN} TPR=TP+FNTPFPR=FP+TNFP
假设ROC曲线是由(x_i, y_i)组成的,那么.
A U C ≈ 1 2 ∑ i = 1 m − 1 ( x i + 1 − x i ) ⋅ ( y i + y i + 1 ) AUC \approx \frac{1}{2}\sum^{m-1}_{i=1}(x_{i+1}-x_{i})·(y_{i}+y_{i+1}) AUC≈21i=1∑m−1(xi+1−xi)⋅(yi+yi+1)
而排序损失loss和AUC有一定关系——AUC=1-loss代价敏感错误率与代价曲线
为权衡不同类型错误所造成的不同损失,引入了“非均等代价”
则代价敏感错误率为各错误与对应代价权重乘积的均值.代价曲线表现了学习器的期望总体代价.其中每一个阈值代表一条曲线.我们希望最小化期望总体代价.
- 此外面对多个二分类问题时,先求PR再算平均所得为宏F1(macro-F1);先计算平均再求PR所得为微F1(micro-F1)
比较检验(大量概率论应用)
偏差与方差
同一模型在面对不同训练集所得表现也有不同,泛化误差可以作为模型性能的度量指标.
泛化误差可以分解为偏差、方差和噪声之和.
以下给出偏差、方差和噪声的含义:
- 偏差:度量了预期和实际的偏离程度,刻画了模型拟合能力;
- 方差:度量了同样大小训练集变动所导致的性能变化,刻画了数据扰动造成的影响;
- 噪声:表达了当前任务上任何算法所能达到的期望泛化误差最小值,刻画了任务本身难度.
线性模型
基本形式
f ( x ) = w T x + b f(x)=w^{T}x+b f(x)=wTx+b
线性回归
线性回归构造假设,目的是找到对应w和b参数使得均方误差最小
(
w
∗
,
b
∗
)
=
a
r
g
min
(
w
,
b
)
∑
i
=
1
m
(
f
(
x
i
)
−
y
i
)
2
(w^{*},b^{*}) = \underset{(w,b)}{arg\min}\sum^{m}_{i=1}(f(x_{i})-y_{i})^{2}
(w∗,b∗)=(w,b)argmini=1∑m(f(xi)−yi)2
将均方误差分别对w和b求偏导,并令其为零,解得w和b的最优解:
w
=
∑
i
=
1
m
y
i
(
x
i
−
x
ˉ
)
∑
i
=
1
m
x
i
2
−
1
m
(
∑
i
=
1
m
x
i
)
2
b
=
1
m
∑
i
=
1
m
(
y
i
−
w
x
i
)
w=\frac{\sum^{m}_{i=1}y_{i}(x_{i}-\bar{x})}{\sum^{m}_{i=1}x^{2}_{i}-\frac{1}{m}\left(\sum^{m}_{i=1}x_{i}\right)^{2}}\\ b = \frac{1}{m}\sum^{m}_{i=1}(y_{i}-wx_{i})
w=∑i=1mxi2−m1(∑i=1mxi)2∑i=1myi(xi−xˉ)b=m1i=1∑m(yi−wxi)
如果是多元线性回归,此时对矩阵进行相同步骤可以获得w和b的最优解:
(
w
,
b
)
=
(
X
T
X
)
−
1
X
T
y
(w, b) = (X^{T}X)^{-1}X^{T}y
(w,b)=(XTX)−1XTy
对数线性回归和广义线性回归
将原本的线性回归模型变成下列公式,等同于让exp(wx+b)逼近y.这就叫做对数线性回归.
l
n
y
=
w
T
x
+
b
lny=w^{T}x + b
lny=wTx+b
而对数线性回归只是广义线性回归中的一种特殊情况.广义线性回归通过联系函数g(·),将线性回归的预测值和真实标记进行非线性映射.
y
=
g
−
1
(
w
x
T
+
b
)
y = g^{-1}(wx^{T}+b)
y=g−1(wxT+b)
对数几率回归
对数几率回归往往被叫做“逻辑回归”.以Sigmoid函数作为非线性映射的广义线性模型能够将线性回归预测值和真实分类标记联系起来,实现分类任务.
S
i
g
m
o
i
d
F
u
n
c
t
i
o
n
:
y
=
1
1
+
e
−
z
Sigmoid\;Function: y = \frac{1}{1+e^{-z}}
SigmoidFunction:y=1+e−z1
对数几率回归无需考虑假设分布准确性,预测结果为正样本概率,有利于辅助决策.对率函数是凸函数,便于数值优化.
线性判别分析
LDA又称作Fisher判别分析:将样本点投影到给定直线,满足同类别投影点尽可能近,异类别投影点尽可能远.预测时,对样本点进行投影,根据投影点位判断样本类别.
多分类学习
多分类学习的基本思路是拆解法,其中最经典的又有三种:
- 一对一:将n个类别进行笛卡尔积,为所有可能的组合各训练一个分类器.预测结果从n(n-1)/2个分类结果中投票产生.
- 一对多:每次将一个类作为正例,其余作为反例,训练n个分类器.选择最大值作为预测结果.
- 多对多:若干正类,若干反类.需要编码技术,不多做理解.
类别不平衡问题
用线性分类器进行分类时,事实上时用预测值y和阈值进行比较.y实际上表达了正例的可能性,y/(1-y)成为几率.
分类器决策规则为:若几率>1,则判定为正例;
但训练集中正反例数目不同时,需要引入观测几率m+/m-:若几率大于观测几率,则判定为正例.
因此引入基本策略——“再缩放”:遵循线性分类器的决策时,满足正反例数目不同的状况,可得新几率
y
′
1
−
y
′
=
y
1
−
y
×
m
−
m
+
\frac{y^{'}}{1-y^{'}} = \frac{y}{1-y}\times\frac{m^{-}}{m^{+}}
1−y′y′=1−yy×m+m−
但有的时候观测几率不能有效推断出真实几率.此时有三种做法:
- 欠采样:去除不重要的反例,使正负样本数目接近;
- 过采样:增加正样本,时正负样本数目接近;
- 阈值移动:用再缩放的思想影响预测时的阈值大小.
决策树
基本流程
决策树的生成时递归过程.在基本算法中,有三种情形会导致递归返回:
- 节点包含样本全属同一类别,无需划分;
- 当前属性集为空,或样本在所有属性上取值相同,无法划分.类别设定为样本类别最多的种类;
- 节点包含的样本集为空,不能划分.类别设定为父节点所含样本最多的类别.
划分选择
基本概念
1. 熵:对事物不确定性的度量.以抛硬币为基本单位 1bits
2. 信息:和熵相反,度量对事物的确定程度.获得信息的三种方式分别为:调整概率,排除干扰,确定情况
3. 噪声:对于消除熵无益的数据
4. 数据:噪声+信息
以抛硬币作为基本单位:
- 在等概率分布的情况下,事物的熵n应该等于log_2(m),m为不确定事件数
- 在不等概率的一般分布下,假设样本集合D中第k类样本所占比例为p_k(k=1,…,|y|),则D的信息熵定义如下:
E n t ( D ) = − ∑ k = 1 ∣ y ∣ p k l o g 2 p k Ent(D)=-\sum^{|y|}_{k=1}p_{k}log_{2}p_{k} Ent(D)=−k=1∑∣y∣pklog2pk
决策树基本算法中最关键的是在于如何选择最优的划分属性,有以下三种基本方法.
信息增益
著名的ID3决策树学习算法使用了信息增益进行属性划分,即a*=argmax(a)Gain(D,a).
其中Gain(D,a)被称为信息增益.使用属性a对D进行划分,出现V个分支节点,按照每个分支节点的权重,计算每个分支信息熵的加权和,最后减去原节点的信息熵,便可得以属性a对样本集合D进行划分所产生的信息增益.公式如下:
G
a
i
n
(
D
,
a
)
=
E
n
t
(
D
)
−
∑
v
=
1
V
∣
D
v
∣
∣
D
∣
E
n
t
(
D
v
)
Gain(D,a) = Ent(D) - \sum^{V}_{v=1}\frac{|D^{v}|}{|D|}Ent(D^{v})
Gain(D,a)=Ent(D)−v=1∑V∣D∣∣Dv∣Ent(Dv)
增益率
信息增益法对于可取值数目较多的属性有所偏好.C4.5决策树算法用增益率来划分属性,有效减少了这种偏好所带来的不利影响.
G
a
i
n
_
r
a
t
i
o
(
D
,
a
)
=
G
a
i
n
(
D
,
a
)
I
V
(
a
)
Gain\_ratio(D, a)=\frac{Gain(D,a)}{IV(a)}
Gain_ratio(D,a)=IV(a)Gain(D,a)
其中
I
V
(
a
)
=
−
∑
v
=
1
V
∣
D
v
∣
∣
D
∣
l
o
g
2
∣
D
v
∣
∣
D
∣
IV(a)=-\sum^{V}_{v=1}\frac{|D^{v}|}{|D|}log_2\frac{|D^{v}|}{|D|}
IV(a)=−v=1∑V∣D∣∣Dv∣log2∣D∣∣Dv∣
称为属性a的固有值.a的可取值数越多,IV(a)越大.注意,增益率法对可取值数目较少的属性有所偏好.
基尼指数
CART决策树使用“基尼指数”来选择划分属性.数据集D的纯度可用基尼值来度量:
G
i
n
i
(
D
)
=
1
−
∑
k
=
1
∣
y
∣
p
k
2
Gini(D)=1-\sum^{|y|}_{k=1}p^{2}_{k}
Gini(D)=1−k=1∑∣y∣pk2
Gini(D)反应了从D中随机抽取两个样本,其类别不同的概率.因此Gini(D)越小,数据集D的纯度越高.属性a的基尼指数定义为:
G
i
n
i
_
i
n
d
e
x
(
D
,
a
)
=
∑
v
=
1
V
∣
D
v
∣
∣
D
∣
G
i
n
i
(
D
v
)
Gini\_index(D,a)=\sum^{V}_{v=1}\frac{|D^{v}|}{|D|}Gini(D^{v})
Gini_index(D,a)=v=1∑V∣D∣∣Dv∣Gini(Dv)
CART决策树算法选择基尼指数最小的属性作为最优划分属性,即a*=argmin(a) Gini_index(D, a).
剪枝处理
剪枝是决策树算法对付过拟合的主要手段.决策树剪枝基本策略有预剪枝和后剪枝两种.预剪枝是在每个节点划分前先判断,若划分无益于泛化性能提升,则将当前节点标为叶节点,不进行划分;后剪枝是训练完成后,自底向上检查每个非叶节点,若将节点对应子树替换为叶节点能提高泛化性能,则进行替换.
预剪枝
先按照属性划分法进行划分,使用测试集计算未划分,即原节点对应标记的正确率;再通过属性划分将测试集划分,计算划分后整体的正确率.如果正确率没有上升,则撤销此次划分.
预剪枝的优点在于降低过拟合,提高训练效率;缺点在于可能扼杀了后期可能存在的高泛化划分操作,导致欠拟合.
后剪枝
从最后一个非叶节点开始向上遍历.如果非叶节点对应标记的正确率不低于划分后整体的正确率,则进行剪枝.
后剪枝通常比预剪枝保留更多分支,欠拟合风险很小,泛化能力更优.但其训练开销会更大.
连续与缺失值
连续值处理
对于属性值为连续值的属性,需要通过二分法将连续值离散化.
- 将所有样本属性a的取值从小到大排列,一共有n个值;
- 取每两个值的平均值为划分点t,一共得到n-1个t;
- 用t作为离散属性对样本集合D进行划分.
于是信息增益公式可改变为:
G
a
i
n
(
D
,
a
)
=
m
a
x
t
∈
T
a
E
n
t
(
D
)
−
∑
λ
∈
{
−
,
+
}
∣
D
t
λ
∣
∣
D
∣
E
n
t
(
D
t
λ
)
Gain(D,a) = \underset{t\in T_a}{max}Ent(D)-\sum_{\lambda\in \{-,+\}}\frac{|D^{\lambda}_{t}|}{|D|}Ent(D^{\lambda}_{t})
Gain(D,a)=t∈TamaxEnt(D)−λ∈{−,+}∑∣D∣∣Dtλ∣Ent(Dtλ)
缺失值处理
-
如何在属性值缺失的情况下进行划分属性选择?
首先计算忽略缺失值的信息增益,再乘非缺失值在样本中的占比,结果为新的信息增益.- 比如说有17个样本,其中有3个缺失值,那么先计算14个非缺失值的信息增益,在对结果乘14/17.
-
给定划分属性,如何划分缺失对应属性值的样本?
让同一样本以不同概率划入到不同的子节点中.即样本权重更新为与各子节点对原节点占比的乘积.
以上方法是C4.5决策树算法的缺失值处理方法.除此之外,对于离散值还可以采取众数填充,相关性最高列填充等方法;对于连续值还可以采取中位数,相关性最高列做线性回归估计等方法.
多变量决策树
多变量决策树是能实现“斜划分”甚至更复杂的决策树.每个分类器不再仅对某个属性,而是对属性的线性组合进行测试.也就是说,每一个非叶节点都是个线性分类器,其中的参数是像线性分类那样通过训练获得.所以,多变量决策树可以理解成由线性分类器作为节点构成的树,其生成过程实际上是诸多分类器的训练过程.
神经网络
神经元模型
n个输入信号与参数θ连接,通过激活函数产生输出.
最经典的激活函数是之前逻辑回归里提到的Sigmoid函数.
感知机与多层网络
感知机由两层神经元组成,分别是输入层和输出层.通过调整参数,感知机能容易得实现逻辑与或非运算.
但要解决非线性可分问题,需要考虑多层前馈神经网络.它在输入输出层中间还多了若干隐藏层,不存在同层链接,也不存在跨层链接,每层神经元与下一层神经元全连接.神经网络的学习便是通过调整各神经元的权重来适应任务.
误差逆传播算法
误差逆传播算法又称 反向传播算法.
具体诸多计算项如误差项、激活项、梯度值等公式不在此做阐述,可查看另一篇关于吴恩达机器学习课程笔记中相关内容.
全局最小与局部最小
任务目标是将误差函数逼近全局最小,但往往会陷入局部最小.通常有以下三种方式帮助“跳出”局部最小:
- 多次随机初始化参数,人工选择最优解;
- “模拟退火”,以一定概率接受次优解,概率随迭代变小;
- 随机梯度下降
支持向量机
之前提及的逻辑回归面临如下问题:
- 超平面不唯一,表示方法也不唯一;
- 噪声敏感,超平面泛化能力弱;
- 无法解决非线性问题.
因此,引入了支持向量机.
间隔与支持向量
定义划分超平面为:
w
T
x
+
b
=
0
w^T x+b=0
wTx+b=0
其中w为法向量,b为位移项.
若wx+b>0, 则预测为正例;反之,预测为反例.因此,我们不难得出以下公式:
(
w
T
x
i
+
b
)
⋅
y
i
≥
1
,
i
f
p
r
e
d
i
c
t
i
o
n
c
o
r
r
e
c
t
(
w
T
x
i
+
b
)
⋅
y
i
≤
−
1
,
i
f
p
r
e
d
i
c
t
w
r
o
n
g
\begin{aligned} &(w^T x_i + b)·y_i \geq 1,if\;prediction\; correct\\ &(w^T x_i + b)·y_i \leq-1,if\;predict\;wrong \end{aligned}
(wTxi+b)⋅yi≥1,ifpredictioncorrect(wTxi+b)⋅yi≤−1,ifpredictwrong
样本空间中任意点x到超平面距离可写为:
r
=
∣
w
T
x
+
b
∣
∣
∣
w
∣
∣
r = \frac{|w^T x+b|}{||w||}
r=∣∣w∣∣∣wTx+b∣
距离超平面最近的若干样本点满足|wx+b|=1,这些样本点被称为“支持向量”,两个异类支持向量到超平面的距离和为:
γ
=
2
∣
∣
w
∣
∣
\gamma=\frac{2}{||w||}
γ=∣∣w∣∣2
它被称为“间隔”.
关于|wx+b|=1的疑惑:
为什么一定是=1?其实不一定要为1,可以为任意实数.在这里确定实数的目的在于避免w和b等比例缩放导致的超平面公式不唯一问题.
支持向量机的目标是找到“最大间隔”的划分超平面,便是找到使γ最大的w和b.根据γ的公式不难看出,要使γ最大,w要尽量小,所以目标就变成了:
m
i
n
w
,
b
1
2
∣
∣
w
∣
∣
2
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
2
,
.
.
.
,
m
\begin{aligned} &\underset{w,b}{min}\frac{1}{2}||w||^2\\ &s.t.\;y_i(w^T x_i + b) \geq1,\quad i=1,2,...,m \end{aligned}
w,bmin21∣∣w∣∣2s.t.yi(wTxi+b)≥1,i=1,2,...,m
为什么又多个平方,又多个1/2? 答:为了方便求导.
以上目标便是支持向量机SVM的基本型.
对偶问题
通过拉格朗日乘数法得到SVM基本型的对偶问题,可以快速求解w和b的目标值.添加拉格朗日乘子a_i >= 0后可得基本型对应的拉格朗日函数为:
L
(
w
,
b
,
α
)
=
1
2
∣
∣
w
∣
∣
2
+
∑
i
=
1
m
α
i
(
1
−
y
i
(
w
T
x
i
+
b
)
)
L(w,b,\alpha)=\frac{1}{2}||w||^2+\sum^{m}_{i=1}\alpha_i(1-y_i(w^Tx_i+b))
L(w,b,α)=21∣∣w∣∣2+i=1∑mαi(1−yi(wTxi+b))
按照拉格朗日乘数法的求解过程,先令L对w和b的偏导为零,将结果代回L便得到基本型的对偶问题:
m
a
x
α
∑
i
=
1
m
α
i
−
1
2
∑
i
=
1
m
∑
j
=
1
m
α
i
α
j
y
i
y
j
x
i
T
x
j
s
.
t
.
∑
i
=
1
m
α
i
y
i
=
0
,
α
i
≥
0
,
i
=
1
,
2
,
.
.
.
,
m
.
\underset{\alpha}{max}\sum^{m}_{i=1}\alpha_i-\frac{1}{2}\sum^m_{i=1}\sum^m_{j=1}\alpha_i\alpha_jy_iy_jx^T_ix_j\\ s.t.\;\sum^m_{i=1}\alpha_iy_i=0,\\ \alpha_i\geq0,\quad i=1,2,...,m.
αmaxi=1∑mαi−21i=1∑mj=1∑mαiαjyiyjxiTxjs.t.i=1∑mαiyi=0,αi≥0,i=1,2,...,m.
所以只要求出α就可以求出对应的w和b.(书中用到SMO算法,看不懂…)
至此,通过找出拥有最大间隔的划分超平面,减少了线性分类噪声敏感的问题
核函数
有时候样本集合线性不可分,则可以通过升维使样本线性可分.Cover原理指出:如果原始空间是有限维,那么一定存在一个高维特征空间使样本可分.
令Φ(x)表示将x映射后的特征向量,设置核函数避免计算高维特征内积:
κ
(
x
i
,
x
j
)
=
Φ
(
x
i
)
T
Φ
(
x
j
)
κ(x_i,x_j)=Φ(x_i)^TΦ(x_j)
κ(xi,xj)=Φ(xi)TΦ(xj)
以下列出几种常用核函数:
除此之外,核函数的线性组合、直积也是核函数.
通过计算可以得到支持向量机模型:
f
(
x
)
=
w
T
Φ
(
x
)
+
b
=
∑
i
=
1
m
α
i
y
i
κ
(
x
,
x
i
)
+
b
f(x)=w^TΦ(x)+b=\sum^m_{i=1}\alpha_iy_iκ(x,x_i)+b
f(x)=wTΦ(x)+b=i=1∑mαiyiκ(x,xi)+b
个人感性理解:通过核函数进行升维,具体映射到的特征空间由核函数决定.升完之后一切照旧.
软间隔与正则化
现实任务中难以确定样本在一定的特征空间中线性可分,即可能会有噪声样本.通过引入软间隔来允许支持向量机在一些样本上出错.
于是将优化目标修改为:
m
i
n
w
,
b
1
2
∣
∣
w
∣
∣
2
+
C
∑
i
=
1
m
l
0
/
1
(
y
i
(
w
T
x
i
+
b
)
−
1
)
\underset{w,b}{min}\;\frac{1}{2}||w||^2+C\sum^m_{i=1}l_{0/1}(y_i(w^Tx_i+b)-1)
w,bmin21∣∣w∣∣2+Ci=1∑ml0/1(yi(wTxi+b)−1)
其中C>0是个常数,l0/1是“0/1损失函数”:
l
0
/
1
(
z
)
=
{
1
,
i
f
z
<
0
;
0
,
o
t
h
e
r
w
i
s
e
.
l_{0/1}(z)= \begin{cases} 1, \quad if \;\;z < 0;\\ 0, \quad otherwise. \end{cases}
l0/1(z)={1,ifz<0;0,otherwise.
当C无穷大时,优化目标为了达到最小,会使所有样本满足约束,此时0/1损失函数取0,抵消无穷大的C,于是优化目标等价于硬间隔的目标;当C取有限值时,允许部分样本不满足约束.
然后0/1损失函数数学性质不好,可以用替代损失函数进行替换:
- hinge损失: l_hinge(z) = max(0, 1-z);
- 指数损失: l_exp(z) = exp(-z);
- 对率损失: l_log(z) = log(1+exp(-z))
引入松弛变量 ξ_i >= 0,将优化目标重写为:
m
i
n
w
,
b
,
ξ
i
1
2
∣
∣
w
∣
∣
2
+
C
∑
i
=
1
m
ξ
i
\underset{w,b,\xi_i}{min}\;\frac{1}{2}||w||^2+C\sum^m_{i=1}\xi_i
w,b,ξimin21∣∣w∣∣2+Ci=1∑mξi
个人理解:最开始的优化目标只关于w,后面通过损失函数引进软间隔的概念,但是损失函数的计算完全可以被松弛变量代替.各松弛变量对应样本不满足约束的程度.
根据新的优化目标进行类似的计算,得到软间隔支持向量机.
支持向量回归
与传统回归模型基于|f(x)-y|计算损失不同,支持向量回归SVR能容忍ε的偏差,即当|f(x)-y|>ε时才计算损失.
因此,SVR问题可以表示为:
m
i
n
w
,
b
1
2
∣
∣
w
∣
∣
2
+
C
∑
i
=
1
m
l
ϵ
(
f
(
x
i
)
−
y
i
)
\underset{w,b}{min}\;\frac{1}{2}||w||^2+C\sum^m_{i=1}l_{\epsilon}(f(x_i)-y_i)
w,bmin21∣∣w∣∣2+Ci=1∑mlϵ(f(xi)−yi)
其中,C为正则化常数,l_ε是不敏感损失函数:
l
ϵ
(
z
)
=
{
0
,
i
f
∣
z
∣
≤
ϵ
;
∣
z
∣
−
ϵ
,
o
t
h
e
r
w
i
s
e
.
l_{\epsilon}(z)= \begin{cases} 0,\quad \quad \;\;if\;|z|\leq\epsilon;\\ |z|-\epsilon,\;otherwise. \end{cases}
lϵ(z)={0,if∣z∣≤ϵ;∣z∣−ϵ,otherwise.
还可以引入松弛变量 ξ_i 和 ξ_i^,将优化目标重写为:
m
i
n
w
,
b
,
ξ
i
,
ξ
i
^
1
2
∣
∣
w
∣
∣
2
+
C
∑
i
=
1
m
(
ξ
i
+
ξ
i
^
)
\underset{w,b,\xi_i,\hat{\xi_i}}{min}\;\frac{1}{2}||w||^2+C\sum^m_{i=1}(\xi_i+\hat{\xi_i})
w,b,ξi,ξi^min21∣∣w∣∣2+Ci=1∑m(ξi+ξi^)
根据新的优化目标进行类似的计算,得到支持向量回归模型.
核方法
(看不懂,过…)
贝叶斯分类器
贝叶斯决策论
我们需要找到一个判定准则h,能使总体风险最小.显然若h能让每个条件风险都最小,那么h也会使总体风险最小.于是出现了贝叶斯最优分类器:
h
∗
(
x
)
=
a
r
g
m
i
n
c
∈
γ
R
(
c
∣
x
)
h^*(x)=\underset{c\in γ}{arg\;min}\;R(c|x)
h∗(x)=c∈γargminR(c∣x)
贝叶斯最优分类器会对每个样本选择能使条件风险最低的类别标记.与之对应的总体风险R(h*)被称为贝叶斯风险.分类器所能达到的最好性能为1-R(h*)
若目标是最小化分类错误率,则误判损失可以为0/1损失函数,那么R(c|x)=1-P(c|x),于是最小化分类错误率的贝叶斯最优分类器为:
h
∗
(
x
)
=
a
r
g
m
a
x
c
∈
γ
P
(
c
∣
x
)
h^*(x)=\underset{c\in \gamma}{arg\;max}\;P(c|x)
h∗(x)=c∈γargmaxP(c∣x)
根据贝叶斯公式,
P
(
c
∣
x
)
=
P
(
x
∣
c
)
P
(
c
)
P
(
x
)
P(c|x)=\frac{P(x|c)P(c)}{P(x)}
P(c∣x)=P(x)P(x∣c)P(c)
其中,P(x)和类标记无关,P(.c)可通过各类样本出现的频率来估计,P(x|c)是所有样本属性联合概率,取值可能巨大,无法用频率来估计概率.
极大似然估计
令D_c表示训练集D中的第c类样本组成的集合.假设样本独立同分布,则θ_c对于D_c的似然是(对于θ而言,D_c数据集出现的概率):
P
(
D
c
∣
θ
c
)
=
∏
x
∈
D
c
P
(
x
∣
θ
c
)
P(D_c|\theta_c)=\prod_{x\in D_c}P(x|\theta_c)
P(Dc∣θc)=x∈Dc∏P(x∣θc)
可以看到,对于参数θ_c,D_c数据集出现的概率是每个样本出现概率的乘积.对θ_c进行极大似然估计就是找到能让P(D_c|θ_c)这个概率最大化的θ_c,即:
θ
c
^
=
a
r
g
m
a
x
θ
c
[
l
o
g
P
(
D
c
∣
θ
c
)
]
\hat{\theta_c}=\underset{\theta_c}{arg\;max}\;[logP(D_c|\theta_c)]
θc^=θcargmax[logP(Dc∣θc)]
朴素贝叶斯分类器
朴素贝叶斯之所以“朴素”,是因为采用了“属性条件独立性假设”,即假设所有属性相互独立.
令c是类别,x是样本特征.已知样本特征,计算该样本是c类别的概率:
P
(
c
∣
x
)
=
P
(
c
)
P
(
x
∣
c
)
P
(
x
)
=
P
(
c
)
P
(
x
)
∏
i
=
1
d
P
(
x
i
∣
c
)
P(c|x)=\frac{P(c)P(x|c)}{P(x)} = \frac{P(c)}{P(x)}\prod^d_{i=1}P(x_i|c)
P(c∣x)=P(x)P(c)P(x∣c)=P(x)P(c)i=1∏dP(xi∣c)
P(x|c)是指在类别c中特征为x的概率.上文提到特征x的取值过多,所以难以用频率逼近概率.朴素贝叶斯的“独立性假设”有效地避免了该问题,将P(x|c)转换为类别c中各特征x_i的概率乘积.
由于对所有类别而言P(x)相同,因此朴素贝叶斯分类器的表达式为:
h
n
b
(
x
)
=
a
r
g
m
a
x
c
∈
γ
P
(
c
)
∏
i
=
1
d
P
(
x
i
∣
c
)
h_{nb}(x)=\underset{c\in \gamma}{arg\;max}\;P(c)\prod^d_{i=1}P(x_i|c)
hnb(x)=c∈γargmaxP(c)i=1∏dP(xi∣c)
显然,朴素贝叶斯分类器的训练过程就是基于训练集D来估计P(.c)和P(x_i|c).(根据大数定理,在有足够多样本的情况下,这两种概率可以用频率代替).在预测过程中,将样本特征输入,分类器依次计算该样本为各类别的概率,选取最大概率的类别作为预测结果输出.
为了避免未出现的属性值将其他属性值都掩盖,采用“拉普拉斯修正”,避免出现P(x_i|c)=0的现象.其中N表示D中可能的类别数,N_i表示D_c中可能的取值数.
P
^
(
c
)
=
∣
D
c
∣
+
1
∣
D
∣
+
N
P
^
(
x
i
∣
c
)
=
∣
D
c
,
x
i
∣
+
1
∣
D
c
∣
+
N
i
\hat{P}(c)=\frac{|D_c|+1}{|D|+N}\\ \hat{P}(x_i|c)=\frac{|D_{c,x_i}|+1}{|D_c|+N_i}
P^(c)=∣D∣+N∣Dc∣+1P^(xi∣c)=∣Dc∣+Ni∣Dc,xi∣+1
半朴素贝叶斯分类器
"属性条件独立性假设"在现实中很难成立,半朴素贝叶斯分类器引入独依赖估计ODE:假设每个属性在类别之外最多仅依赖于一个其他属性,即
P
(
c
∣
x
)
∝
P
(
c
)
∏
i
=
1
d
P
(
x
i
∣
c
,
p
a
i
)
P(c|x)∝P(c)\prod^d_{i=1}P(x_i|c,pa_i)
P(c∣x)∝P(c)i=1∏dP(xi∣c,pai)
其中pa_i为属性x_i所依赖的属性,称为其父属性.因此确认每个属性的父属性成为了问题的关键.
主流的ODE方法有SPODE、TAN、AODE等,在此不展开说明.
贝叶斯网
贝叶斯网通过有向无环图DAG来刻画属性之间的关系.一个贝叶斯网络由结构G和参数Θ构成.假设属性x_i在G中的父结点集为π_i.贝叶斯网将属性的联合概率分布定义为:
P
(
x
1
,
.
.
.
,
x
d
)
=
∏
i
=
1
d
P
(
x
i
∣
π
i
)
P(x_1,...,x_d)=\prod^d_{i=1}P(x_i|\pi_i)
P(x1,...,xd)=i=1∏dP(xi∣πi)
若网络结构已知,贝叶斯网的学习过程只需要对训练样本进行计数;若网络结构未知则需要进行“评分搜索”,不展开说明.
贝叶斯网训练完成后可以通过一些属性变量的观测值来推测其他属性变量的取值.
EM算法
训练样本有时存在“未观测”的隐变量,如何对模型参数Θ进行估计?
- 初始化参数Θ
- 基于Θ推断隐变量Z
- 基于观测变量X和Z,对参数Θ做极大似然估计
- 不断循环2、3两部,直至局部收敛.
集成学习
个体与集成
- 集成学习又被称为多分类器系统.集成学习的一般结构:先产生一组个体学习器,再用某种策略将它们结合起来.个体学习器通常是现有的学习算法.
- 若集成的个体学习器都是同一算法,称为“同质集成”,其中的学习器称为“集学习器”,学习算法称为“基学习算法”;若集成的个体学习器包含多种算法,则称为“异质集成”,此时学习器被称为“组件学习器”.异质集成学习的核心:好而不同.
- 集成学习大致分两类.第一种,学习器间有强依赖关系,必须串行生成的序列化方法,如Boosting;第二种,学习器间无强依赖关系,可同时生成的并行化方法,如Bagging和随机森林.
Boosting
Boosting是序列化的同质集成学习方法.其工作机制为:先训练一个基学习器,再根据基学习器的预测结果加强错误预测样本的权重,基于调整权重后的训练集训练下一个基学习器,如此循环直到基学习器个数到达指定值,最终将所有基学习器加权结合.
标准的AdaBoost只适用于二分类任务(因为计算误差).以下是AdaBoost算法:
- 初始化样本权重;
- 迭代训练T个分类器;
- 基于基学习算法,根据数据集D和样本权重对分类器进行训练;
- 计算误差.误差为预测错误样本权重之和;
- 如果误差大于0.5,说明分类器训练失效,退出循环(因为权重总和为1);
- 计算当前分类器权重(误差越小,权重越大);
- 更新样本权重:分类正确降低权重,分类错误提高权重,满足总和为一;
- 结束循环
其中Z_t是用于归一化样本权重的:
Z
t
=
∑
i
=
1
N
D
t
(
x
i
)
⋅
e
x
p
(
−
α
t
f
(
x
i
)
h
t
(
x
i
)
)
Z_t=\sum^N_{i=1}D_t(x_i)·exp(-\alpha_tf(x_i)h_t(x_i))
Zt=i=1∑NDt(xi)⋅exp(−αtf(xi)ht(xi))
最终获得的强分类器是包含在激活函数内的若干弱分类器的加权和.
Bagging与随机森林
将训练集分成若干份相互有交集的子集,供各组件学习器训练.这一定程度上产生了“好而不同”中“不同”的效果.
Bagging
- 该算法使用自助采样法,即每次采样都是放回式采样.要训练T个基学习器,就要采样获得T个相同大小的训练集子集.这些子集相互之间有交集.训练完基学习器后要进行结合,对分类任务使用简单投票法,对回归任务使用简单平均法.
- 每个基学习器只使用了原训练集约63.2%的样本,剩下部分可以作为验证集进行“包外估计”.于是Bagging泛化误差便可以由各基学习器的包外估计求均值而来.
随机森林
- 随机森林在以决策树为基学习器构建Bagging集成的基础上,在训练过程中引入了随机属性选择.具体来说,在基决策树选择划分属性时,先从属性集合中随机选择k个属性,再再子集中选择一个最优属性.这里的k控制了随机程度,推荐k=log_2(d).
- 随机森林的“多样性”不仅来自样本扰动(自助采样),也来自属性扰动,使得最终集成的泛化性能进一步提升.
- 随机森林起始性能相对较差,但训练效率常优于Bagging,其泛化误差也更低.
结合策略
学习器结合可能会有三种好处:
- 综合考量,减少单学习器失误的可能;
- 降低陷入局部最小的风险;
- 多个学习器具有更大的假设空间,泛化性能更好.
平均法
平均法用于数值型输出.主要有简单平均法和加权平均法两种.
加权平均法的权重一般在训练中习得,这种权重会由于样本自身问题而不可靠.因此加权平均法未必优于简单平均法.一般而言,个体学习器性能相差较大时使用加权平均法,相差较小时使用简单平均法.
投票法
投票法多用于分类任务.主要有绝对多数投票法、相对多数投票法和加权投票法.
绝对多数投票法选择得票超过半数的类别,否则拒绝预测;相对多数投票法选择得票数最多的类别,同票数则随机;加权投票法类似于加权平均法,各分类器有对应权重.
使用0/1投票的方法称为“硬投票”,使用概率投票的方法称为“软投票”
学习法
Stacking是学习法的代表,该方法是通过另一个学习器进行结合.用于结合的学习器被称为次级学习器或元学习器.
- (1-3)用初级学习算法训练初级学习器;
- (5)逐样本循环;
- (6-8)对于当前样本,得到各初级学习器的预测;
- (9)将当前样本的预测序列并上原标签,加入新数据集中;
- (11)用新数据集和次级学习算法训练次级学习器.
次级学习器的输入属性表示对Stacking的泛化能力有很大影响.除了上面算法中,用预测结果作为输入,还可以对原训练集使用交叉验证法或留一法进行次级学习器的训练.
Stacking集成法由于超参数过多,比较容易出现过拟合现象.
多样性
误差-分歧分解
“分歧”表征了个体学习器在样本x上的不一致性.“误差-分歧分解”表示:个体学习器准确度越高、多样性越大,则集成越好.
多样性度量
常见的多样性度量有不合度量、相关系数、Q-统计量、κ-统计量.
多样性增强
常见做法是对数据样本、输入属性、输出表示、算法参数进行扰动.不同是机制可以同时使用.
- 数据样本扰动
通过初试数据集产生出不同数据子集用于训练不同的个体学习器.常用的方法是基于采样法,比如Bagging的自助采样.数据样本扰动对于“不稳定基学习器”很有效. - 输入属性扰动
不同属性空间训练的个体学习器必然不同.著名的随机子空间算法就是在初始属性集中抽取若干属性子集进行训练.若数据只包含少量属性或冗余属性很少,则不宜使用输入属性扰动法. - 输出表示扰动
基本思路是对输出表示进行操纵以增强多样性.比如随机改变一些训练样本的标记,或是对输出表示进行转化. - 算法参数扰动
顾名思义,对超参数进行随机设置.
聚类
聚类任务
聚类任务是典型的无监督学习.聚类试图将数据集中样本划分为若干个不相交的子集,每个子集被称为“簇”.
性能度量
聚类目标为“簇内相似度”高,“簇外相似度”低.
聚类性能度量有两类:外部指标和内部指标.
外部指标 : 将聚类结果与“参考模型”进行比较
基于所得,可求出以下常用的聚类性能度量外部指标:
- Jaccard系数
J C = a a + b + c JC=\frac{a}{a+b+c} JC=a+b+ca - FM指数
F M I = a a + b ⋅ a a + c FMI=\sqrt{\frac{a}{a+b}·\frac{a}{a+c}} FMI=a+ba⋅a+ca - Rand指数
R I = 2 ( a + d ) m ( m − 1 ) RI=\frac{2(a+d)}{m(m-1)} RI=m(m−1)2(a+d)
以上性能度量的结果值均在[0,1]区间,值越大越好.
内部指标 : 直接考察聚类结果
基于所得,可求出以下常用的聚类性能度量内部指标:
- DB指数
D B I = 1 k ∑ i = 1 k m a x j ≠ i ( a v g ( C i ) + a v g ( C j ) d c e n ( μ i , μ j ) ) DBI=\frac{1}{k}\sum^k_{i=1}\underset{j\neq i}{max}\left(\frac{avg(C_i)+avg(C_j)}{d_{cen}(\mu_i,\mu_j)}\right) DBI=k1i=1∑kj=imax(dcen(μi,μj)avg(Ci)+avg(Cj)) - Dunn指数
D I = m i n 1 ≤ i ≤ k { m i n j ≠ i ( d m i n ( C i , C j ) m a x 1 ≤ l ≤ k d i a m ( C l ) ) } DI=\underset{1\leq i\leq k}{min}\left\{\underset{j\neq i}{min}\left(\frac{d_{min}(C_i,C_j)}{\underset{1\leq l\leq k}{max}diam(C_l)}\right)\right\} DI=1≤i≤kmin⎩ ⎨ ⎧j=imin 1≤l≤kmaxdiam(Cl)dmin(Ci,Cj) ⎭ ⎬ ⎫
DBI的值越小越好,DI越大越好.
距离计算
对于有序属性计算距离常用“闵可夫斯基距离”:
d
i
s
k
m
k
(
x
i
,
x
j
)
=
(
∑
u
=
1
n
∣
x
i
u
−
x
j
u
∣
p
)
1
p
disk_{mk}(x_i,x_j)=\left(\sum^n_{u=1}|x_{iu}-x_{ju}|^p\right)^{\frac{1}{p}}
diskmk(xi,xj)=(u=1∑n∣xiu−xju∣p)p1
当p=2时,闵氏距离即欧式距离;当p=1时,闵氏距离即曼哈顿距离.
对无序属性计算距离可用VDM.令m_{u,a}表示在属性u上取值为a的样本数,m_{u,a,i}表示在第i个样本簇中在属性u上取值为a的样本数,k为样本cu数,则属性u上两个离散值a和b之间的VDM距离为
V
D
M
p
(
a
,
b
)
=
∑
i
=
1
k
∣
m
u
,
a
,
i
m
u
,
a
−
m
u
,
b
,
i
m
u
,
b
∣
p
VDM_p(a,b)=\sum^k_{i=1}\left|\frac{m_{u,a,i}}{m_{u,a}}-\frac{m_{u,b,i}}{m_{u,b}}\right|^p
VDMp(a,b)=i=1∑k
mu,amu,a,i−mu,bmu,b,i
p
将闵氏距离和VDM结合即可处理混合属性.假定有n_c个有序属性、n-n_c个无需属性,有序属性在无序属性前,则
M
i
n
k
o
v
D
M
p
(
x
i
,
x
j
)
=
(
∑
u
=
1
n
c
∣
x
i
u
−
x
j
u
∣
p
+
∑
u
=
n
c
+
1
n
V
D
M
p
(
x
i
u
,
x
j
u
)
)
1
p
MinkovDM_p(x_i,x_j)=\left( \sum^{n_c}_{u=1}|x_{iu}-x_{ju}|^p + \sum^n_{u=n_c+1}VDM_p(x_{iu},x_{ju})\right)^{\frac{1}{p}}
MinkovDMp(xi,xj)=(u=1∑nc∣xiu−xju∣p+u=nc+1∑nVDMp(xiu,xju))p1
当样本空间中属性的重要性不同时,可以使用“加权距离”.
原型聚类
原型聚类亦称“基于原型的聚类”.此类算法假设聚类结构可以被样本空间中具有代表性的点刻画.
K均值算法
k均值算法就是循环两部分:第一部分是归簇,计算样本点所属样本簇;第二部分是算簇心,计算归簇后新的簇中心.
学习向量量化
LVQ算法与一般聚类算法不同的是,LVQ假设样本带有类别标记.
LVQ的关键在于如何更新原型向量.对于每次随机到的样本点,找到最近的原型向量,若两者类别相同,则让原型向量靠近该样本点;反之,则远离该样本点.
直观上来说,因为有标签帮助聚类.所有的原型向量会被异簇排挤,且会被同簇吸引.
高斯混合聚类
高斯混合聚类和前两种原型聚类结构不同,它采用概率模型来表达聚类原型(代表性点).
多元高斯分布概率密度为:
p
(
x
)
=
1
(
2
π
)
n
2
∣
Σ
∣
1
2
e
−
1
2
(
x
−
μ
)
T
Σ
−
1
(
x
−
μ
)
p(x)=\frac{1}{(2\pi)^{\frac{n}{2}}|\Sigma|^{\frac{1}{2}}}e^{-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu)}
p(x)=(2π)2n∣Σ∣211e−21(x−μ)TΣ−1(x−μ)
其中μ是n维均值向量,Σ是nxn的协方差矩阵.
将概率密度函数记为p(x|μ,Σ),定义高斯混合分布
p
M
(
x
)
=
∑
i
=
1
k
α
i
⋅
p
(
x
∣
μ
i
,
Σ
i
)
p_M(x)=\sum^k_{i=1}\alpha_i·p(x|\mu_i,\Sigma_i)
pM(x)=i=1∑kαi⋅p(x∣μi,Σi)
该分布由k个混合成分(簇)组成, α_i > 0是各高斯混合的“混合系数”.
令z_j表示样本x_j的高斯混合成分(所属簇),于是给定样本x_j,该样本属于第i个高斯混合成分的分布为:
p
M
(
z
j
=
i
∣
x
j
)
=
P
(
z
j
=
i
)
⋅
p
M
(
x
j
∣
z
j
=
i
)
p
M
(
x
j
)
=
α
i
⋅
p
(
x
j
∣
μ
i
,
Σ
i
)
∑
l
=
1
k
α
l
⋅
p
(
x
j
∣
μ
l
,
Σ
l
)
p_M(z_j=i|x_j)=\frac{P(z_j=i)·p_M(x_j|z_j=i)}{p_M(x_j)}=\frac{\alpha_i·p(x_j|\mu_i,\Sigma_i)}{\sum^k_{l=1}\alpha_l·p(x_j|\mu_l,\Sigma_l)}
pM(zj=i∣xj)=pM(xj)P(zj=i)⋅pM(xj∣zj=i)=∑l=1kαl⋅p(xj∣μl,Σl)αi⋅p(xj∣μi,Σi)
为样本计算与各高斯混合成分(簇)的分布(概率),最高者为样本所属簇.(这也就是预测时的方式)
以下是高斯混合聚类算法:
- (1)初始化所有高斯混合分布的参数;
- (3-5)计算所有样本x由各高斯混合生成的概率;
- (6-10)更新所有高斯混合分布的参数:均值和协方差都是通过加权平均来更新,而高斯混合分布的权重是所有样本属于该分布的概率的均值;
- (13-17)样本划分
密度聚类
密度聚类亦称“基于密度的聚类”,通过样本分布的紧密程度来确认聚类结构.代表算法有DBSCAN.
在描述算法思想之前,先定义如下概念:
- ε-临域:与样本点距离不大于ε的样本空间
- 核心对象:若样本点x的ε-临域内至少包含MinPts个样本,则x是核心对象
- 密度直达:x_j位于某核心对象x_i的ε-临域中,则称x_j可由x_i密度直达
- 密度可达:两点间可由若干核心对象密度直达
先确定核心对象集合,随机选一个作为出发点,找出所有密度可达样本,构成一个聚类簇C;在核心对象集合中删除所有C中核心对象;重复上面步骤,直至核心对象集合为空.
层次聚类
层次聚类形成树形的聚类结构.划分方法可采用“自底向上”和“自顶向下”两种策略.
AGNES是一种自底向上的聚合策略,其核心思想是:将数据集中各样本看作初始簇,找出距离最近的两个簇合并;不断循环直到达到预设聚类簇个数.
其中聚类簇之间的距离是算法的关键.聚类簇距离有三个标准:最小距离由两个簇最近的样本决定,最大距离由两个簇最远的样本决定;平均距离由两个簇的样本共同决定.AGNES算法又被对应称为“单链接”、“全链接”、“均链接”算法.
降维与度量学习
K近邻学习
KNN算法是常用的监督学习算法.其工作机制为:为测试样本找到与其最靠近的k个训练样本,用训练样本信息对测试样本进行预测.
K近邻学习没有训练过程(没有参数需要进行拟合),这种算法被称为“懒惰学习”.与之相反的被称为“急切学习”
最近邻分类器虽然简单,但它的泛化错误率不超过贝叶斯最优分类器错误率的两倍.
低维嵌入
高维空间中会出现数据样本稀疏、距离计算困难等问题,统一称为“维数灾难”.
缓解维数灾难的一个重要途径是“降维”,将高维数据映射至低维空间.
多维缩放MDS
MDS是一种经典的降维方式,该方法要求降维前后样本点间相对位置尽量不变.
- 根据高维样本计算距离矩阵D_ij;
- 通过降维前后保持不变的距离矩阵D求内积矩阵B;
b i j = − 1 2 ( d i s t i j 2 − d i s t i ⋅ 2 − d i s t ⋅ j 2 + d i s t ⋅ ⋅ 2 ) b_{ij}=-\frac{1}{2}(dist^2_{ij}-dist^2_{i·}-dist^2_{·j}+dist^2_{··}) bij=−21(distij2−disti⋅2−dist⋅j2+dist⋅⋅2) - 对B进行奇异值分解,选取若干特征值和对应特征向量构成低维样本集合Z.
主成分分析
降维后的维数d‘通常是事先决定的.也可以通过重构的角度设定阈值,确保信息损失较小.
核化线性降维
有的样本空间中的样本线性不可分,则用“核化”的技巧,先对样本升维,再用PCA的方法降维.
- 对样本均值归一化
- 计算核矩阵K,其中κ为核函数
( K ) i j = κ ( x i , x j ) (K)_{ij}=κ(x_i,x_j) (K)ij=κ(xi,xj) - 对K奇异值分解,取K最大的d‘个特征值对应的特征向量作为投影矩阵.
流形学习
m维空间中的n维流形就是n维几何形状的一个子集,m>n
比如:圆之于二维,等于球之于三维;则圆在三维中是二维流形.
流形学习是一类降维方法,也可用于可视化展示.
等度量映射
等度量映射的关键在于降维后两点之间的距离不变.要保持低维距离和高维相同,需要在高维空间中通过积分的思想来获得高维空间距离.再直接把距离当作低维空间的距离代入MDS算法进行运算.
Isomap只能得到训练样本在低维空间的坐标.对于新样本的映射,常用方法是训练一个回归器进行预测.
对近邻图的构建通常也有两种做法:一是指定近邻点个数,二是指定距离阈值.
局部线性嵌入
与Isomap试图保持近邻样本之间距离不同,LLE试图保持近邻样本之间的线性关系.
第三行是为x_i找到其近邻样本集合中 能对x_i进行线性重构的系数w
式(10.30)如下,其中W是重构系数矩阵:
M
=
(
I
−
W
)
T
(
I
−
W
)
M=(I-W)^T(I-W)
M=(I−W)T(I−W)
不理解I代表什么,这个算法有点抽象...
个人理解:找每群相对密集的点,让他们相互线性表示,保留线性关系进行降维.
度量学习
度量学习不尝试降维,而是尝试学习合适的距离度量.
对于两个d维样本x_i和x_j,他们之间的平方欧式距离为:
d
i
s
t
e
d
2
(
x
i
,
x
j
)
=
∣
∣
x
i
−
x
j
∣
∣
2
dist^2_{ed}(x_i,x_j)=||x_i-x_j||^2
disted2(xi,xj)=∣∣xi−xj∣∣2
假设不同属性的权重不同,且不同属性间并不一定是正交的,则平方欧式距离替换为马氏距离:
d
i
s
t
m
a
h
2
(
x
i
,
x
j
)
=
(
x
i
−
x
j
)
T
M
(
x
i
−
x
j
)
=
∣
∣
x
i
−
x
j
∣
∣
M
2
dist^2_{mah}(x_i,x_j)=(x_i-x_j)^TM(x_i-x_j)=||x_i-x_j||^2_M
distmah2(xi,xj)=(xi−xj)TM(xi−xj)=∣∣xi−xj∣∣M2
其中M是度量矩阵,度量学习是对M进行学习.
对于不同任务而言,都可以尝试将M嵌入到对应分类器的评价指标中,通过优化性能指标来求得M.
个人感受:有很强的割裂感,完全不知道怎么实现,以及对应原因...
特征选择与稀疏学习
子集搜索与评价
对当前学习任务有用的属性被称为“相关特征”,没什么用的属性称为“无关特征”.从特征集合中选出相关特征子集的过程称为“特征选择”.常见的特征选择方法大致有三类:过滤式、包裹式、嵌入式.
特征选择涉及两个关键环节:子集搜索和子集评价.
- 子集搜索一共有三种模式.第一种“前向搜索”,先将每个特征看作一个子集,对单子集进行评价,选取最高的子集作为选定集;再尝试向选定集中加入一个特征,使得评价最高且高于原选定集;不断加入特征直至评价不再提高.第二种“反向搜索”,与前想搜索相反,初始选定集包含所有特征,逐步减小选定集.第三种“双向搜索”,是前两种的结合.
- 子集评价:对于每个属性子集的评价方法之一是比较各属性子集的信息增益
G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) Gain(D,a) = Ent(D) - \sum^{V}_{v=1}\frac{|D^{v}|}{|D|}Ent(D^{v}) Gain(D,a)=Ent(D)−v=1∑V∣D∣∣Dv∣Ent(Dv)
过滤式选择
特征选择对特征进行过滤,过滤后特征用于训练模型.
Relief是一种著名的过滤式特征选择方法,使用“相关统计量”来度量特征的重要性.特征子集的重要性是由相关统计量分量之和决定的.通过指定阈值τ,只选择高于τ的统计分量所对应的特征.
关于如何确定相关统计量:
对于每个样本x,先在同类样本中寻找最近邻x_{i,nh},再在异类样本中寻找最近邻x_{i,nm},相关统计量对应于属性j的分量为:
δ
j
=
∑
i
−
d
i
f
f
(
x
i
j
,
x
i
,
n
h
j
)
2
+
d
i
f
f
(
x
i
j
,
x
i
,
n
m
j
)
2
\delta^j=\sum_i-diff(x^j_i,x^j_{i,nh})^2+diff(x^j_i,x^j_{i,nm})^2
δj=i∑−diff(xij,xi,nhj)2+diff(xij,xi,nmj)2
异类距离大于同类距离说明该属性分类效果好,则加大对应分量;反之则减小.
包裹式选择
包裹式选择将学习器性能作为特征子集的评价准则.其训练成本大于过滤式,但最终效果往往优于过滤式.以下是典型的包裹式特征选择算法——LVW算法:
- (1-4)初始化参数.E是验证损失,d是特征维度,A*是特征子集,t是计数器.
- (8)用A‘特征的数据集进行训练,计算学习器的交叉损失
- (9-14)如果损失减少,或是损失相同的情况下特征维数降低,则更新选取参数
- (15)没有更新就增加计数器,T轮不更新就默认收敛,结束算法.
嵌入式选择与L1正则化
嵌入式选择和前两种方法不同,通过为损失函数添加正则项,将特征选择融入到学习器训练中.
当正则项为L2范数:λ||w||^2时,被称作岭回归;当正则项为L1范数:λ||w||时,被称为LASSO.L1范数和L2范数都有助于降低过拟合风险,L1范数更容易获得稀疏解.
稀疏表示与字典学习
特征选择所考虑的问题是特征具有“稀疏性”,即部分特征与当前学习任务无关,去除这些特征有助于提高性能.
当样本具有稀疏表达时,对学习任务来说会有好处. 那么如何将稠密数据集转化为“稀疏表示”呢?
**通过“字典学习”,将稠密样本转化为稀疏表示,从而降低模型复杂度.**字典学习最简单的形式为:
m
i
n
B
,
α
i
∑
i
=
1
m
∣
∣
x
i
−
B
α
i
∣
∣
2
2
+
λ
∑
i
=
1
m
∣
∣
α
i
∣
∣
1
\underset{B,\alpha_i}{min}\sum^m_{i=1}||x_i-B\alpha_i||^2_2+\lambda\sum^m_{i=1}||\alpha_i||_1
B,αimini=1∑m∣∣xi−Bαi∣∣22+λi=1∑m∣∣αi∣∣1
其中B是字典矩阵,α是样本x的稀疏表示.第一项是希望α对x更好地重构,第二项是希望α尽量稀疏.
个人理解:字典B像是另一个样本空间,α是x在该空间里对应的坐标.目标是构造空间B以及计算所有样本对应的坐标α.
学习B和α的步骤如下:
- 固定B,为每个x计算对应的α;
m i n α i ∣ ∣ x i − B α i ∣ ∣ 2 2 + λ ∣ ∣ α i ∣ ∣ 1 \underset{\alpha_i}{min}||x_i-B\alpha_i||^2_2+\lambda||\alpha_i||_1 αimin∣∣xi−Bαi∣∣22+λ∣∣αi∣∣1 - 固定所有α,计算字典B;
m i n B ∑ i = 1 m ∣ ∣ x i − B α i ∣ ∣ 2 2 \underset{B}{min}\sum^m_{i=1}||x_i-B\alpha_i||^2_2 Bmini=1∑m∣∣xi−Bαi∣∣22 - 重复上两步,直至收敛.
压缩感知
(略)
计算学习理论
(全部为基础理论的论证和推导,略)
半监督学习
未标记样本
半监督学习的目的是将部分未标记样本加入到训练中来.要实现这一目的,最关键的是为未标记样本建立起数据分布与类别标记之间的假设.
最常见的是“聚类假设”,若未标记样本所在簇大部分为正例样本,则其大概率是正例;反之,则大概率是反例.另一种常见的是“流形假设”,假设未标记样本分布在流形结构上,则与相邻的样本有类似的输出值.
半监督学习可划分为纯半监督学习和直推学习.前者面向更为广义的情况,希望模型适用于未观察到的数据;后者仅对未标记数据进行预测,目的只是在这些未标记上获得最佳性能.
生成式方法
生成式方法通过潜在的模型参数将未标记数据和学习目标联系起来,将未标记数据的标记看作模型的缺失值.于是可以通过EM法求解.不同模型假设产生不同的方法
假设样本由高斯混合模型生成,每个类别对应一个高斯混合成分.计算样本x对于各高斯混合成分的概率,取最大值对应类别为预测标记.整体方法与高斯混合聚类相同.
用EM算法求解模型参数:
-
E步:根据模型参数计算未标记样本xj属于各高斯混合成分的概率
γ j i = α i ⋅ p ( x j ∣ μ i , Σ i ) ∑ i = 1 N α i ⋅ p ( x j ∣ μ i , Σ i ) \gamma_{ji}=\frac{\alpha_i·p(x_j|\mu_i,\Sigma_i)}{\sum^N_{i=1}\alpha_i·p(x_j|\mu_i,\Sigma_i)} γji=∑i=1Nαi⋅p(xj∣μi,Σi)αi⋅p(xj∣μi,Σi) -
M步:基于E步所得更新模型参数,其中l_i表示第i类有标记样本数目
μ i = 1 ∑ x j ∈ D u γ j i + l i ( ∑ x j ∈ D u γ j i x j + ∑ ( x j , y j ) ∈ D l ∧ y j = i x j ) , \mu_i=\frac{1}{\sum_{x_j\in D_u}\gamma_{ji}+l_i}\left(\sum_{x_j\in D_u}\gamma_{ji}x_j+\sum_{(x_j,y_j)\in D_l∧y_j=i}x_j\right), μi=∑xj∈Duγji+li1 xj∈Du∑γjixj+(xj,yj)∈Dl∧yj=i∑xj ,
Σ i = 1 ∑ x j ∈ D u γ j i + l i ( ∑ x j ∈ D u γ j i ( x j − μ i ) ( x j − μ i ) T + ∑ ( x j , y j ) ∈ D l ∧ y j = i ( x j − μ i ) ( x j − μ i ) T ) , \Sigma_i=\frac{1}{\sum_{x_j\in D_u}\gamma_{ji}+l_i}\left(\sum_{x_j\in D_u}\gamma_{ji}(x_j-\mu_i)(x_j-\mu_i)^T+\sum_{(x_j,y_j)\in D_l∧y_j=i}(x_j-\mu_i)(x_j-\mu_i)^T\right), Σi=∑xj∈Duγji+li1 xj∈Du∑γji(xj−μi)(xj−μi)T+(xj,yj)∈Dl∧yj=i∑(xj−μi)(xj−μi)T ,
α = 1 m ( ∑ x j ∈ D u γ j i + l i ) \alpha = \frac{1}{m}\left(\sum_{x_j\in D_u}\gamma_{ji}+l_i\right) α=m1 xj∈Du∑γji+li 总结:生成式方法就是将未标记样本的标记看作隐变量,使用EM法估计模型参数.
半监督SVM
半监督SVM简称S3VM,其在考虑未标记样本时,试图找到能将有标记样本分开且穿过数据低密度区域的划分超平面.
S3VM中最著名的是TSVM.TSVM尝试先为未标记样本标记,再寻求一个对所有样本最大间隔的划分超平面.TSVM的学习目标如下:
TSVM的训练步骤如下:
- 用有标记样本训练一个SVM,利用此SVM为未标记样本进行标记预测;
- 使用所有样本求解新的划分超平面和松弛向量;
- 找出两个标记为异类且最有可能发生错误(ξ之和大于2)的未标记样本,交换标记;
- 重复第2、3步,直到达到停止条件.
值得注意的是,一开始因为伪标记不一定准确,使用Cu要比Cl小;随着迭代进行,Cu逐渐增大,直到Cu=Cl为止.
图半监督学习
将数据集映射为图,样本对应结点,结点边与样本间相似度有关.半监督学习就是标记在图上扩散的过程.
给定标记样本集合Dl,未标记集合Du,边集基于高斯函数定义为:
(
W
)
i
j
=
{
e
x
p
(
−
∣
∣
x
i
−
x
j
∣
∣
2
2
2
σ
2
)
,
i
f
i
≠
j
;
0
,
o
t
h
e
r
w
i
s
e
,
(W)_{ij}= \begin{cases} exp\left(\frac{-||x_i-x_j||^2_2}{2\sigma^2}\right),\quad if\;i\neq j;\\ 0,\quad\quad\quad \quad\quad\quad \quad otherwise, \end{cases}
(W)ij={exp(2σ2−∣∣xi−xj∣∣22),ifi=j;0,otherwise,
基于边矩阵,定义对角阵:
D
=
d
i
a
g
(
d
1
,
.
.
.
,
d
l
+
u
)
d
i
=
∑
j
=
1
l
+
u
(
W
)
i
j
\begin{aligned} &D=diag(d1,...,d_{l+u})\\ &d_i=\sum^{l+u}_{j=1}(W)_{ij} \end{aligned}
D=diag(d1,...,dl+u)di=j=1∑l+u(W)ij
再定义一个(l+u)x|y|得标记矩阵F,分类规则为 取同行最大值类别.初始化F:
F
(
0
)
=
(
Y
)
i
j
{
1
,
i
f
(
1
≤
i
≤
l
)
∧
(
y
i
=
j
)
;
0
,
o
t
h
e
r
w
i
s
e
.
F(0)=(Y)_{ij} \begin{cases} 1,\quad if\; (1\leq i\leq l)∧(y_i=j);\\ 0,\quad otherwise. \end{cases}
F(0)=(Y)ij{1,if(1≤i≤l)∧(yi=j);0,otherwise.
显然,Y的前l行就是l个有标记样本的标记向量.
基于W构造标记传播矩阵S=D(-1/2)WD{-1/2},于是有迭代计算式:
F
(
t
+
1
)
=
α
⋅
S
⋅
F
(
t
)
+
(
1
−
α
)
Y
F(t+1)=\alpha ·S·F(t)+(1-\alpha)Y
F(t+1)=α⋅S⋅F(t)+(1−α)Y
其中,α是超参数,用于平衡传播项SF(t)和初始项Y.
迭代上式即可收敛标记矩阵,从而预测类别.显然,该模型只对未标记样本进行预测,是直推学习.
基于分歧的方法
通过多个学习器之间的“分歧”来利用未标记数据.代表方法为“协同训练”.
“多视图”数据:一个数据有多个“属性集”,每个属性集对应一个“视图”.
协同训练就是充分利用数据之间的“相同互补性”.训练步骤如下:
核心思想:首先在每个视图上基于有标记样本分别训练训练器,然后让每个分类器选取若干最可能的未标记样本赋予伪标记,再将伪标记样本加入训练集合提供给另一个分类器用于训练更新.不断“相互学习”,直到达到停止条件.
半监督聚类
聚类任务中获得的监督信息大致有两种类型.第一种是“必连与勿连”,前者是指样本必属于同一个簇,后者是指样本必不属于同一个簇;第二种类型是存在少量的标记样本.
约束K均值算法是利用第一种监督信息的代表.该算法是k-means的扩展,在样本点归簇阶段加入了关于“必连与勿连”的约束判断.
基于第二种监督信息的算法代表是“约束种子k均值”.将有标记样本作为初始化的k个聚类中心.
概率图模型
概率图模型是一类用图来表达变量相关关系的概率模型,又称为“变量关系图”.根据边的性质不同,概率图模型可分为两类.第一类称为贝叶斯网,使用有向无环图表示变量间的依赖关系,第二类称为马尔科夫网,使用无向图表示变量间的相互关系.
隐马尔可夫模型
HMM是结构最简单的动态贝叶斯网,主要用于时序数据建模.
HMM的变量可分为两组.第一组是状态变量y,通常隐藏,又被称为“隐变量”;第二组是观测变量x.任一时刻,观测变量的取值仅依赖于状态变量;任一时刻,状态变量仅依赖于前一时刻的状态变量.
马尔可夫链:系统下一时刻的状态仅由当前状态决定,不依赖于以往的任何状态.
基于这种依赖关系,所有变量的联合概率分布为
P
(
x
1
,
y
1
,
.
.
.
,
x
n
,
y
n
)
=
P
(
y
1
)
P
(
x
1
∣
y
1
)
∏
i
=
2
n
P
(
y
i
∣
y
i
−
1
)
P
(
x
i
∣
y
i
)
P(x_1,y_1,...,x_n,y_n)=P(y_1)P(x_1|y_1)\prod^n_{i=2}P(y_i|y_{i-1})P(x_i|y_i)
P(x1,y1,...,xn,yn)=P(y1)P(x1∣y1)i=2∏nP(yi∣yi−1)P(xi∣yi)
- 状态转移概率:模型在各个状态间转换的概率.通常记为NxN矩阵A,其中
a i j = P ( y t + 1 = s j ∣ y t = s i ) , 1 ≤ i , j ≤ N , a_{ij}=P(y_{t+1}=s_j|y_t=s_i),\quad\quad1\leq i,j\leq N, aij=P(yt+1=sj∣yt=si),1≤i,j≤N,
表示在任意时刻t,若状态为si,则下一时刻状态为sj的概率. - 输出观测概率:模型根据当前状态获得各个观测值的概率.通常记为NxM矩阵B,其中
b i j = P ( x t = o j ∣ y t = s i ) , 1 ≤ i ≤ N , 1 ≤ j ≤ M b_{ij}=P(x_t=o_j|y_t=s_i),\quad\quad1\leq i\leq N,1\leq j\leq M bij=P(xt=oj∣yt=si),1≤i≤N,1≤j≤M
表示在任意时刻t,若状态为si,则观察值o~j被获取的概率. - 初始状态概率:模型在初始时刻各状态出现的概率.通常记为π,其中
π i = P ( y 1 = s i ) , 1 ≤ i ≤ N \pi_i=P(y_1=s_i),\quad\quad1\leq i\leq N πi=P(y1=si),1≤i≤N
实际应用中,HMM有三个基本问题:
- 如何评估模型与观测序列之间的匹配程度?
- 如何根据观测序列推测出隐藏的模型状态?
- 如何训练模型使其能最好地描述观测数据?
马尔可夫随机场
MRF是典型的马尔可夫网,存在一组势函数,也称“因子”,用于定义概率分布函数.
对于无向图MRF而言,若其中任意两结点间都有边,则称该结点子集为“团”;若在一个团中加入另外任何一个结点都不再形成团,则称该团为“极大团”;显然,每个结点至少出现在一个极大团中.
马尔可夫网的联合概率P(x)定义为
P
(
x
)
=
1
Z
∏
Q
∈
C
φ
Q
(
x
Q
)
P(x)=\frac{1}{Z}\prod_{Q\in C}φ_Q(x_Q)
P(x)=Z1Q∈C∏φQ(xQ)
其中,Q代表某一个极大团,xQ代表该团对应的变量集合,φQ为该团的势函数,Z为规范因子.
MRF通过“分离”的概念得到“条件独立性”.若结点集A的结点到B中的结点都必须经过结点集C中的结点,则称AB被C分离,C为“分离集”.
全局马尔可夫性: 给定两个变量的分离集,则这两个变量子集条件独立.
局部马尔可夫性: 给定某变量的邻接变量,则该变量条件独立于其他变量.
成对马尔可夫性:给定所有其他变量,两个非邻接变量条件独立.
势函数的几个性质:是非负函数,在所偏好的变量取值上有较大的函数值,指数函数常用于定义势函数.
条件随机场
CRF是一种判别式无向图模型,它与前面两个生成式模型不同.生成式是对联合分布进行建模,判别式是对条件分布进行建模.
CRF目标是构建条件概率模型P(y|x),即在给定观测序列x后预测标记序列y.CRF中观测序列满足马尔可夫性.在CRF中,通过选用指数势函数并引入特征函数定义条件概率:
P
(
y
∣
x
)
=
1
Z
e
x
p
(
∑
j
∑
i
=
1
n
−
1
λ
j
t
j
(
y
i
+
1
,
y
i
,
x
,
i
)
+
∑
k
∑
i
=
1
n
μ
k
s
k
(
y
i
,
x
,
i
)
)
P(y|x)=\frac{1}{Z}exp\left(\sum_j\sum^{n-1}_{i=1}\lambda_jt_j(y_{i+1},y_i,x,i)+\sum_k\sum^n_{i=1}\mu_ks_k(y_i,x,i)\right)
P(y∣x)=Z1exp(j∑i=1∑n−1λjtj(yi+1,yi,x,i)+k∑i=1∑nμksk(yi,x,i))
其中t函数是观测序列上相邻标记的转移特征函数,用于刻画相邻标记间的关系以及观测序列对其影响; s函数是观测序列的标记位置上的状态特征函数,用于刻画观测序列对标记变量的影响; λ和μ是参数,Z是规范化因子.
t特征函数和s特征函数往往是实值函数,如sign函数.
学习和推断
边际化:给定参数Θ求解某个变量x的分布,转化为对联合分布中其他无关变量进行积分的过程.
将参数视为待推测的变量,则将参数估计转化为了推测问题.概率图模型的推断方法大致有两种:精确推断方法和近似推断方法.前者计算复杂度过高,后者更加常用.
近似推断
近似推断大致可分为两类:第一类是采样,通过使用随机化方法完成近似;第二类是使用确定性近似完成推断.
话题模型
话题模型是生成式有向图,主要用于处理离散型数据.隐狄利克雷分配模型LDA是典型代表.
词:待处理数据的基本离散单元.例如单词;
文档:待处理数据对象,由一组词构成.例如文章.无序文档被称为“词袋”;
话题:表示一系列相关的词,以及对应出现的概率.
数据集中的词来自一个包含N个词的词典.用T个N维向量表示数据集(文档集合),K个N维向量表示话题.LDA用生成式模型的角度看待文档和话题.用参数Θ(t,k)表示文档t中话题k的比例,进而通过以下步骤由话题生成文档t:
- 根据参数α的狄利克雷分布随机采样一个话题分布Θt;
- 根据Θt进行话题指派(每个词属于哪个话题),得到文档t中词n的话题zt,n;
- 根据指派的话题所对应的词频分布βk随机采样生成词.
因此,LDA模型对应的概率分布为
p
(
W
,
z
,
β
,
Θ
∣
α
,
η
)
=
∏
t
=
1
T
p
(
Θ
t
∣
α
)
∏
i
=
1
K
p
(
β
k
∣
η
)
(
∏
n
=
1
N
P
(
w
t
,
n
∣
z
t
,
n
,
β
k
)
P
(
z
t
,
n
∣
Θ
t
)
)
p(W,z,\beta,\Theta |\alpha,\eta)=\prod^T_{t=1}p(\Theta_t|\alpha)\prod^K_{i=1}p(\beta_k|\eta)\left(\prod^N_{n=1}P(w_{t,n}|z_{t,n},\beta_k)P(z_{t,n}|\Theta_t)\right)
p(W,z,β,Θ∣α,η)=t=1∏Tp(Θt∣α)i=1∏Kp(βk∣η)(n=1∏NP(wt,n∣zt,n,βk)P(zt,n∣Θt))
其中W为文档中的词频矩阵,z为词的话题指派,β为话题对应词频,Θ为文档的话题分布;α是狄利克雷分布的参数,η影响话题的词频.
规则学习
基本概念
规则学习相较于NN、SVM这类“黑箱模型”,具有更好的可解释性.规则学习即从训练数据中学习出对未见示例进行判别的逻辑,形如:
⊕
←
f
1
∧
f
2
∧
⋅
⋅
⋅
∧
f
L
⊕←f_1 \wedge f_2 \wedge ···\wedge f_L
⊕←f1∧f2∧⋅⋅⋅∧fL
右半边被称为“规则体”,左边被称为“规则头”.fk都是关于属性的布尔表达式.
规则集合中的每条规则都可看作是一个子模型,这与集成学习相似.不同规则的判别结果不同,有三种处理“冲突”的方式:第一种投票法;第二种排序法,通过“带序规则”的学习过程,为不同规则确定优先级;第三种元规则法,即事先制定规则.
规则学习通常会设置一条“默认规则”来处理规则集合未覆盖的样本.
从形式语言表达能力而言,规则分为两种:
- 命题规则:由“原子命题”和逻辑连接符构成的简单陈述句
- 一阶规则(关系型规则):基本成分是能描述事物的属性或关系的“原子公式”
序贯覆盖
规则学习的目的是产生一个覆盖尽可能多样例的规则集.序贯覆盖,即逐条归纳,也被称为“分治”策略:在训练集上每学到一条规则就将该规则覆盖的训练样例去除,然后用剩下的样例进行迭代.
基本做法为:从空规则“⊕←”开始,以正例类别为规则头,遍历训练集的属性取值并尝试加入规则体,若能使规则体仅覆盖正例,则产生一条规则;再去除被覆盖的正例,继续迭代.
但这种穷举法成本较高,通常由两种规则生成策略:
- “生成-测试法”: 自顶向下,从一般规则开始逐渐特化;
- “数据驱动法”: 自底向上,从特殊规则开始逐渐泛化.
后者适合训练样本较少的情况;前者泛化性能更好,鲁棒性更强,更多使用.
剪枝优化
剪枝来缓解规则生成的过拟合风险.剪枝可以像“决策树”剪枝一样,基于性能指标来决策是否剪枝;也可以借助统计显著性检验来进行,如CN2算法.
CN2算法在预剪枝时使用似然率估计量LRS衡量规则覆盖样例的分布与训练集经验分布的差别;再后剪枝时运用“减错剪枝REP”策略,不展开讨论.
一阶规则学习
一阶规则学习利用对象之间的“关系”定义逻辑表达.如,由样本属性转化而来的“色泽更深”“根蒂更蜷”等原子公式被称为“背景知识”,背景知识构成“关系数据”;由样本类别转化而来的“更好”“更差”的原子公式称为关系数据样例.例如:
(
∀
X
,
∀
Y
)
(
更好
(
X
,
Y
)
←
根蒂更蜷
(
X
,
Y
)
∧
脐部更凹
(
X
,
Y
)
)
(\forall X,\forall Y)(更好(X,Y)←根蒂更蜷(X,Y)\wedge 脐部更凹(X,Y))
(∀X,∀Y)(更好(X,Y)←根蒂更蜷(X,Y)∧脐部更凹(X,Y))
FOIL是著名的一阶规则学习算法,其采用序贯覆盖框架以及自顶向下策略.通过FOIL增益来选择原子公式:
F
_
G
a
i
n
=
m
+
∗
×
(
l
o
g
2
m
+
∗
m
+
∗
+
m
−
∗
−
l
o
g
2
m
+
m
+
+
m
−
)
F\_Gain=m^*_+ \times \left(log_2\frac{m^*_+}{m^*_++m^*_-}-log_2\frac{m_+}{m_++m_-}\right)
F_Gain=m+∗×(log2m+∗+m−∗m+∗−log2m++m−m+)
其中,+ -分别代表规则下所覆盖正反例数目;*代表是新规则下的数值.
归纳逻辑程序设计
在一阶规则学习中引入了函数和逻辑表达式嵌套.
采用自底向上的规则生成策略.涉及到最小一般泛化策略和逆归结策略(有点抽象,跳过)
强化学习
任务与奖赏
强化学习:机器在训练中每一个操作都能得到来自环境的一个反馈和奖赏.
强化学习任务通常用马尔可夫决策过程来描述,任务对应了四元组E=<X,A,P,R>.其中,X表示状态空间;A表示动作空间;P表示通过动作a从状态x1转换到状态x2的概率;R表示对应的奖赏函数.
机器的目标是学习一个策略,能满足在状态x下判断要执行动作a(x).策略的表示分为确定性表示也有概率性表示.在学习的过程中,正确策略不断累积奖赏,使得长期累积奖赏最大化.常用的计算方式有“T步累积奖赏”和“γ折扣累积奖赏”.
强化学习和有监督学习有一定相似性.但强化学习中并没有有标记样本,只有当训练结束才能对机器进行反馈.
K-摇臂赌博机
通过“最大单步奖赏”来加速强化学习模型的训练.
“最大化单步奖赏”需要先知道每个动作的奖赏(探索),再执行奖赏最大的动作(利用).但其实这两步骤是矛盾的,被称为“探索-利用窘境”.(这和“K-摇臂赌博机”模型一样)
ε-贪心
ε-贪心基于概率对探索和利用进行折中,即每次尝试,有ε概率进行探索,1-ε概率进行利用.平均奖赏的增量公式为
Q
n
(
k
)
=
1
n
(
(
n
−
1
)
×
Q
n
−
1
(
k
)
+
v
n
)
Q_n(k)=\frac{1}{n}((n-1)\times Q_{n-1}(k)+v_n)
Qn(k)=n1((n−1)×Qn−1(k)+vn)
其中,Qi(k)表示第k个动作在第n次尝试后的平均奖赏;(n-1)是已尝试次数;vn是第n次尝试获得的奖赏.ε-贪心算法如下
Softmax
Softmax算法基于当前动作平均奖赏来进行折中.平均奖赏却高,被选取概率越高.选取概率基于Boltzmann分布
P
(
k
)
=
e
x
p
(
Q
(
k
)
τ
)
∑
i
=
1
K
e
x
p
(
Q
(
i
)
τ
)
P(k)=\frac{exp(\frac{Q(k)}{τ})}{\sum^K_{i=1}exp(\frac{Q(i)}{τ})}
P(k)=∑i=1Kexp(τQ(i))exp(τQ(k))
其中,Q(i)是动作i的平均奖赏; τ>0被称为“温度”,τ越小则越偏向“仅利用”,τ越大越偏向“仅探索”.算法如下:
有模型学习
在已知模型的环境中学习称为“有模型学习”.这种情况下的状态转移概率和奖赏函数都是已知的.
策略评估
通过阶段性累积奖赏来评估策略.令Vπ(x)称为“状态值函数,”表示从状态x出发,使用策略π所得累积奖赏;Qπ(x,a)称为“状态-动作值函数”表示从状态a出发,执行动作a后再使用策略π所得累积奖赏.
T步累积奖赏递推式如下:
V
T
π
(
x
)
=
∑
a
∈
A
π
(
x
,
a
)
∑
x
′
∈
X
P
x
→
x
′
a
(
1
T
R
x
→
x
′
a
+
T
−
1
T
V
T
−
1
π
(
x
′
)
)
V^\pi_T(x)=\sum_{a\in A}\pi(x, a)\sum_{x'\in X}P^a_{x→x'}\left(\frac{1}{T}R^a_{x→x'}+\frac{T-1}{T}V^\pi_{T-1}(x')\right)
VTπ(x)=a∈A∑π(x,a)x′∈X∑Px→x′a(T1Rx→x′a+TT−1VT−1π(x′))
γ折扣累积奖赏递推式如下:
V
γ
π
(
x
)
=
∑
a
∈
A
π
(
x
,
a
)
∑
x
′
∈
X
P
x
→
x
′
a
(
R
x
→
x
′
a
+
γ
V
γ
π
(
x
′
)
)
V^\pi_\gamma(x)=\sum_{a\in A}\pi(x, a)\sum_{x'\in X}P^a_{x→x'}(R^a_{x→x'}+\gamma V^\pi_\gamma(x'))
Vγπ(x)=a∈A∑π(x,a)x′∈X∑Px→x′a(Rx→x′a+γVγπ(x′))
以上两个公式被称为Bellman等式.
基于T步累积奖赏的策略评估算法如下:
有了Bellman等式(状态值函数),就能计算出状态动作函数:
Q
T
π
(
x
,
a
)
=
∑
x
′
∈
X
P
x
→
x
′
a
(
1
T
R
x
→
x
′
a
+
T
−
1
T
V
T
−
1
π
(
x
′
)
)
Q
γ
π
(
x
,
a
)
=
∑
x
′
∈
X
P
x
→
x
′
a
(
R
x
→
x
′
a
+
γ
V
γ
π
(
x
′
)
)
\begin{aligned} &Q^\pi_T(x,a)=\sum_{x'\in X}P^a_{x→x'}\left(\frac{1}{T}R^a_{x→x'}+\frac{T-1}{T}V^\pi_{T-1}(x')\right)\\ &Q^\pi_\gamma(x,a)=\sum_{x'\in X}P^a_{x→x'}(R^a_{x→x'}+\gamma V^\pi_\gamma(x')) \end{aligned}
QTπ(x,a)=x′∈X∑Px→x′a(T1Rx→x′a+TT−1VT−1π(x′))Qγπ(x,a)=x′∈X∑Px→x′a(Rx→x′a+γVγπ(x′))
策略改进
一个强化学习可能多个最优策略,但有的策略是“不合法”的.对Bellman等式做一个改动,即对动作的求和改为取最优.
对应的最优状态值函数为:
V
T
∗
(
x
)
=
m
a
x
a
∈
A
∑
x
′
∈
X
P
x
→
x
′
a
(
1
T
R
x
→
x
′
a
+
T
−
1
T
V
T
−
1
∗
(
x
′
)
)
V
γ
∗
(
x
)
=
m
a
x
a
∈
A
∑
x
′
∈
X
P
x
→
x
′
a
(
R
x
→
x
′
a
+
γ
V
γ
∗
(
x
′
)
)
\begin{aligned} &V^*_T(x)=\underset{a\in A}{max}\sum_{x'\in X}P^a_{x→x'}\left(\frac{1}{T}R^a_{x→x'}+\frac{T-1}{T}V^*_{T-1}(x')\right)\\ &V^*_\gamma(x)=\underset{a\in A}{max}\sum_{x'\in X}P^a_{x→x'}(R^a_{x→x'}+\gamma V^*_\gamma(x')) \end{aligned}
VT∗(x)=a∈Amaxx′∈X∑Px→x′a(T1Rx→x′a+TT−1VT−1∗(x′))Vγ∗(x)=a∈Amaxx′∈X∑Px→x′a(Rx→x′a+γVγ∗(x′))
对应的最优状态-动作函数为:
Q
T
∗
(
x
,
a
)
=
∑
x
′
∈
X
P
x
→
x
′
a
(
1
T
R
x
→
x
′
a
+
T
−
1
T
m
a
x
a
′
∈
A
Q
T
−
1
∗
(
x
′
,
a
′
)
)
Q
γ
∗
(
x
,
a
)
=
∑
x
′
∈
X
P
x
→
x
′
a
(
R
x
→
x
′
a
+
γ
m
a
x
a
′
∈
A
Q
γ
∗
(
x
′
,
a
′
)
)
\begin{aligned} &Q^*_T(x,a)=\sum_{x'\in X}P^a_{x→x'}\left(\frac{1}{T}R^a_{x→x'}+\frac{T-1}{T}\underset{a'\in A}{max}Q^*_{T-1}(x',a')\right)\\ &Q^*_\gamma(x,a)=\sum_{x'\in X}P^a_{x→x'}(R^a_{x→x'}+\gamma \underset{a'\in A}{max}Q^*_\gamma(x',a')) \end{aligned}
QT∗(x,a)=x′∈X∑Px→x′a(T1Rx→x′a+TT−1a′∈AmaxQT−1∗(x′,a′))Qγ∗(x,a)=x′∈X∑Px→x′a(Rx→x′a+γa′∈AmaxQγ∗(x′,a′))
以上关于最优值函数的等式被称为最优Bellman等式,其唯一解是最优值函数.该等式揭示了改进方式:将策略选择的动作改变为当前最优的动作.
策略迭代与值迭代
前两部分讲述了如何评估策略,如何优化策略,将两者结合起来循环直至收敛,这被称为“策略迭代”.
基于T步累积奖赏的策略迭代算法如下:
此外,策略改进与值函数的改进是一致的,因此将策略改进视为值函数的改善,可得
V
T
(
x
)
=
m
a
x
a
∈
A
∑
x
′
∈
X
P
x
→
x
′
a
(
1
T
R
x
→
x
′
a
+
T
−
1
T
V
T
−
1
(
x
′
)
)
V
γ
(
x
)
=
m
a
x
a
∈
A
∑
x
′
∈
X
P
x
→
x
′
a
(
R
x
→
x
′
a
+
γ
V
γ
∗
(
x
′
)
)
\begin{aligned} &V_T(x)=\underset{a\in A}{max}\sum_{x'\in X}P^a_{x→x'}\left(\frac{1}{T}R^a_{x→x'}+\frac{T-1}{T}V_{T-1}(x')\right)\\ &V_\gamma(x)=\underset{a\in A}{max}\sum_{x'\in X}P^a_{x→x'}(R^a_{x→x'}+\gamma V^*_\gamma(x')) \end{aligned}
VT(x)=a∈Amaxx′∈X∑Px→x′a(T1Rx→x′a+TT−1VT−1(x′))Vγ(x)=a∈Amaxx′∈X∑Px→x′a(Rx→x′a+γVγ∗(x′))
个人理解:值函数是计算最终奖赏值的函数,策略改进的目的就是最大化最终奖赏.
基于T步累积奖赏的值迭代算法如下:
可以看出,模型已知时强化学习任务归结为基于动态规划的寻优问题.与监督学习不同,这里并未涉及到泛化能力.
免模型学习
现实中的强化学习任务很难得知相关的转移概率和奖赏函数.这种不依赖于环境的算法被称为“免模型学习”
蒙特卡罗强化学习
免模型算法需要克服策略无法评估的问题.蒙特卡罗强化学习采用平均累积奖赏代替期望累积奖赏.由于采样必须有限次,所以该方法更适合T步累积奖赏任务.
还有几个改动的地方:估计对象由状态值函数V变为状态-动作值函数Q,机器只能从起始状态开始探索.
该算法思想为:从起始状态出发,采用某种策略采样,执行T步,获得对应状态、动作、奖赏数据对;多次采样后,为每一个“状态-动作”的累积奖赏值取平均值,即得到Q的估计.采样时的策略也要有所不同.以下是算法伪代码:
该算法在策略评估和策略使用时都引入了ε-贪心策略,使用被称为“同策略蒙特卡罗强化学习算法”,改进版的“异策略蒙特卡罗强化学习算法”改进的是原始策略,在此不展开说明.
时序差分学习
TD结合了动态规划与蒙特卡罗方法的思想,更加高效.
蒙特卡罗对平均累计奖励的计算是“批处理式”的,TD将其改为增量式.对应的同策略算法被称为Sarsa算法如下所示.同样的不对对应的异策略算法“Q-学习算法”进行叙述.
值函数近似
在之前有限状态空间中,值函数能表示成一个数组;现实中的状态空间往往连续,解决方法之一是离散化,之二是对连续状态空间的值函数进行学习.将值函数表达为状态的线性函数:
V
θ
(
x
)
=
θ
T
x
V_\theta(x)=\theta^Tx
Vθ(x)=θTx
此时值函数难以精确记录每个状态的值,这样的值函数求解被称为“值函数近似”.
用最小二乘误差来度量值函数和真实值之间的误差,再用梯度下降法求得对单个样本的更新规则:
θ
=
θ
+
α
(
V
π
(
x
)
−
V
θ
(
x
)
)
x
\theta=\theta+\alpha(V^\pi(x)-V_\theta(x))x
θ=θ+α(Vπ(x)−Vθ(x))x
基于线性值函数近似来替代Sarsa算法中的值函数,得到“线性值函数近似Sarsa算法”:
模仿学习
强化学习中帮助决策的信息仅有多步决策后的累积奖赏.如果有范例供以学习,则称为“模仿学习”.
直接模仿学习
记范例的“状态-动作”序列为新的数据集,将状态作为特征,动作作为标记.对于新数据集训练学习器进行对应预测.
逆强化学习
从范例中反推奖赏函数被称为“逆强化学习”.逆强化学习的基本思想是:寻找某种奖赏函数使得范例数据最优,即可使用该奖赏函数来训练强化学习策略.
假设奖赏函数能表达为状态的线性函数,即R(x)=wTx.于是策略π的累积奖赏等于状态向量加权和的期望与系数w的内积,即:
ρ
π
=
w
T
E
(
∑
t
=
0
+
∞
γ
t
x
t
∣
π
)
\rho^\pi=w^TE(\sum^{+\infty}_{t=0}\gamma^tx_t|\pi)
ρπ=wTE(t=0∑+∞γtxt∣π)
若令最优奖赏函数状态向量的期望为bar(x)*,任意策略状态向量的期望bar(x)π,即可得最优奖赏函数的参数
w
∗
=
a
r
g
m
a
x
w
m
i
n
π
w
T
(
x
ˉ
∗
−
x
ˉ
π
)
s
.
t
.
∣
∣
w
∣
∣
≤
1
w^*=\underset{w}{argmax}\;\underset{\pi}{min}w^T(\bar x^*-\bar x^\pi)\\ s.t.||w|| \leq 1
w∗=wargmaxπminwT(xˉ∗−xˉπ)s.t.∣∣w∣∣≤1
显然,我们难以获得所有策略.一种方法是从随机策略开始,迭代求解更好的奖赏函数.迭代式逆强化学习算法如下: