# 机器学习基本概念
# 机器学习的核心:归纳偏置(Inductive Bias,或称为归纳性偏好)
归纳——从一些例子(如训练数据)中寻找共性、泛化,形成一个较通用的规则的过程;
偏置——机器学习算法在学习过程中对某种类型假设的 偏好 ,也可理解为学习过程中需要去预测 “其未遇到过的输入” 的结果时所进行的一些帮助它做出选择的 假设 。
# 机器学习的基本过程
从原始数据中提取特征
学习映射函数f f f
通过映射函数f f f 将原始数据映射到语义任务空间(属于希尔伯特空间),即寻找数据和任务目标之间的关系
# 机器学习典型例子
基于图像数据进行类别分类
基于文本数据进行情感分类
# 机器学习的分类
监督学习(supervised learning) :数据有标签、一般为回归或分类等任务
包括:决策树、朴素贝叶斯、SVM、KNN、Adaboost等
非监督学习(un-supervised learning) :数据无标签、一般为聚类或若干降维任务
包括:K-means,最大期望算法等,其中一个子分类是对比学习(Contrastive Learning)
半监督学习(semi-supervised learning):介于监督学习与半监督学习之间,部分数据有标签
强化学习(reinforcement learning) :序列数据决策学习,一般为与从环境交互中学习
# 机器学习:分类问题
首先,提供具有标签的数据
其次,映射函数f f f 学习后得到隐含的模式,并进行挖掘和甄别
最后,将具有特定特征的数据划分为特定类别
# 监督学习
# 监督学习的重要元素
标注数据:标识了类别信息的数据(学什么)
学习模型:如何学习得到映射模型(怎么学)
损失函数:如何对学习结果进行度量(是否学到)
# 损失函数
在监督学习中,标注数据被划分为训练集,验证集和测试集
训练集:用于训练学习模型
验证集:在训练过程中验证模型的效果
测试集:在训练完成后用于测试模型效果
训练集中一共有n n n 个标注数据,第i i i 个标注数据记为( x i , y i ) (x_i, y_i) ( x i , y i ) ,其中第i i i 个样本数据为x i x_i x i ,y i y_i y i 是x i x_i x i 的标注信息。
从训练数据中学习得到的映射函数记为f f f , f f f 对x i x_i x i 的预测结果记为f ( x i ) f(x_i) f ( x i ) 。损失函数就是用来计算x i x_i x i 真实值y i y_i y i 与预测值f ( x i ) f(x_i) f ( x i ) 之间差值的函数。
很显然,在训练过程中希望映射函数在训练数据集上得到“损失”之和最小,即min ∑ i = 1 n L o s s ( f ( x i ) , y i ) \min \sum_{i=1}^n Loss(f(x_i),y_i) min ∑ i = 1 n L oss ( f ( x i ) , y i )
常用损失函数:
0-1损失函数:L o s s ( y i , f ( x i ) ) = { 1 , f ( x i ) ≠ y i 0 , f ( x i ) = y i Loss(y_i, f(x_i)) = \begin{cases}
1, & f(x_i) \neq y_i \\
0, & f(x_i) = y_i
\end{cases} L oss ( y i , f ( x i )) = { 1 , 0 , f ( x i ) = y i f ( x i ) = y i
平方损失函数:L o s s ( y i , f ( x i ) ) = ( y i − f ( x i ) ) 2 Loss(y_i, f(x_i)) = (y_i - f(x_i))^2 L oss ( y i , f ( x i )) = ( y i − f ( x i ) ) 2
绝对损失函数:L o s s ( y i , f ( x i ) ) = ∣ y i − f ( x i ) ∣ Loss(y_i, f(x_i)) = |y_i - f(x_i)| L oss ( y i , f ( x i )) = ∣ y i − f ( x i ) ∣
对数(似然)损失函数:L o s s ( y i , P ( y i ∣ x i ) ) = − l o g P ( y i ∣ x i ) Loss(y_i, P(y_i|x_i)) = -logP(y_i|x_i) L oss ( y i , P ( y i ∣ x i )) = − l o g P ( y i ∣ x i )
# 经验风险与期望风险
经验风险(empirical risk) :训练集中数据产生的损失。经验风险越小说明学习模型对训练数据拟合程度越好。
期望风险(expected risk) :当测试集中存在无穷多数据时产生的损失。期望风险越小,学习所得模型越好。
映射函数训练目标:
经验风险最小化(empirical risk minimization) :min f ∈ Φ 1 n ∑ i = 1 n L o s s ( y i , f ( x i ) ) \min_{f\in\Phi}\frac{1}{n}\sum_{i=1}^nLoss(y_i,f(x_i)) min f ∈ Φ n 1 ∑ i = 1 n L oss ( y i , f ( x i )) (即n n n 个训练样本平均损失最小)
这里的L o s s ( ) Loss() L oss ( ) 函数一般使用 交叉熵损失函数(cross entropy loss) 。
期望风险最小化(expected risk minimization) :min f ∈ Φ ∫ x × y L o s s ( y , f ( x ) ) P ( x , y ) d x d y \min_{f\in\Phi}\int_{x\times y}Loss(y,f(x))P(x,y)dxdy min f ∈ Φ ∫ x × y L oss ( y , f ( x )) P ( x , y ) d x d y
P ( x , y ) P(x,y) P ( x , y ) 是数据的真实联合概率分布,描述了数据生成过程。
积分表示对所有可能的( x , y ) (x,y) ( x , y ) 求期望,即模型在未知数据上的平均表现。
期望风险是模型关于联合分布期望损失,经验风险是模型关于训练样本集平均损失。
根据大数定律,当样本容量趋于无穷时,经验风险趋于期望风险。所以在实践中很自然用经验风险来估计期望风险。
由于现实中训练样本数目有限,用经验风险估计期望风险并不理想(P ( x , y ) P(x,y) P ( x , y ) 不容易计算),要对经验风险进行一定的约束。
# 过拟合(over-fitting)与欠拟合(under-fitting)
经验风险
期望风险
模型泛化能力
小(训练集上表现好)
小(测试集上表现好)
泛化能力强
小(训练集上表现好)
大(测试集上表现不好)
过学习(模型过于复杂)
大(训练集上表现不好)
大(测试集上表现不好)
欠学习
大(训练集上表现不好)
小(测试集上表现好)
“神仙算法” 或“黄梁美梦”
如何判断模型过拟合/欠拟合?
在训练/测试过程中输出L o s s Loss L oss 函数值,综合判断。
如何防止欠拟合?
换性能更强的模型;
给当前模型喂更多数据;
调整损失函数。
如何防止过拟合?
# 结构风险最小化(structural risk minimization)
经验风险最小化:仅反映了局部数据
期望风险最小化:无法得到全量数据
结构风险最小化:
为了防止过拟合,在经验风险上加上表示模型复杂度的正则化项(regulatizer) 或惩罚项(penalty term) :
min f ∈ Φ 1 n ∑ i = 1 n L o s s ( y i , f ( x i ) ) + λ J ( f ) \min_{f\in\Phi}\frac{1}{n}\sum_{i=1}^nLoss(y_i,f(x_i)) + \lambda J(f) min f ∈ Φ n 1 ∑ i = 1 n L oss ( y i , f ( x i )) + λ J ( f )
其中L o s s ( y i , f ( x i ) ) Loss(y_i,f(x_i)) L oss ( y i , f ( x i )) 为经验风险,λ J ( f ) \lambda J(f) λ J ( f ) 为模型复杂度
这样可以在最小化经验风险与降低模型复杂度之间寻找平衡
也可以使用L 1 L1 L 1 范数正则化(LASSO正则化):min f ∈ Φ 1 n ∑ i = 1 n L o s s ( y i , f ( x i ) ) + λ ∥ w ∥ 1 \min_{f\in\Phi}\frac{1}{n}\sum_{i=1}^nLoss(y_i,f(x_i))+\lambda\|w\|_1 min f ∈ Φ n 1 ∑ i = 1 n L oss ( y i , f ( x i )) + λ ∥ w ∥ 1
其中:
∣ w ∣ 1 = ∑ j = 1 d ∣ w j ∣ |w|_1 = \sum_{j=1}^d |w_j| ∣ w ∣ 1 = ∑ j = 1 d ∣ w j ∣ 是模型参数w w w 的L 1 L1 L 1 范数
λ > 0 \lambda > 0 λ > 0 是正则化强度参数
w w w 是模型的权重向量
这样可以让数据稀疏化,以降低过拟合/欠拟合风险
# 监督学习的两种方法
监督学习方法又可以分为 生成方法(generative approach) 和 判别方法(discriminative approach) 。所学到的模型分别称为 生成模型(generative model) 和 判别模型(discriminative model) .
判别模型
判别方法直接学习判别函数f ( X ) f(X) f ( X ) 或者条件概率分布P ( Y ∣ X ) P(Y|X) P ( Y ∣ X ) 作为预测的模型,即判别模型。
判别模型关心在给定输入数据下,预测该数据的输出是什么。
典型判别模型包括回归模型、神经网络、支持向量机和Ada boosting等。
生成模型
生成模型从数据中学习联合概率分布P ( X , Y ) P(X,Y) P ( X , Y ) (通过似然概率P ( Y ∣ X ) P(Y|X) P ( Y ∣ X ) 和类概率P ( Y ) P(Y) P ( Y ) 的乘积来求取):
P ( Y ∣ X ) = P ( X , Y ) P ( X ) P(Y|X)=\frac{P(X,Y)}{P(X)} P ( Y ∣ X ) = P ( X ) P ( X , Y ) 或者P ( Y ∣ X ) = P ( X ∣ Y ) × P ( Y ) P ( X ) P(Y|X)=\frac{P(X|Y)\times P(Y)}{P(X)} P ( Y ∣ X ) = P ( X ) P ( X ∣ Y ) × P ( Y ) (注:似然概率P ( Y ∣ X ) P(Y|X) P ( Y ∣ X ) 为计算导致样本X X X 出现的模型参数值)
典型方法为贝叶斯方法、隐马尔可夫链
授之于鱼、不如授之于“渔”
联合分布概率P ( X , Y ) P(X,Y) P ( X , Y ) 或似然概率P ( X ∣ Y ) P(X|Y) P ( X ∣ Y ) 求取很困难
# 回归分析
分析不同变量之间存在关系的研究叫回归分析,刻画不同变量之间关系的模型被称为回归模型。
一旦确定了回归模型,就可以进行预测等分析工作。
# 线性回归 (linear regression)
回归(regression)一词的由来:
源于英国生物学家兼统计学家高尔顿在研究父母身高与子女身高之间的关系时,发现父母平均身高每增加一个单位, 其成年子女平均身高只增加0.516个单位,它反映了这种“衰退(regression)”效应(“回归”到正常人平均身高)。
虽然x x x 和y y y 之间并不总是具有“衰退”(回归)关系,但是“线性回归”这一名称就保留了下来了。
线性回归的参数:需要从标注数据中学习得到(监督学习)
注:以下回归参数推导过程不需要手推,会写代码套公式即可。
# 一元线性回归
回归模型:y = a x + b y=ax+b y = a x + b
求取:最佳回归模型是最小化残差平方和(Residual Sum of Squares,简称RSS)的均值,即要求N N N 组( x , y ) (x,y) ( x , y ) 数据得到的残差平均值1 N Σ ( y − y ~ ) 2 \frac{1}{N}\Sigma(y-\widetilde{y})^2 N 1 Σ ( y − y ) 2 最小。残差平均值最小只与参数a a a 和b b b 有关,最优解即是使得残差最小所对应的a a a 和b b b 的值。
目标:寻找一组a a a 和b b b ,使得误差总和L ( a , b ) = ∑ i = 1 n ( y i − a × x i − b ) 2 L(a,b)=\sum_{i=1}^n(y_i-a\times x_i-b)^2 L ( a , b ) = ∑ i = 1 n ( y i − a × x i − b ) 2 值最小。在线性回归中,解决如此目标的方法叫 最小二乘法 。
一般而言,要使函数具有最小值,可对L ( a , b ) L(a,b) L ( a , b ) 的参数a a a 和b b b 分别求导,令其导数值为零,再求取参数a a a 和b b b 的取值。
∂ L ( a , b ) ∂ a = ∑ i = 1 n 2 ( y i − a x i − b ) ( − x i ) = 0 将 b = y ˉ − a x ˉ ( y ˉ = ∑ i = 1 n y i n , x ˉ = ∑ i = 1 n x i n ) 代入上式 → ∑ i = 1 n ( y i − a x i − y ˉ + a x ˉ ) ( x i ) = 0 → ∑ i = 1 n ( y i x i − a x i x i − y ˉ x i + a x ˉ x i ) = 0 → ∑ i = 1 n ( y i x i − y ˉ x i ) − a ∑ i = 1 n ( x i x i − x ˉ x i ) = 0 → ( ∑ i = 1 n x i y i − n x ˉ y ˉ ) − a ( ∑ i = 1 n x i x i − n x ˉ 2 ) = 0 → a = ∑ i = 1 n x i y i − n x ˉ y ˉ ∑ i = 1 n x i x i − n x ˉ 2 ∂ L ( a , b ) ∂ b = ∑ i = 1 n 2 ( y i − a x i − b ) ( − 1 ) = 0 → ∑ i = 1 n ( y i − a x i − b ) = 0 → ∑ i = 1 n ( y i ) − a ∑ i = 1 n x i − ∑ i = 1 n b = 0 → n y ‾ − a n x ‾ − n b = 0 → b = y ‾ − a x ‾ \begin{gathered}
\frac{\partial L(a,b)}{\partial a}=\sum_{i=1}^n2(y_i-ax_i-b)(-x_i)=0
\text{将}b=\bar{y}-a\bar{x}(\bar{y}=\frac{\sum_{i=1}^ny_i}{n},\bar{x}=\frac{\sum_{i=1}^nx_i}{n})\text{代入上式}
\to\sum_{i=1}^n(y_i-ax_i-\bar{y}+a\bar{x})(x_i)=0
\to\sum_{i=1}^n(y_ix_i-ax_ix_i-\bar{y}x_i+a\bar{x}x_i)=0
\to\sum_{i=1}^n(y_ix_i-\bar{y}x_i)-a\sum_{i=1}^n(x_ix_i-\bar{x}x_i)=0
\to(\sum_{i=1}^nx_iy_i-n\bar{x}\bar{y})-a(\sum_{i=1}^nx_ix_i-n\bar{x}^2)=0
\to a=\frac{\sum_{i=1}^nx_iy_i-n\bar{x}\bar{y}}{\sum_{i=1}^nx_ix_i-n\bar{x}^2}
\end{gathered}
\begin{aligned}
& \frac{\partial L(a,b)}{\partial b}=\sum_{i=1}^n2(y_i-ax_i-b)(-1)=0
& \to\sum_{i=1}^n(y_i-ax_i-b)=0
& \to\sum_{i=1}^n(y_i)-a\sum_{i=1}^nx_i-\sum_{i=1}^nb=0
& \to n\overline{y}-an\overline{x}-nb=0
& \to b=\overline{y}-a\overline{x}
\end{aligned}
∂ a ∂ L ( a , b ) = i = 1 ∑ n 2 ( y i − a x i − b ) ( − x i ) = 0 将 b = y ˉ − a x ˉ ( y ˉ = n ∑ i = 1 n y i , x ˉ = n ∑ i = 1 n x i ) 代入上式 → i = 1 ∑ n ( y i − a x i − y ˉ + a x ˉ ) ( x i ) = 0 → i = 1 ∑ n ( y i x i − a x i x i − y ˉ x i + a x ˉ x i ) = 0 → i = 1 ∑ n ( y i x i − y ˉ x i ) − a i = 1 ∑ n ( x i x i − x ˉ x i ) = 0 → ( i = 1 ∑ n x i y i − n x ˉ y ˉ ) − a ( i = 1 ∑ n x i x i − n x ˉ 2 ) = 0 → a = ∑ i = 1 n x i x i − n x ˉ 2 ∑ i = 1 n x i y i − n x ˉ y ˉ ∂ b ∂ L ( a , b ) = i = 1 ∑ n 2 ( y i − a x i − b ) ( − 1 ) = 0 → i = 1 ∑ n ( y i − a x i − b ) = 0 → i = 1 ∑ n ( y i ) − a i = 1 ∑ n x i − i = 1 ∑ n b = 0 → n y − an x − nb = 0 → b = y − a x
可以看出:只要给出了训练样本( x i , y i ) ( i = 1 , ⋯ , n ) (x_i, y_i) (i =1,\cdots,n) ( x i , y i ) ( i = 1 , ⋯ , n ) ,我们就可以从训练样本出发,建立一个线性回归方程,使得对训练样本数据而言,该线性回归方程预测的结果与样本标注结果之间的差值和最小。
# 多元线性回归
多维数据特征中线性回归的问题定义如下:
假设总共有m m m 个训练数据{ ( x i , y i ) } i = 1 m \{(x_i,y_i)\}_{i=1}^m {( x i , y i ) } i = 1 m ,其中x i = [ x i , 1 , x i , 2 , … , x i , D ] ∈ R D x_i=[x_{i,1},x_{i,2},\ldots,x_{i,D}]\in\mathbb{R}^D x i = [ x i , 1 , x i , 2 , … , x i , D ] ∈ R D ,D D D 为数据特征的维度,线性回归就是要找到一组参数a = [ a 0 , a 1 , . . . , a D ] a=[a_0,a_1,...,a_D] a = [ a 0 , a 1 , ... , a D ] ,使得线性函数:
f ( x t ) = a 0 + ∑ j = 1 D a j x i , j = a 0 + a T x i f(x_t)=a_0+\sum_{j=1}^Da_jx_{i,j}=a_0+a^Tx_i
f ( x t ) = a 0 + j = 1 ∑ D a j x i , j = a 0 + a T x i
最小化均方误差函数(MSE): J m = 1 m ∑ i = 1 m ( y i − f ( x i ) ) 2 J_m=\frac{1}{m}\sum_{i=1}^m(y_i-f(x_i))^2 J m = m 1 ∑ i = 1 m ( y i − f ( x i ) ) 2
为了方便,使用矩阵来表示所有的训练数据和数据标签:
X = [ x 1 , . . . , x m ] , y = [ y 1 , . . . , y m ] X=[x_1,...,x_m],\quad y=[y_1,...,y_m]
X = [ x 1 , ... , x m ] , y = [ y 1 , ... , y m ]
其中每一个数据x i x_i x i 会扩展一个维度,其值为1 1 1 ,对应参数a 0 a_0 a 0 。均方误差函数可以表示为:
J m ( a ) = ( y − X T a ) T ( y − X T a ) J_m(a)=\left(y-X^T\boldsymbol{a}\right)^T(\boldsymbol{y}-X^T\boldsymbol{a})
J m ( a ) = ( y − X T a ) T ( y − X T a )
均方误差函数J n ( a ) J_n(\boldsymbol{a}) J n ( a ) 对所有参数a \boldsymbol{a} a 求导可得:
∇ J ( a ) = − 2 X ( y − X T a ) \nabla J(\boldsymbol{a})=-2X(y-X^T\boldsymbol{a})
∇ J ( a ) = − 2 X ( y − X T a )
因为均方误差函数J n ( a ) J_n(\boldsymbol{a}) J n ( a ) 是一个二次的凸函数,所以函数只存在一个极小值点,也同样是最小值点,所以令∇ J ( a ) = 0 \nabla J(a)=0 ∇ J ( a ) = 0 可得
X X T a = X y a = ( X X T ) − 1 X y XX^T\boldsymbol{a}=X\boldsymbol{y}
\boldsymbol{a}=\left(XX^T\right)^{-1}X\boldsymbol{y}
X X T a = X y a = ( X X T ) − 1 X y
# 逻辑斯蒂回归/对数几率回归
线性回归一个明显的问题是对离群点 (和大多数数据点距离较远的数据点,outlier)非常敏感,导致模型建模不稳定,使结果有偏,为了缓解这个问题(特别是在二分类场景中)带来的影响,可考虑逻辑斯蒂回归(logistic regression) 。
逻辑斯蒂回归(logistic regression)就是在回归模型中引入 sigmoid函数 的一种非线性回归模型。Logistic回归模型可如下表示:
y = 1 1 + e − z = 1 1 + e − ( w T x + b ) , 其中 y ∈ ( 0 , 1 ) , z = w T x + b y=\frac{1}{1+e^{-z}}=\frac{1}{1+e^{-(w^Tx+b)}}\quad,\quad\text{其中}y\in(0,1),z=\mathbf{w}^T\mathbf{x}+\mathrm{b}
y = 1 + e − z 1 = 1 + e − ( w T x + b ) 1 , 其中 y ∈ ( 0 , 1 ) , z = w T x + b
这里1 1 + e − z \frac{1}{1+e^{-z}} 1 + e − z 1 是sigmoid函数、x ∈ R d \mathbf{x}\in\mathbb{R}^d x ∈ R d 是输入数据、w ∈ R d \mathbf{w}\in\mathbb{R}^d w ∈ R d 和b ∈ R b\in\mathbb{R} b ∈ R 是回归函数的参数。
Sigmoid函数的特点:
sigmoid函数是单调递增的,其值域为( 0 , 1 ) (0,1) ( 0 , 1 ) ,因此使sigmoid函数输出可作为概率值。在前面介绍的线性回归中,回归函数的值域一般为( − ∞ , + ∞ ) (-\infty,+\infty) ( − ∞ , + ∞ )
对输入z z z 范围没有限制,但当z z z 大于一定数值后,函数输出无限趋近于1 1 1 ,而小于一定数值后,函数输出无限趋近于0 0 0 。特别地,当z = 0 z=0 z = 0 时,函数输出为0.5 0.5 0.5 。这里z z z 是输入数据x x x 和回归函数参数w w w 的内积结果(可视为x x x 各维度进行加权叠加)
x x x 各维度加权叠加之和结果取值在0 0 0 附近时,函数输出值的变化幅度比较大(函数值变化陡峭),且是非线性变化。但是,各维度加权叠加之和结果取值很大或很小时,函数输出值几乎不变化,这是基于概率的一种认识与需要。
逻辑斯蒂回归虽可用于对输入数据和输出结果之间复杂关系进行建模,但由于逻辑斯蒂回归函数的输出具有概率意义,使得逻辑斯蒂回归函数更多用于 二分类问题 (y = 1 y = 1 y = 1 表示输入数据x x x 属于正例,y = 0 y = 0 y = 0 表示输入数据x x x 属于负例)[对于多分类,可以使用softmax函数,原理类似,在此不赘述]
y = 1 1 + e − ( w T x + b ) y=\frac{1}{1+e^{-(w^Tx+b)}} y = 1 + e − ( w T x + b ) 1 可用来计算输入数据x x x 属于正例的概率,这里y y y 理解为输入数据x x x 属于正例的概率、1 − y 1-y 1 − y 理解为输入数据x x x 为负例的概率,即p ( y = 1 ∣ x ) p(y = 1\mid x) p ( y = 1 ∣ x ) 。
我们现在对比值p 1 − p \frac{p}{1-p} 1 − p p 取对数(即log ( p 1 − p ) \log\left(\frac{p}{1-p}\right) log ( 1 − p p ) )来表示输入数据x x x 属于正例的概率。
p 1 − p \frac{p}{1-p} 1 − p p 被称为 几率(odds) ,反映了输入数据x \mathbf{x} x 作为正例的相对可能性。
p 1 − p \frac{p}{1-p} 1 − p p 的 对数几率(log odds) 或logit函数可表示为l o g ( p 1 − p ) log\left(\frac{p}{1-p}\right) l o g ( 1 − p p ) 。
显然,可以得到p ( y = 1 ∣ x ) = h θ ( x ) = 1 1 + e − ( w T x + b ) p(y=1|\mathbf{x})=h_\theta(x)=\frac{1}{1+e^{-(\mathbf{w}^T\mathbf{x}+b)}} p ( y = 1∣ x ) = h θ ( x ) = 1 + e − ( w T x + b ) 1 和p ( y = 0 ∣ x ) = 1 − h θ ( x ) = e − ( w T x + b ) 1 + e − ( w T x + b ) p(y=0|\mathbf{x})=1-h_\theta(x)=\frac{e^{-(\mathbf{w}^T\mathbf{x}+\mathbf{b})}}{1+e^{-(\mathbf{w}^T\mathbf{x}+\mathbf{b})}} p ( y = 0∣ x ) = 1 − h θ ( x ) = 1 + e − ( w T x + b ) e − ( w T x + b ) 。θ \theta θ 表示模型参数(θ = { w , b } \theta=\{\mathbf{w},b\} θ = { w , b } )。于是有:
l o g i t ( p ( y = 1 ∣ x ) ) = log ( p ( y = 1 ∣ x ) p ( y = 0 ∣ x ) ) = log ( p 1 − p ) = w T x + b \mathrm{logit}\left(p(y=1|x)\right)=\log\left(\frac{p(y=1|x)}{p(y=0|x)}\right)=\log\left(\frac{p}{1-p}\right)=w^Tx+b
logit ( p ( y = 1∣ x ) ) = log ( p ( y = 0∣ x ) p ( y = 1∣ x ) ) = log ( 1 − p p ) = w T x + b
如果输入数据𝒙属于正例的概率大于其属于负例的概率,即p ( y = 1 ∣ x ) > 0.5 p(y = 1\mid x)>0.5 p ( y = 1 ∣ x ) > 0.5 ,则输入数据𝒙可被判断属于正例。这一结果等价于p ( y = 1 ∣ x ) p ( y = 0 ∣ x ) > 1 \frac{p(y=1|x)}{p(y=0|x)}>1 p ( y = 0∣ x ) p ( y = 1∣ x ) > 1 ,即
log ( p ( y = 1 ∣ x ) p ( y = 0 ∣ x ) ) > log 1 = 0 \log\left(\frac{p(y=1|x)}{p(y=0|x)}\right)>\log1=0 log ( p ( y = 0∣ x ) p ( y = 1∣ x ) ) > log 1 = 0 ,也就是w T x + b > 0 \mathbf{w}^T\mathbf{x}+\mathbf{b}>0 w T x + b > 0 成立。
从这里可以看出,logistic回归是一个线性模型。在预测时,可以计算线性函数w T x + b \mathbf{w}^T\mathbf{x}+\mathbf{b} w T x + b 取值是否大于0 0 0 来判断输入数据x x x 的类别归属
# 决策树
决策树是一种通过 树形结构 来进行分类的方法。在决策树中,树形结构中每个非叶子节点表示对分类目标在某个属性上的一个判断,每个分支代表基于该属性做出的一个判断,最后树形结构中每个叶子节点代表一种分类结果,所以决策树可以看作是一系列以叶子节点为输出的 决策规则(Decision Rules)
例子:(虽然下面这图是个梗图,但也可以看作一种决策树)
更一般地情况下,在构造决策树之前,会提供相应属性和决策的表格,通过机器学习训练得到决策树。
构建决策树时划分属性的顺序选择是重要的。性能好的决策树随着划分不断进行,决策树分支结点样本集的“纯度”会越来越高,即其所包含样本尽可能属于相同类别。
# 信息熵(entropy)
由“信息论之父”香农提出
设有K K K 个信息,其组成了集合样本D D D ,记第k k k 个信息发生的概率为p k ( 1 ≤ k ≤ K ) p_k(1 \leq k \leq K) p k ( 1 ≤ k ≤ K ) ”。如下定义这K K K 个信息的信息熵:
E ( D ) = − ∑ k = 1 k p k log 2 p k E(D)=-\sum_{k=1}^k p_k \log_2 p_k
E ( D ) = − k = 1 ∑ k p k log 2 p k
E ( D ) E(D) E ( D ) 值越小,表示D D D 包含的信息越确定,也称D D D 的纯度越高。需要指出,所有p k p_k p k 累加起来的和为1 1 1 。
# 信息增益
得到信息熵后,就可以计算基于某种属性对样本集进行划分后的信息增益,公式如下:
G a i n ( D , A ) = E n t ( D ) − ∑ i = 1 n ∣ D i ∣ ∣ D ∣ E n t ( D i ) Gain(D,A)=Ent(D)-\sum_{i=1}^n\frac{|D_i|}{|D|}Ent(D_i)
G ain ( D , A ) = E n t ( D ) − i = 1 ∑ n ∣ D ∣ ∣ D i ∣ E n t ( D i )
信息增益可以看作是在一定条件下,信息复杂度(不确定性)的减少程度
我们可以通过比较不同属性信息增益的高低来选择最佳属性对原样本集进行划分,得到最大的“纯度”。如果划分后的不同子样本集都只存在同类样本,那么停止划分。
# 构建决策树:信息增益率
一般而言,信息增益偏向选择分支多的属性,这在一些场合容易导致模型过拟合。为了解决这个问题,一个直接的想法是对分支过多进行惩罚,这就是另外一个“纯度”
衡量指标,信息增益率的核心思想。
为了衡量信息增益率,我们需要计算划分行为本身带来的信息i n f o info in f o :
i n f o = − ∑ i = 1 n ∣ D i ∣ ∣ D ∣ log 2 ∣ D i ∣ ∣ D ∣ info=-\sum_{i=1}^n\frac{|D_i|}{|D|}\log_2\frac{|D_i|}{|D|}
in f o = − i = 1 ∑ n ∣ D ∣ ∣ D i ∣ log 2 ∣ D ∣ ∣ D i ∣
由此可得信息增益率G a i n − r a t i o Gain-ratio G ain − r a t i o 计算公式:
G a i n − r a t i o = G a i n ( D , A ) i n f o Gain-ratio=\frac{Gain(D,A)}{info}
G ain − r a t i o = in f o G ain ( D , A )
另一种计算更简易的度量指标是如下的G i n i Gini G ini 系数:
G i n i ( D ) = 1 − ∑ k = 1 K p k 2 \mathrm{Gini}(\mathrm{D})=1-\sum_{k=1}^Kp_k^2
Gini ( D ) = 1 − k = 1 ∑ K p k 2
相比于计算信息熵,计算更为容易。
# 线性区别分析(LDA)
线性判别分析是一种基于监督学习的降维方法,也称为Fisher线性判别分析(fisher's discriminant analysis,FDA)
对于一组具有标签信息的高维数据样本,LDA利用其类别信息,将其线性投影到一个低维空间上,在低维空间中同一类别样本尽可能靠近,不同类别样本尽可能彼此远离。(即“类内方差小,类间间隔大”)
# 符号定义
假设样本集为D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ( x 3 , y 3 ) , ⋯ , x N , y N } D=\{(x_1,y_1),(x_2,y_2),(x_3,y_3),\cdots,x_N,y_N\} D = {( x 1 , y 1 ) , ( x 2 , y 2 ) , ( x 3 , y 3 ) , ⋯ , x N , y N } ,样本x i ∈ R d x_i\in\mathbb{R}^d x i ∈ R d 的类别标签为y i y_i y i 。其中,y i y_i y i 的取值范围是C 1 , C 2 , ⋯ , C K {\mathcal{C}_1,\mathcal{C}_2,\cdots,\mathcal{C}_K} C 1 , C 2 , ⋯ , C K ,即一共有K K K 类样本。
定义X X X 为所有样本构成集合、N i N_i N i 为第i i i 个类别所包含样本个数、X i X_i X i 为第i i i 类样本的集合、m m m 为所有样本的均值向量、m i m_i m i 为第i i i 类样本的均值向量。∑ i \sum_i ∑ i 为第i i i 类样本的协方差矩阵,其定义为:
∑ i = ∑ x ∈ X i ( x − m i ) ( x − m i ) T \textstyle\sum_i=\sum\limits_{x\in X_i} (x-m_i)(x-m_i)^T
∑ i = x ∈ X i ∑ ( x − m i ) ( x − m i ) T
# 二分类问题
分析K = 2 K=2 K = 2 的情况。此时训练样本归属于C 1 \mathcal{C}_1 C 1 和C 2 \mathcal{C}_2 C 2 ,通过以下线性函数投影到一维空间上:y ( x ) = w T x ( w ∈ R n ) y(x)=w^Tx (w\in\mathbb{R}^n) y ( x ) = w T x ( w ∈ R n )
投影之后类别C 1 \mathcal{C}_1 C 1 的协方差矩阵s 1 s_1 s 1 为:
s 1 = ∑ x ∈ C 1 ( w T x − w T m 1 ) 2 = w T ∑ x ∈ C 1 [ ( x − m 1 ) ( x − m 1 ) T ] w s_1=\sum_{x\in\mathcal{C}_1}\left(w^Tx-w^Tm_1\right)^2=w^T\sum_{x\in\mathcal{C}_1}[(x-m_1)(x-m_1)^T]w
s 1 = x ∈ C 1 ∑ ( w T x − w T m 1 ) 2 = w T x ∈ C 1 ∑ [( x − m 1 ) ( x − m 1 ) T ] w
同理可得到投影之后类别C 2 \mathcal{C}_2 C 2 的协方差矩阵s 2 s_2 s 2 。
投影后两个协方差矩阵s 1 s_1 s 1 和s 2 s_2 s 2 分别为w T ∑ 1 w w^T\sum_1w w T ∑ 1 w 和w T ∑ 2 w w^T\sum_2w w T ∑ 2 w 。s 1 s_1 s 1 和s 2 s_2 s 2 可用来衡量同一类别数据样本之间“分散程度”。为了使得归属于同一类别的样本数据在投影后的空间中尽可能靠近,需要最小化s 1 + s 2 s_1+s_2 s 1 + s 2 取值。
在投影之后的空间中,归属于两个类别的数据样本中心可分别如下计算:
m 1 = w T m 1 , m 2 = w T m 2 m_1=w^Tm_1,\quad m_2=w^Tm_2
m 1 = w T m 1 , m 2 = w T m 2
这样,就可以通过∥ m 2 − m 1 ∥ 2 2 \|m_2-m_1\|_2^2 ∥ m 2 − m 1 ∥ 2 2 来衡量不同类别之间的距离。为了使得归属于不同类别的样本数据在投影后空间中尽可能彼此远离,需要最大化∥ m 2 − m 1 ∥ 2 2 \|m_2-m_1\|_2^2 ∥ m 2 − m 1 ∥ 2 2 的取值。
同时考虑上面两点,就得到了需要最大化的目标J ( w ) J(w) J ( w ) ,定义如下:
J ( w ) = ∥ m 2 − m 1 ∥ 2 2 s 1 + s 2 J(w)=\frac{\|m_2-m_1\|_2^2}{s_1+s_2}
J ( w ) = s 1 + s 2 ∥ m 2 − m 1 ∥ 2 2
把上述式子右边改写成与w w w 相关的式子:
J ( w ) = ∥ w T ( m 2 − m 1 ) ∥ 2 2 w T Σ 1 w + w T Σ 2 w = w T ( m 2 − m 1 ) ( m 2 − m 1 ) T w w T ( Σ 1 + Σ 2 ) w = w T S b w w T S w w J(w)=\frac{\left\|w^T(m_2-m_1)\right\|_2^2}{w^T\Sigma_1w+w^T\Sigma_2w}=\frac{w^T(m_2-m_1)(m_2-m_1)^Tw}{w^T(\Sigma_1+\Sigma_2)w}=\frac{w^TS_bw}{w^TS_ww}
J ( w ) = w T Σ 1 w + w T Σ 2 w w T ( m 2 − m 1 ) 2 2 = w T ( Σ 1 + Σ 2 ) w w T ( m 2 − m 1 ) ( m 2 − m 1 ) T w = w T S w w w T S b w
其中,S b S_b S b 称为 类间散度矩阵(between-class scatter matrix) ,即衡量两个类别均值点之间的“分离”程度,可定义如下:
S b = ( m 2 − m 1 ) ( m 2 − m 1 ) T S_b = (m_2 − m_1)(m_2 − m_1)^T
S b = ( m 2 − m 1 ) ( m 2 − m 1 ) T
S w S_w S w 则称为 类内散度矩阵(within-class scatter matrix) ,即衡量每个类别中数据点的“分离”程度,可定义如下:
S w = ∑ 1 + ∑ 2 S_w=\textstyle\sum_1+\textstyle\sum_2
S w = ∑ 1 + ∑ 2
由于J ( w ) J(w) J ( w ) 的分子和分母都是关于w w w 的二项式,因此最后的解只与w w w 的方向有关,与w w w 的长度无关,因此可令分母w T S w w = 1 w^TS_ww = 1 w T S w w = 1 ,然后用拉格朗日乘子法来求解这个问题。
L ( w ) = w T S b w − λ ( w T S w w − 1 ) L(w)=w^TS_bw-\lambda(w^TS_ww-1)
L ( w ) = w T S b w − λ ( w T S w w − 1 )
对w w w 求偏导并使其求导结果为零,可得S w − 1 S b w = λ w S_w^{-1}S_bw=\lambda w S w − 1 S b w = λ w 。由此可见,λ \lambda λ 和w w w 分别是S w − 1 S b S_w^{-1}S_b S w − 1 S b 的特征根和特征向量,S w − 1 S b w = λ w S_w^{-1}S_bw=\lambda w S w − 1 S b w = λ w 也被称为 Fisher线性判别(Fisher linear discrimination) 。令实数λ w = ( m 2 − m 1 ) T w \lambda_w=\left(m_2-m_1\right)^\mathrm{T}w λ w = ( m 2 − m 1 ) T w ,则可得:
S w − 1 S b w = S w − 1 ( m 2 − m 1 ) × λ w = λ w S_w^{-1}S_bw=S_w^{-1}(m_2-m_1)\times\lambda_w=\lambda w
S w − 1 S b w = S w − 1 ( m 2 − m 1 ) × λ w = λ w
由于对w w w 的放大和缩小操作不影响结果,因此可约去上式中的未知数λ \lambda λ 和λ w \lambda_w λ w ,得到:w = S w − 1 ( m 2 − m 1 ) w=S_w^{-1}(m_2-m_1) w = S w − 1 ( m 2 − m 1 )
# 多分类问题
假设n n n 个原始高维数据所构成的类别种类为K K K 、每个原始数据被投影映射到低维空间中的维度为r r r 。
令投影矩阵W = w 1 , 𝒘 2 , ⋯ , w r W=w_1, 𝒘_2, \cdots , w_r W = w 1 , w 2 , ⋯ , w r ,可知W W W 是一个n × r n\times r n × r 矩阵。于是,W T m i W^Tm_i W T m i 为第i i i 类样本数据中心在低维空间的投影结果,W T m i W W^Tm_iW W T m i W 为第i i i 类样本
数据协方差在低维空间的投影结果。
类内散度矩阵S w S_w S w 重新定义如下:
S w = ∑ i = 1 K Σ i ,其中 Σ i = ∑ x ∈ c l a s s i ( x − m i ) ( x − m i ) T S_w=\sum_{i=1}^K\Sigma_i\text{,其中}\Sigma_i=\sum_{x\in class}i(x-m_i)(x-m_i)^T
S w = i = 1 ∑ K Σ i , 其中 Σ i = x ∈ c l a ss ∑ i ( x − m i ) ( x − m i ) T
在上式中,m i m_i m i 是第i i i 个类别中所包含样本数据的均值。
S b = ∑ i = 1 K N i N ( m i − m ) ( m i − m ) T S_b=\sum_{i=1}^K\frac{N_i}{N}(\boldsymbol{m}_i-\boldsymbol{m})(\boldsymbol{m}_i-\boldsymbol{m})^T
S b = i = 1 ∑ K N N i ( m i − m ) ( m i − m ) T
将多类LDA映射投影方向的优化目标J ( W ) J(W) J ( W ) 改为:
J ( W ) = ∏ d i a g W T S b W ∏ d i a g W T S w W J(W)=\frac{\prod_{diag}W^TS_bW}{\prod_{diag}W^TS_wW}
J ( W ) = ∏ d ia g W T S w W ∏ d ia g W T S b W
其中,∏ d i a g A \prod_{diag}\mathbb{A} ∏ d ia g A 为矩阵A \mathbb{A} A 主对角元素的乘积。
J ( W ) = ∏ d i a g W T S b W ∏ d i a g W T S w W = ∏ i = 1 r w i T S b w i ∏ i = 1 r w i T S w w i = ∏ i = 1 r w i T S b w i w i T S w w i J(W)=\frac{\prod_{diag}W^TS_bW}{\prod_{diag}W^TS_wW}=\frac{\prod_{i=1}^rw_i^TS_bw_i}{\prod_{i=1}^rw_i^TS_ww_i}=\prod_{i=1}^r\frac{w_i^TS_bw_i}{w_i^TS_ww_i}
J ( W ) = ∏ d ia g W T S w W ∏ d ia g W T S b W = ∏ i = 1 r w i T S w w i ∏ i = 1 r w i T S b w i = i = 1 ∏ r w i T S w w i w i T S b w i
显然需要使乘积式子中每个w i T S b w i w i T S w w i \frac{w_i^TS_bw_i}{w_i^TS_ww_i} w i T S w w i w i T S b w i 取值最大,这就是二分类问题的求解目标,即每一个w i w_i w i 都是S w − 1 S b W = λ W S_w^{-1}S_bW=\lambda W S w − 1 S b W = λW 的一个解。
# 线性判别分析的降维步骤
对线性判别分析的降维步骤描述如下:
计算数据样本集中每个类别样本的均值
计算类内散度矩阵S W S_W S W 和类间散度矩阵S b S_b S b
根据S w − 1 S b W = λ W S_w^{-1}S_bW=\lambda W S w − 1 S b W = λW 来求解S w − 1 S b S_w^{-1}S_b S w − 1 S b 所对应前r r r 个最大特征值所对应特征向量( w 1 , w 2 , ⋯ , w r ) (w_1, w_2, \cdots , w_r) ( w 1 , w 2 , ⋯ , w r ) ,构成矩阵W W W
通过矩阵W W W 将每个样本映射到低维空间,实现特征降维。
# 与主成分分析法的异同
线性判别分析
主成分分析
是否需要样本标签
监督学习
无监督学习
降维方法
优化寻找特征向量w w w
优化寻找特征向量w w w
目标
类内方差小、类间距离大
寻找投影后数据之间方差最大的投影方向
维度
LDA降维后所得到维度是与数据样本的类别个数K K K 有关
PCA对高维数据降维后的维数是与原始数据特征维度相关
# Ada Boosting(自适应提升)
Ada Boosting(自适应提升)通过 集成(ensemble) 手段来达到提升(boosting)算法性能目的,该算法的核心思想是:对于一个复杂的分类任务,可以将其分解为若干子任务,然后将若干子任务完成方法综合,最终完成该复杂任务。
具体而言,是将若干个 弱分类器(weak classifiers) (这里指错误率略低于50%的算法) 组合起来,形成一个 强分类器(strong classifier) 。(通俗来说就是“三个臭皮匠顶个诸葛亮”)
该算法在1995年由Yoav Freund和Robert Schapire提出(论文:AdaBoosting )
# 计算学习理论(Computational Learning Theory)
可计算理论关心什么样的问题可以被计算(computable)。一个任务,如果是 图灵可停机 的,那么该任务可计算。可学习理论(learnability theory)关心什么样的任务是可以被习得,从而能被算法模型来完成。
Leslie Valiant (2010年图灵奖获得者)和其学生Michael Kearns两位学者提出了这个问题并进行了有益探索,逐渐完善了计算学习理论。
# 霍夫丁不等式(Hoeffding’s inequality)
学习任务:统计某个电视节目在全国的收视率。
方法:不可能去统计整个国家中每个人是否观看电视节目、进而算出收视率。只能抽样一部分人口,然后将抽样人口中观看该电视节目的比例作为该电视节目的全国收视率。
霍夫丁不等式:全国人口中看该电视节目的人口比例(记作x x x )与抽样人口中观看该电视节目的人口比例(记作y y y )满足如下关系:
P ( ∣ x − y ∣ ≥ ϵ ) ≤ 2 e − 2 N ϵ 2 P(|x-y|\geq\epsilon)\leq 2e^{-2N\epsilon^2} P ( ∣ x − y ∣ ≥ ϵ ) ≤ 2 e − 2 N ϵ 2 (N N N 是采样人口总数、ϵ ∈ ( 0 , 1 ) \epsilon \in (0,1) ϵ ∈ ( 0 , 1 ) 是所设定的可容忍误差范围)
当N N N 足够大时,“全国人口中电视节目收视率”与“样本人口中电视节目收视率”差值超过误差范围ϵ \epsilon ϵ 的概率非常小。
# 概率近似正确(probably approximately correct, PAC)
对于统计电视节目收视率这样的任务,可以通过不同的采样方法(即不同模型)来计算收视率。
每个模型会产生不同的误差。
问题:如果得到完成该任务的若干“弱模型”,是否可以将这些弱模型组合起来,形成一个“强模型”。该“强模型” 产生误差很小呢?这就是概率近似正确(PAC)要回答的问题。
在概率近似正确背景下,有“强可学习模型”和“弱可学习模型”:
强可学习(strongly learnable) : 学习模型能够以较高精度对绝大多数样本完成识别分类任务
弱可学习(weakly learnable) : 学习模型仅能完成若干部分样本识别与分类,其精度略高于随机猜测。
概率近似正确指出,强可学习和弱可学习是等价的,也就是说,如果已经发现了“弱学习算法”,可将其提升(boosting)为“强学习算法”。Ada Boosting算法就是这样的提升方法。具体而言,Ada Boosting将一系列弱分类器组合起来,构成一个强分类器。
# Ada Boosting算法
# 思路描述
Ada Boosting算法中两个核心问题:
在每个弱分类器学习过程中,如何改变训练数据的权重:提高在上一轮中分类错误样本的权重。
如何将一系列弱分类器组合成强分类器:通过加权多数表决方法来提高分类误差小的弱分类器的权重,让其在最终分类中起到更大作用。同时减少分类误差大的弱分类器的权重,让其在最终分类中仅起到较小作用。
图示:
# 算法描述
数据样本权重初始化
给定包含N N N 个标注数据的训练集合Γ , Γ = { ( x 1 , y 1 ) , ⋯ , ( x N , y N ) } \Gamma,\Gamma=\{(x_1,y_1),\cdots ,(x_N,y_N)\} Γ , Γ = {( x 1 , y 1 ) , ⋯ , ( x N , y N )} ,其中x i ( 1 ≤ i ≤ N ) ∈ X ⊆ R n , y i ∈ Y = { − 1 , 1 } x_i(1\leq i\leq N)\in X\subseteq \mathbb{R}^n,y_i\in Y=\{-1,1\} x i ( 1 ≤ i ≤ N ) ∈ X ⊆ R n , y i ∈ Y = { − 1 , 1 } 。
Ada Boosting算法将从这些标注数据出发,训练得到一系列弱分类器,并将这些弱分类器线性组合得到一个强分类器。
初始化每个训练样本的权重:D 1 = ( w 11 , ⋯ , w 1 i , ⋯ , w 1 N ) D_1=(w_{11},\cdots,w_{1i},\cdots,w_{1N}) D 1 = ( w 11 , ⋯ , w 1 i , ⋯ , w 1 N ) ,其中w 1 i = 1 N ( 1 ≤ i ≤ N ) w_{1i}=\frac{1}{N}(1\leq i\leq N) w 1 i = N 1 ( 1 ≤ i ≤ N )
分别训练M M M 个基分类器
对m = 1 , 2 , ⋯ , M m=1,2,\cdots,M m = 1 , 2 , ⋯ , M :
a. 使用具有分布权重D m D_m D m 的训练数据来学习得到第m m m 个基分类器(弱分类器)G m G_m G m :G m ( x ) : X → { − 1 , 1 } G_m(x):X\rightarrow \{-1,1\}
G m ( x ) : X → { − 1 , 1 }
b. 计算G m ( x ) G_m(x) G m ( x ) 在训练数据集上的分类误差:e r r m = ∑ i = 1 N w m i I ( G m ( x i ) ≠ y i ) , I ( ⋅ ) = { 1 G m ( x i ) ≠ y i 0 G m ( x i ) = y i err_m=\sum_{i=1}^N w_{mi}I(G_m(x_i)\neq y_i),I(\cdot)=\left\{
\begin{array}{rcl}
1 & & G_m(x_i)\neq y_i\\
0 & & G_m(x_i)= y_i\\
\end{array} \right.
er r m = i = 1 ∑ N w mi I ( G m ( x i ) = y i ) , I ( ⋅ ) = { 1 0 G m ( x i ) = y i G m ( x i ) = y i
c. 计算弱分类器G m ( x ) G_m(x) G m ( x ) 的权重:α m = 1 2 ln 1 − e r r m e r r m \alpha_m=\frac{1}{2}\ln\frac{1-err_m}{err_m}
α m = 2 1 ln er r m 1 − er r m
d. 更新训练样本数据的分布权重:
D m + 1 = w m + 1 , i = w m , i Z m e − α m y i G m ( x i ) D_{m+1}=w_{m+1,i}=\frac{w_{m,i}}{Z_m}e^{-\alpha_my_iG_m(x_i)} D m + 1 = w m + 1 , i = Z m w m , i e − α m y i G m ( x i ) ,其中Z m Z_m Z m 是归一化因子以使得D m + 1 D_{m+1} D m + 1 为概率分布,Z m = ∑ i = 1 N w m , i e − α m y i G m ( x i ) Z_m=\sum_{i=1}^Nw_{m,i}e^{-\alpha_my_iG_m(x_i)} Z m = ∑ i = 1 N w m , i e − α m y i G m ( x i )
以线性加权形式来组合弱分类器f ( x ) f(x) f ( x ) f ( x ) = ∑ i = 1 M α m G m ( x ) f(x)=\sum_{i=1}^M\alpha_mG_m(x)
f ( x ) = i = 1 ∑ M α m G m ( x )
得到强分类器G ( x ) G(x) G ( x ) G ( x ) = s i g n ( f ( x ) ) = s i g n ( ∑ i = 1 M α m G m ( x ) ) G(x)=sign(f(x))=sign(\sum_{i=1}^M\alpha_mG_m(x))
G ( x ) = s i g n ( f ( x )) = s i g n ( i = 1 ∑ M α m G m ( x ))
# 算法解释
第m m m 个弱分类器G m ( x ) G_m(x) G m ( x ) 在训练数据集上产生的分类误差等于被错误分类的样本所具有权重的累加。
对于第m m m 个弱分类器G m ( x ) G_m(x) G m ( x ) 的权重α m \alpha_m α m :
当第m m m 个弱分类器G m ( x ) G_m(x) G m ( x ) 错误率为1 1 1 ,代表每个样本分类都出错,则α m = 1 2 ln 1 − e r r m e r r m → − ∞ \alpha_m=\frac{1}{2}\ln\frac{1-err_m}{err_m}\rightarrow -\infty α m = 2 1 ln er r m 1 − er r m → − ∞ ,故给予第m m m 个弱分类器G m ( x ) G_m(x) G m ( x ) 很低的权重;
当第m m m 个弱分类器G m ( x ) G_m(x) G m ( x ) 错误率为1 2 \frac{1}{2} 2 1 ,α m = 1 2 ln 1 − e r r m e r r m = 0 \alpha_m=\frac{1}{2}\ln\frac{1-err_m}{err_m}=0 α m = 2 1 ln er r m 1 − er r m = 0 。如果错误率e r r m < 1 2 err_m<\frac{1}{2} er r m < 2 1 ,权重α m > 0 \alpha_m>0 α m > 0 。由此可知权重α m \alpha_m α m 随e r r m err_m er r m 减少而增大,即错误率越小的弱分类器会赋予更大权重;
如果一个弱分类器的分类错误率为1 2 \frac{1}{2} 2 1 ,可视为其性能仅相当于随机分类效果。
可以把对第i i i 个训练样本更新后的样本数据分布权重写为如下分段函数形式:w m + 1 , i = { w m , i Z m e − α m , G m ( x i ) = y i w m , i Z m e α m , G m ( x i ) ≠ y i w_{m+1,i}=
\begin{cases}
\frac{w_{m,i}}{Z_m}e^{-\alpha_m}, & G_m(x_i)=y_i \\
\frac{w_{m,i}}{Z_m}e^{\alpha_m}, & G_m(x_i)\neq y_i & &
\end{cases}
w m + 1 , i = { Z m w m , i e − α m , Z m w m , i e α m , G m ( x i ) = y i G m ( x i ) = y i
可见,如果某个样本无法被第m m m 个弱分类器G m ( x ) G_m(x) G m ( x ) 分类成功,则需要增大该样本权重,否则减少该样本权重。这样,被错误分类样本会在训练第m + 1 m+1 m + 1 个弱分类器G m + 1 G_{m+1} G m + 1 时会被“重点关注” 。
在每一轮学习过程中,Ada Boosting算法均在划重点(重视当前尚未被正确分类的样本)
f ( x ) f(x) f ( x ) 是M M M 个弱分类器的加权线性累加。分类能力越强的弱分类器具有更大权重。注意α m \alpha_m α m 累加之和并不等于1。f ( x ) f(x) f ( x ) 符号决定样本x x x 分类为1 1 1 或− 1 -1 − 1 。如果∑ i = 1 M α m G m ( x ) \sum_{i=1}^M\alpha_mG_m(x) ∑ i = 1 M α m G m ( x ) 为正,则强分类器G ( x ) G(x) G ( x ) 将样本x x x
分类为1 1 1 ;否则为− 1 -1 − 1 。
# 从霍夫丁不等式解释Ada Boosting算法
# 优化目标
Ada Boosting实际是在最小化指数损失函数(minimization of exponential loss) :
∑ i e − y i f ( x i ) = ∑ i e − y i ∑ i = 1 M α m G m ( x i ) \sum_ie^{-y_if(x_i)}=\sum_ie^{-y_i\sum_{i=1}^M\alpha_mG_m(x_i)}
i ∑ e − y i f ( x i ) = i ∑ e − y i ∑ i = 1 M α m G m ( x i )
Ada Boost的分类误差上界如下所示:
1 N ∑ i = 1 N I ( G ( x i ) ≠ y i ) ≤ 1 N ∑ i e − y i f ( x i ) = ∏ m Z m \frac{1}{N}\sum_{i=1}^NI(G(x_i)\neq y_i)\leq\frac{1}{N}\sum_ie^{-y_if(x_i)}=\prod_mZ_m
N 1 i = 1 ∑ N I ( G ( x i ) = y i ) ≤ N 1 i ∑ e − y i f ( x i ) = m ∏ Z m
在第m m m 次迭代中,Ada Boosting总是趋向于将具有最小误差的学习模型选做本轮生成的弱分类器G m G_m G m ,使得累积误差快速下降。
# 例子
略,见《人工智能导论:模型与算法》P141~143。
# 支持向量机(support vector machine,SVM)
传统识别理论认为,算法模型性能可用从训练样本集所得经验风险(empirical risk)来衡量。经验风险指算法模型在训练样本集中所有数据上所得误差的累加。很显然,经验风险越小,算法模型对训练数据拟合程度越好。在实际中,一味要求经验风险小,往往会造成过拟合问题(over-fitting)。
支持向量机通过 结构风险最小化(structural risk minimization) 来解决过学习问题。在样本组成的超空间中,存在多个可将样本分开的超平面(hyper-plane)。但是,在这些超平面中,支持向量机学习算法会去寻找一个最佳超平面,使得每个类别中距离超平面最近的样本点到超平面的最小距离最大。
下图为二类分类问题的最佳分类平面示例:
支持向量机在1995年由Corinna Cortes和Vladimr Vapnik提出(论文:Support-vector Networks
# VC维与结构风险最小化
在理论上,支持向量机认为:分类器对未知数据(即测试数据)进行分类时所产生的期望风险(expected risk,即真实风险)不是由经验风险单独决定的,而是由两部分组成:
从训练集合数据所得经验风险(如果经验风险小、期望风险很大,则是过学习);
置信风险(confidence risk),它与分类器的V C VC V C 维及训练样本数目有关。
设0 ≤ η ≤ 1 0\leq \eta \leq 1 0 ≤ η ≤ 1 ,Vapnik推导出期望风险ℜ \Re ℜ 和经验风险ℜ e m p \Re_{emp} ℜ e m p 以1 − η 1 − \eta 1 − η 的概率满足如下关系:
ℜ ≤ ℜ e m p + h ( l o g ( 2 n h ) + 1 ) − l o g ( η 4 ) n \Re\leq\Re_{emp}+\sqrt{\frac{h(log(\frac{2n}{h})+1)-log(\frac{\eta}{4})}{n}}
ℜ ≤ ℜ e m p + n h ( l o g ( h 2 n ) + 1 ) − l o g ( 4 η )
其中,h ( l o g ( 2 n / h ) + 1 ) − l o g ( η / 4 ) n \sqrt{\frac{h(log(2n/h)+1)-log(\eta/4)}{n}} n h ( l o g ( 2 n / h ) + 1 ) − l o g ( η /4 ) 叫做 “V C VC V C 置信值”
,n n n 是训练样本个数, h h h 是反映学习机复杂程度的V C VC V C 维。因为期望风险ℜ \Re ℜ 代表了分类器对未知数据分类推广能力,所以ℜ \Re ℜ 越小越好。在上面不等式中,V C VC V C 置信值是h h h 的增函数,ℜ e m p \Re_{emp} ℜ e m p 是h h h 的减函数,于是选择一个折中的h h h 值可以使期望风险ℜ达到最小。
支持向量机使用结构风险最小化准则来选取V C VC V C 维h h h ,使每一类别数据之间的 分类间隔(Margin) 最大,最终使实期望风险ℜ \Re ℜ 最小。
# 假设空间的VC维
将n n n 个数据分为两类,可以有2 n 2^n 2 n 种分法,即可理解成有2 n 2^n 2 n 个学习问题。若存在一个假设H \mathscr{H} H (可以理解为映射的集合),能准确无误地将2 n 2^n 2 n 种问题进行分类,那么n n n 就是H \mathscr{H} H 的V C VC V C 维。
一般地,在r r r 维空间中,线性决策面的V C VC V C 维为r + 1 r+1 r + 1 。V C VC V C 维就是对假设空间H \mathscr{H} H 复杂度的一种度量。当样本数n n n 固定时,如果V C VC V C 维越高,则算法模型的复杂性越高。V C VC V C 维越大,通常推广能力越差,置信风险会变大。如果算法模型一味降低经验风险,则会提高模型复杂度,导致V C VC V C 维很高,置信风险大,使得期望风险就大。
关于为什么在r r r 维空间中,线性决策面的V C VC V C 维为r + 1 r+1 r + 1 (粗浅地理解):在r r r 维空间,线性决策面可以理解为一个r − 1 r-1 r − 1 维的超平面;在r r r 维空间中,若我们取r + 1 r+1 r + 1 个点且它们不共面(即线性无关),这些点的所有2 r + 1 2^{r+1} 2 r + 1 种标记方式,都能被某个超平面分开,因为超平面有r + 1 r+1 r + 1 个自由参数(r r r 个权重 + 1 1 1 个偏置),所以r + 1 r+1 r + 1 个点的任意标记模式,都可以对应某组参数解。
# 结构风险最小化
通过V C VC V C 理论,可认识到期望风险(即真实风险)ℜ \Re ℜ 与经验风险ℜ c m p \Re_{cmp} ℜ c m p 之间是有差别的,这个差别项被称为置信风险,它与训练样本个数和模型复杂度都有密切的关系。
用复杂度高的模型去拟合小样本,往往会导致过拟合,因此需要给经验风险 ℜ e m p \Re_{emp} ℜ e m p 加上一个惩罚项或者正则化项,以同时考虑经验风险与置信风险。这一思路被称为结构风险最小化。这样,在小样本情况下可取得较好性能。在保证分类精度高(经验风险小)同时,有效降低算法模型V C VC V C 维,可使算法模型在整个样本集上的期望风险得到控制。当训练样本给定时,分类间隔越大,则对应的分类超平面集合的V C VC V C 维就越小。
下图表示了经验风险、期望风险、V C VC V C 置信度、V C VC V C 维、过学习和欠学习的关系:
# 线性可分支持向量机
对于n个训练数据( x , y ) ∈ D ( i = 1 , ⋯ , n ) (x,y)\in D(i=1,\cdots,n) ( x , y ) ∈ D ( i = 1 , ⋯ , n ) ,记其类别标签为1 1 1 或− 1 -1 − 1
(即y i = 1 y_i=1 y i = 1 或y i = − 1 y_i=-1 y i = − 1 )分别代表了正样本或负样本。支持向量机从这些训
练数据出发,寻找一个最优的超平面,其方程为w T x + b = 0 \mathbf{w}^T\mathbf{x}+b=0 w T x + b = 0 。
这里w = ( w 1 , w 2 , … , w d ) \mathbf{w}=(w_1,w_2,…,w_d) w = ( w 1 , w 2 , … , w d ) 为超平面的法向量,与超平面的方向有关;b b b 为偏置项,是一个标量,其决定了超平面与原点之间的距离。对于正样本要求满足w T x + b ≥ 0 \mathbf{w}^T\mathbf{x}+b\geq0 w T x + b ≥ 0 ,对于负样本要求满足w T x + b < 0 \mathbf{w}^T\mathbf{x}+b<0 w T x + b < 0 。可参考下图:
样本空间中任意样本x x x 到该平面距离可表示为:
r = d ( w , b , x ) = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ 2 ( ∣ ∣ w ∣ ∣ 2 = w T w ) r=d(\mathbf{w},b,x)=\frac{|\mathbf{w}^T\mathbf{x}+b|}{||\mathbf{w}||_2}\quad(||\mathbf{w}||_2=\sqrt{\mathbf{w}^T\mathbf{w}})
r = d ( w , b , x ) = ∣∣ w ∣ ∣ 2 ∣ w T x + b ∣ ( ∣∣ w ∣ ∣ 2 = w T w )
d ( w , b ) = min ( x k , y k = 1 ) d ( w , b , x k ) + min ( x m , y m = − 1 ) d ( w , b , x m ) = min ( x k , y k = 1 ) ∣ w T x k + b ∣ ∥ w ∥ 2 + min ( x m , y m = − 1 ) ∣ w T x m + b ∣ ∥ w ∥ 2 = 1 ∥ w ∥ 2 ( min ( x k , y k = 1 ) ∣ w T x k + b ∣ + min ( x m , y m = − 1 ) ∣ w T x m + b ∣ ) = 2 ∥ w ∥ 2 \begin{aligned}
d(w,b) &=
\min_{(x_k,y_k=1)} d(w,b,x_k) + \min_{(x_m,y_m=-1)} d(w,b,x_m) \\
&= \min_{(x_k,y_k=1)} \frac{|w^T x_k + b|}{\|w\|_2} + \min_{(x_m,y_m=-1)} \frac{|w^T x_m + b|}{\|w\|_2} \\
&= \frac{1}{\|w\|_2}\Big(\min_{(x_k,y_k=1)} |w^T x_k + b| + \min_{(x_m,y_m=-1)} |w^T x_m + b|\Big) \\
&= \frac{2}{\|w\|_2}
\end{aligned}
d ( w , b ) = ( x k , y k = 1 ) min d ( w , b , x k ) + ( x m , y m = − 1 ) min d ( w , b , x m ) = ( x k , y k = 1 ) min ∥ w ∥ 2 ∣ w T x k + b ∣ + ( x m , y m = − 1 ) min ∥ w ∥ 2 ∣ w T x m + b ∣ = ∥ w ∥ 2 1 ( ( x k , y k = 1 ) min ∣ w T x k + b ∣ + ( x m , y m = − 1 ) min ∣ w T x m + b ∣ ) = ∥ w ∥ 2 2
支持向量机的基本形式就是最大化分类间隔,即在满足约束的条件下找到参数w \mathbf{w} w 和b b b 使得γ \gamma γ 最大,即等价于:
min w , b ∣ ∣ w ∣ ∣ 2 2 = min w , b 1 2 w T w s . t . y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , . . . , n \begin{aligned}
& \min_{\mathbf{w},b}\frac{||\mathbf{w}||^2}{2}=\min_{\mathbf{w},b}\frac{1}{2}\mathbf{w}^T\mathbf{w} \\
& \mathrm{s.t.}y_i(\mathbf{w}^Tx_i+b)\geq1,i=1,2,...,n
\end{aligned}
w , b min 2 ∣∣ w ∣ ∣ 2 = w , b min 2 1 w T w s.t. y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , ... , n
# 松弛变量,软间隔与hinge损失函数
先前介绍中假设所有训练样本数据是线性可分,即存在一个线性超平面能将不同类别样本完全隔开,这种情况称为“硬间隔”(hard margin),与硬间隔相对的是“软间隔”(soft margin)。软间隔指允许部分错分给定的训练样本。
在软间隔情况下,算法在使得每个类别中距离超平面最近样本到超平面的最小距离最大的同时,还应促使不满足约束条件的样本数目尽可能少,因此目标函数可表示如下:min w , b 1 2 w T w + c × ∑ i = 1 n [ y i ≠ s i g n ( w T x i + b ) ] s . t . y i ( w T x i + b ) ≥ 1 f o r c o r r e c t x i y i ( w T x i + b ) ≥ − ∞ f o r i n c o r r e c t x i \begin{gathered}
\min_{\mathbf{w},b}\frac{1}{2}\mathbf{w}^T\mathbf{w}+c\times\sum_{i=1}^n[y_i\neq sign(\mathbf{w}^T\mathbf{x}_i+b)] \\
s.t.y_i(\mathbf{w}^T\mathbf{x}_i+b)\geq1\ for\ correct\ \mathbf{x}_i \\
y_i(\mathbf{w}^T\mathbf{x}_i+b)\geq-\infty\ for\ incorrect\ \mathbf{x}_i
\end{gathered}
w , b min 2 1 w T w + c × i = 1 ∑ n [ y i = s i g n ( w T x i + b )] s . t . y i ( w T x i + b ) ≥ 1 f or correc t x i y i ( w T x i + b ) ≥ − ∞ f or in correc t x i
这里c c c 为常数,[ y i ≠ s i g n ( w T x i + b ) ] [y_i\neq sign(\mathbf{w}^T\mathbf{x}_i+b)] [ y i = s i g n ( w T x i + b )] 为指示函数。
然而上述目标函数难以直接求解。为此,引入hinge损失函数:
min w , b 1 2 w T w + c × ∑ i = 1 n max ( 0 , 1 − y i ( w T x i + b ) ) \min_{\mathbf{w},b}\frac{1}{2}\mathbf{w}^T\mathbf{w}+c\times\sum_{i=1}^n\max(0,1-y_i(\mathbf{w}^Tx_i+b))
w , b min 2 1 w T w + c × i = 1 ∑ n max ( 0 , 1 − y i ( w T x i + b ))
很显然,所有被正确分类的数据存在y i ( w T x i + b ) ≥ 1 y_i(\mathbf{w}^Tx_i+b)\geq 1 y i ( w T x i + b ) ≥ 1 ,因此在hinge损失函数作用下,这些被正确分类数据的hinge损失max ( 0 , 1 − y i ( w T x i + b ) ) = 0 \max\left(0,1-y_i(\mathbf{w}^Tx_i+b)\right)=0 max ( 0 , 1 − y i ( w T x i + b ) ) = 0 。于是,hinge函数只会记录分类错误数据的损失。
记ξ i = max ( 0 , 1 − y i ( w T x i + b ) ) \xi_i=\max\left(0,1-y_i(w^Tx_i+b)\right) ξ i = max ( 0 , 1 − y i ( w T x i + b ) ) (ξ i \xi_i ξ i 被称为第i i i 个变量的“松弛变量”,slack variables),显然ξ i ≥ 0 \xi_i\geq0 ξ i ≥ 0 。每一个样本对应一个松弛变量,用来表示该样本被分类错误所产生的损失。于是,可将上式重写为:min w , b 1 2 w T w + c × ∑ i = 1 n ξ i s.t. y i ( w T x i + b ) ≥ 1 − ξ i ξ i ≥ 0 , i = 1 , 2 , . . . , n \begin{gathered}
\min_{\mathbf{w},b}\frac{1}{2}\mathbf{w}^{T}\mathbf{w}+c\times\sum_{i=1}^{n}\xi_{i} \\
\text{s.t.}\quad y_{i}(\mathbf{w}^{T}x_{i}+b)\geq 1-\xi_{i} \\
\xi_{i}\geq 0,\,i=1,2,...,n
\end{gathered}
w , b min 2 1 w T w + c × i = 1 ∑ n ξ i s.t. y i ( w T x i + b ) ≥ 1 − ξ i ξ i ≥ 0 , i = 1 , 2 , ... , n
这就是最常见的“软间隔支持向量机”需要优化的目标函数(也被称为原问题,prime problem)。
具体求解此目标函数需要用到拉格朗日乘子,这里不过多展开。
# 核函数(用于解决线性不可分的情况)
在现实任务中,原始样本空间并不一定是线性可分的,对于这样的问题,可将样本中原始空间映射到一个更加高维的特征空间中去,使得样本在这个特征空间中高概率线性可分。如果原始空间是有限维,那么一定存在一个高维特征空间使样本可分。
常见的核函数如下,这里不多展开:
常见核函数
表达式
线性
κ ( x i , x j ) = x i x j \kappa(x_i,x_j)=x_ix_j κ ( x i , x j ) = x i x j
多项式
κ ( x i , x j ) = ( γ x i x j + c ) n \kappa(x_i,x_j)=\left(\gamma x_ix_j+c\right)^n κ ( x i , x j ) = ( γ x i x j + c ) n
Radial basis function
κ ( x i , x j ) = e − ∥ ∥ x i − x j ∥ ∥ 2 2 σ 2 \kappa(x_i,x_j)=e^{-\frac{\|\|x_i-x_j\|\|^2}{2\sigma^2}} κ ( x i , x j ) = e − 2 σ 2 ∥∥ x i − x j ∥ ∥ 2
Sigmoid
κ ( x i , x j ) = tanh ( γ x i x j + c ) \kappa(x_i,x_j)=\tanh(\gamma x_ix_j+c) κ ( x i , x j ) = tanh ( γ x i x j + c )
# 生成学习模型
本章介绍的监督学习可以分为判别式学习(discriminative learning)
和生成学习(generative learning),之前所介绍的方法都是判别式学习。
这一小节主要来介绍生成学习。
生成学习方法从数据中学习联合概率分布P ( X , C ) P(X,C) P ( X , C ) (其中X = { x 1 , x 2 , ⋯ , x n } X=\{x_1,x_2,\cdots,x_n\} X = { x 1 , x 2 , ⋯ , x n } 代表n个样本数据,C = { c 1 , c 2 , ⋯ , c n } ( c i ∈ C ) C=\{c_1,c_2,\cdots,c_n\}(c_i\in C) C = { c 1 , c 2 , ⋯ , c n } ( c i ∈ C ) 代表每个样本所对应的类别标签的集合),然后求出条件概率分布P ( C ∣ X ) P(C|X) P ( C ∣ X ) 作为预测模型,即P ( c i ∣ x ) = P ( x , c i ) P ( x ) P(c_i|x)=\frac{P(x,c_i)}{P(x)} P ( c i ∣ x ) = P ( x ) P ( x , c i ) 。
当然由于P ( x , c i ) P(x,c_i) P ( x , c i ) 一般难以求解,因此通过如下方法来求解联合概率分布P ( x , c i ) P(x,c_i) P ( x , c i ) :
P ( x , c i ) = P ( x ∣ c i ) ⏟ 似然概率 × P ( c i ) ⏟ 先验概率 ⇒ P ( c i ∣ x ) ⏟ 后验概率 = P ( x , c i ) ⏟ 联合概率 P ( x ) = P ( x ∣ c i ) ⏟ 似然概率 × P ( c i ) ⏟ 先验概率 P ( x ) P(\boldsymbol{x},c_i)=\underbrace{P(\boldsymbol{x}|c_i)}_{\text{似然概率}}\times\underbrace{P(c_i)}_{\text{先验概率}}\Rightarrow \underbrace{P(c_i|\boldsymbol{x})}_{\text{后验概率}}=\frac{\underbrace{P(x,c_i)}_{\text{联合概率}}}{P(x)}=\frac{\underbrace{P(x|c_i)}_{\text{似然概率}}\times\underbrace{P(c_i)}_{\text{先验概率}}}{P(x)}
P ( x , c i ) = 似然概率 P ( x ∣ c i ) × 先验概率 P ( c i ) ⇒ 后验概率 P ( c i ∣ x ) = P ( x ) 联合概率 P ( x , c i ) = P ( x ) 似然概率 P ( x ∣ c i ) × 先验概率 P ( c i )
对于每个类别而言,每个输入数据x x x 的概率P ( x ) P(x) P ( x ) 是一样的,因此可
将P ( x ) P(x) P ( x ) 从上式中去掉,于是可得到后验概率的如下计算方法:
P ( c i ∣ x ) ⏟ 后验概率 = P ( x ∣ c i ) ⏟ 似然概率 × P ( c i ) ⏟ 先验概率 \underbrace{P(c_i|\boldsymbol{x})}_{\text{后验概率}}=\underbrace{P(x|c_i)}_{\text{似然概率}}\times\underbrace{P(c_i)}_{\text{先验概率}}
后验概率 P ( c i ∣ x ) = 似然概率 P ( x ∣ c i ) × 先验概率 P ( c i )
这个式子就是著名的贝叶斯公式。似然概率显然“编码”了输入数据被类别模型产生的关系。
与生成学习方法不同,判别式方法由数据直接学习决策函数f θ f_\theta f θ 或者条件概率分布P ( c i ∣ x ) P(c_i|x) P ( c i ∣ x ) 来作为预测的模型。如果直接来学习决策函数f θ f_\theta f θ ,则不涉及与样本数据有关的概率计算,直接从底层特征出发来得到类别输出(如支持向量机、回归分析和Ada boosting等)。
常见的生成学习模型有隐马尔可夫模型、隐狄利克雷分布(latent dirichlet allocation,LDA)等。
# 小结
从数据中学习概念或模式形成判断和决策能力是机器学习的一个基本目标。监督学习从标注数据出发,学习得到一个映射函数,将原始输出映射到语义任务空间,架构起了“从底层特征到高层语义”的“桥梁”。
监督学习需要依赖于标注大数据来进行学习,难以利用无标注数据。如何形成数据依赖灵活,且在学习过程中有效利用知识或先验,是监督学习今后发展的重要方向。同时,一个任务是否可以被学习(learnability)仍然是学术界的热点和难点。
更多机器学习内容请见无监督学习。(byd内容怎么那么多 )