机器学习概述
注:本文中机器学习大部分指统计学习,本人水平有限,如有纰漏,敬请不吝赐教。
1.前言
机器学习专门研究计算机怎样实现人类的学习行为。人类学习行为可以看做一种算法,当我们牙牙学语时,大人们会指着布谷鸟说这是鸟,这就可以看做是输入数据,这时候我们对鸟有了一定的认识,看到布谷鸟我们知道是鸟。当然当我们看到白鹭时,还是没办法认识到这是鸟,不断地重复,我们能够自动抽象出一种模型:”有翅膀、有羽毛、会飞的两足动物是鸟“。这时,我们看到任何一种动物,都会去判断是否满足模型中条件,从而辨别出是否是鸟类。以上是从机器学习角度来解释人类学习鸟类识别行为,机器学习这门学科经过样本输入->训练模型->预测识别过程来实现学习功能。
2.简单学习过程
形式化前言中的例子,训练样本为
- <有翅膀,有羽毛,会飞,两足,鸟>
- <有翅膀,有羽毛,不会飞,两足,非鸟>
- <无翅膀,有羽毛,会飞,两足,非鸟>
可生成判定流程
由上述流程图可知,若输入中无翅膀或者不会飞,会判定为非鸟。但当输入为<有翅膀,无羽毛, 会飞,多足>时,会判定为鸟,此时显然昆虫能够满足输入描述,判定错误。出现错误的原因是输入样本数量不足,每个样本包含四个属性,每个属性有两种状态,共计16种不同属性组合,样本并未覆盖整个属性空间。这种情况被称为过拟合。过拟合指在训练样本中表现较好,但对于未知数据样本表现较差,一般解决方案可以是增加样本数量或者添加正则项。
3.机器学习三要素
-
模型:形式上可由决策函数集合或者条件概率集合表示,比如线性回归中用
y = ω x + b y=\omega x + b y=ωx+b
来拟合数据,这是决策函数来表示模型。再比如逻辑回归中,通过对特定输入条件下真假两类各自概率比较得出预测。 -
策略:在所给问题的假设空间内,包含无数多个模型,如何从中找最佳模型是策略和算法存在的意义。策略指采用何种损失函数来评估模型,总体损失最小的就是最佳模型。损失函数包含很多种:
-
0-1损失函数:
L ( Y , f ( x ) ) = { 0 , f ( x ) ̸ = Y 1 , f ( x ) = Y L(Y,f(x))=\left\{ \begin{aligned} 0 & , &f(x) \not= Y \\ 1 & , &f(x) = Y \end{aligned} \right. L(Y,f(x))={01,,f(x)̸=Yf(x)=Y -
平方损失函数:
L ( Y , f ( x ) ) = ( Y − f ( x ) ) 2 L(Y,f(x))=(Y-f(x))^2 L(Y,f(x))=(Y−f(x))2 -
绝对损失函数:
L ( Y , f ( x ) ) = ∣ Y − f ( x ) ∣ L(Y,f(x))=|Y-f(x)| L(Y,f(x))=∣Y−f(x)∣ -
对数损失函数:
L ( Y , f ( x ) ) = − l o g P ( Y ∣ X ) L(Y,f(x))=-log P(Y|X) L(Y,f(x))=−logP(Y∣X)
对于整个参数空间而言,我们定义期望风险来表示其总体损失,表示一种泛化能力,其表达式为
R e x p ( f ) = E { L ( Y , f ( X ) ) } R_{exp}(f)=E\{L(Y,f(X))\} Rexp(f)=E{L(Y,f(X))}
但由于训练样本有限,我们定义经验风险用来表示样本总体损失,表达式为
R e m p ( f ) = 1 N ∑ i = 1 N L ( y i , f ( x i ) ) R_{emp}(f)=\frac{1}{N}\sum_{i=1}^NL(y_i,f(x_i)) Remp(f)=N1i=1∑NL(yi,f(xi))
这时,我们可以通过最小化经验风险来近似地最小化期望风险。证明如下: -
-
霍夫丁不等式
对于独立随机变量 且 x 1 , x 2 , . . . x n 且 x i ∈ { a i , b i } 且x_1,x_2,...x_n且x_i\in\{a_i,b_i\} 且x1,x2,...xn且xi∈{ai,bi},记 S n = ∑ i = 1 n x i S_n=\sum_{i=1}^nx_i Sn=∑i=1nxi,
则 P { E S n − S n ≥ t } ≤ e x p { − 2 t 2 ∑ i = 1 n ( b i − a i ) 2 } P\{ES_n - S_n \ge t\} \le exp\{\frac{-2t^2}{\sum_{i=1}^n(b_i-a_i)^2}\} P{ESn−Sn≥t}≤exp{∑i=1n(bi−ai)2−2t2} -
取L(Y,f(x))为0-1损失函数,由霍夫丁不等式可得
P { R e x p ( f ) − R e m p ( f ) ≥ t } = P { n E { L ( Y , f ( X ) ) } − ∑ i = 1 n L ( y i , f ( x i ) ) ≥ n t } = P { E { ∑ i = 1 n L ( y i , f ( x i ) ) } − ∑ i = 1 n L ( y i , f ( x i ) ) ≥ n t } ≤ e x p { − 2 n t 2 } P\{R_{exp}(f)-R_{emp}(f) \ge t\} \\ = P\{nE\{L(Y,f(X))\}-\sum_{i=1}^nL(y_i,f(x_i)) \ge nt\}\\ = P\{E\{\sum_{i=1}^nL(y_i,f(x_i))\}-\sum_{i=1}^nL(y_i,f(x_i)) \ge nt\}\\ \le exp\{-2nt^2\} P{Rexp(f)−Remp(f)≥t}=P{nE{L(Y,f(X))}−i=1∑nL(yi,f(xi))≥nt}=P{E{i=1∑nL(yi,f(xi))}−i=1∑nL(yi,f(xi))≥nt}≤exp{−2nt2} -
进一步得到对于整个假设空间F中
P { ∪ f ∈ F : R e x p ( f ) − R e m p ( f ) ≥ t } ≤ ∑ f ∈ F P { R e x p ( f ) − R e m p ( f ) ≥ t } ≤ ∣ F ∣ e x p { − 2 n t 2 } P\{\cup_{f\in F}: R_{exp}(f)-R_{emp}(f) \ge t\} \\ \le \sum_{f \in F}^{} P\{R_{exp}(f)-R_{emp}(f) \ge t\}\\ \le |F|exp\{-2nt^2\} P{∪f∈F:Rexp(f)−Remp(f)≥t}≤f∈F∑P{Rexp(f)−Remp(f)≥t}≤∣F∣exp{−2nt2} -
令 δ = ∣ F ∣ e x p { − 2 n t 2 } \delta =|F|exp\{-2nt^2\} δ=∣F∣exp{−2nt2},等价得
P { R e x p ( f ) − R e m p ( f ) < t } ≥ 1 − δ P\{ R_{exp}(f)-R_{emp}(f) \lt t\} \ge 1-\delta P{Rexp(f)−Remp(f)<t}≥1−δ
则显著性水平为 δ \delta δ的情况下, R e x p ( f ) < R e m p ( f ) + t R_{exp}(f) \lt R_{emp}(f) + t Rexp(f)<Remp(f)+t ,其中t与 ∣ F ∣ , n , δ |F|,n,\delta ∣F∣,n,δ相关,于是在给定情况下,经验风险可表示期望风险的上界,故最小化经验风险时,期望风险也在最小化。 -
算法:指求解损失函数最优解的算法,影响到求解的效率和效果,常用的有梯度下降算法、拟牛顿法、EM算法、通用迭代法。
4.机器学习过程
(1)数据预处理
训练样本有可能是含有缺失值、离散值等多种情况,需要将缺失值补齐、离散值预处理。此外有时候还需要进行特征选择,从业务角度出发,排除其中某些无关特征,比如预测广告点击,其中可能包含用户ID、广告ID等无关数据,应该排除。有时候特征选择能够很大程度上改进模型性能,有专门讲特征工程的资料可以自行查阅。
(2)选择模型
数据预处理后,可以选择合适的模型。模型实际上也就是通常说机器学习算法,包含线性回归、逻辑回归、决策树、支持向量机、随机森林等。每一种模型都有其适用范围,都包含一定假设,并且超参数不一样。比如说线性回归用一条直线去拟合样本数据,如果样本近似直线分布,那么可行,否则效果比较差。再比如说,朴素贝叶斯假设条件独立性,这一点如果不合适,那么效果也会很差,就需要考虑半朴素贝叶斯和贝叶斯网络。此外,选择模型这一步多数时候与后续模型评估放在一起,如果无法前期预估何种方法效果好,只能一个个尝试,然后通过评估比较好坏。
(3)训练模型
训练模型就是编码阶段,通过设定超参数和模型,根据训练数据生成模型。此外,对于不同模型可以使用不同的目标损失函数,具体的问题具体分析。比如线性回归使用欧式距离,支持向量机使用几何距离。对于不同的问题需要使用不同的优化算法,比如梯度下降算法、牛顿法、EM算法、通用迭代算法等。
(4)测试模型并评估模型
根据生成模型为测试数据进行预测,并计算错误率等评估指标。然后回过头去修改超参数和模型,最后比较评估指标,选取其中最佳的超参数和模型。
5.机器学习分类
(1)按训练样本有无标签分类
- 有监督学习:如前例,样本数据包含标签,从而训练出产生标签的模型。比如线性回归、神经网络。
- 半监督学习:由于带标签数据需要人工标注,成本较高。半监督学习则是采用部分为带标签数据,其余部分为无标签数据的方式来进行训练。比如半监督SVM、半监督聚类。
- 无监督学习:纯粹使用无标签数据进行训练。比如无监督聚类
(2)按问题分类
- 回归问题:用直线或曲线拟合数据,预测未来趋势,简单说来,用于预测得出连续值,如预测基金净值。
- 分类问题:根据属性,对样本进行分类,如预测用户是否会点击广告。
- 标注问题:对序列进行标注,如词性标注。
参考文献
-《统计学习方法》- 李航