1 ML定义与应用场景
1.0 定义
- 机器通过分析大量数据来进行学习,发现数据之间的相关性,并做出预测。
- 机器学习最主要的任务是分类(聚类)和回归。
1.2 应用场景
- 模式识别
- 计算机视觉
- 数据挖掘
- 语音识别
- 自然语言处理
2 ML算法分类
- 机器学习按照学习方式分为五类:有监督学习、无监督学习、半监督学习、强化学习和集成学习。
- 传统机器学习为有监督和无监督学习两类.
2.1 有监督学习
- 条件:输入(训练集)、输出(标识)、测试数据(测试集)
- 结果:训练出最优模型
- 原理:通过已有的训练样本(已知输入与输出)去训练得到一个最优模型,再利用这个模型将所有的输入映射为相应输出,对输出进行判断从而实现对未知数据的分类。
2.2 无监督学习
- 条件:输入(数据)
- 结果:输出训练模型
- 工作原理:无任何训练样本,需要直接对数据进行建模、分类,找出数据内部的关联和模式。
当训练样本的信息部分缺失,特别是样本数据的类别标记缺失的情况下,半监督学习可获取良好的性能和泛化能力,利用大量未标记的样本建立学习器.
2.3 半监督学习
- 条件:输入数据部分被标识,部分数据未标识
- 结果:输出训练模型
- 工作原理:训练一部分数据为生成数据,一部分数据为监督数据,算法分为生成器和判定器两部分,生成器的目标是使判定器接受自己的数据,判定器是为了最大可能的区分生成数据和监督数据,通过不断的训练使两者都达到最佳性能。
2.4 强化学习
- 条件:输入(数据)
- 结果:输出训练模型
- 工作原理:输入数据作为对模型的反馈,输入数据仅作为一个检查模型对错的方式,在强化学习下,输入数据直接反馈到模型,模型必须对此立刻做出调整。
2.5 集成学习
通过合并多个模型来提升学习性能,可分为串行集成和并行集成.
- 串行集成利用模型间的依赖,通过给错分样本一个较大的权重来提示性能,如AdaBoost.
- 并行集成利用模型的独立性,通过平均降低误差,如Random Forest.
2.5 算法
学习方式 | 算法 |
---|---|
有监督学习 | 临近算法(KNN)、线性回归(Linear regression) 逻辑回归(Logistic regression)、朴素贝叶斯分类算法(Navie Bayes) 决策树(Decision trees)、随机森林(Random Forests) AdaBoost算法(AdaBoost)、神经网络(Neural networks) |
无监督学习 | K-means算法、Fuzzy K-means算法、迭代型K-means算法 合并法(系统聚类)、分裂法(分解聚类) |
半监督学习 | GANs(生成式对抗网络算法) |
强化学习 | 瞬时查分算法(Tempporal Difference Algorithm),Q-学习算法(Q-Learning Algorithm) Sarsa算法、Dyan算法、R学习算法(R-Learning Algorithm) H学习、马尔科夫决策过程 AlphaGo+Zero、蒙特卡洛算法 |
3 回归分析
3.1 简介
回归分析是一种预测性的建模技术,研究自变量和因变量的关系,通常利用已有数据,预测结果.
3.2 回归分析方法
序号 | 回归方法 | 描述 |
---|---|---|
1 | 线性回归 | 自变量可连续或离散,因变量是连续的,回归线是线性的 |
2 | 逻辑回归 | 自变量和因变量没有严格要求,广泛应用与分类 |
3 | 多项式回归 | 自变量指数大于1,即多项式回归 |
4 | 逐步回归 | 多个自变量同时处理 |
5 | 岭回归 | 用于多重共线性处理 |
6 | 套索回归 | 类似于岭回归 |
7 | ElasticNet回归 | 岭回归和套索回归的融合 |
4 分类
序号 | 回归方法 | 描述 |
---|---|---|
1 | 决策树 | 用于分类和预测,归纳学习 |
2 | 贝叶斯 | 利用概率统计知识进行那个分类,有朴素贝叶斯算法 |
3 | 神经网络 | 通过训练,使网络具有分类功能,有BP,RBF,Hopfield,Boltzmann,Hammnig |
4 | k-近邻 | k-Nearest Neighbor基于实例的分类方法 |
5 | 支持向量机 | 根据统计学习理论提出的分类方法 |
6 | 基于关联规则的分类 | 第一步用关联规则挖掘算法从训练数据集中挖掘所有满足指定支持度和置信度的类关联规则 第二步使用启发式方法从挖掘出的类关联规则中挑选出一组高质量的规则用于分类,有CBA, ADT, CMAR |
7 | 集成学习 | 多种分类器融合提高学习系统的泛化能力,如装袋(bagging),提升/推进(boosting),堆叠(stacking) |
5 模型训练过程的优化方法
机器学习中的模型优化方法对训练过程中的损失函数(目标函数)进行优化,以期训练出合格的模型,常用方法有:梯度下降法,牛顿法和拟牛顿法,共轭梯度法等.
5.1 梯度下降法
梯度下降法(Gradient Descent,GD)对凸函数进行处理获取全局最优解,该方法选择当前位置的负梯度方向作为搜索方向,该方向是目标值下降最快的方向,也称最速下降法
,最速下降法越接近目标值,步长越小,前进越慢.
例解:
以线性回归模型(Linear Logistic Model)为例,进行梯度下降法优化,假定待拟合函数为:
(5.1)
h
(
θ
)
=
∑
j
=
0
n
θ
j
x
j
h(\theta)=\sum_{j=0}^{n}\theta_jx_j \tag{5.1}
h(θ)=j=0∑nθjxj(5.1)
其中,
θ
\theta
θ为需要迭代求解的参数(若为神经网络则为神经网络的权重参数),n为特征个数.
目标函数为(均方差(Mean square error,MSE)):
(5.2)
J
(
θ
)
=
1
2
m
∑
i
=
1
m
(
y
i
−
h
θ
(
x
i
)
)
2
J(\theta)=\frac{1}{2m}\sum_{i=1}^{m}(y^i-h_{\theta}(x^i))^2 \tag{5.2}
J(θ)=2m1i=1∑m(yi−hθ(xi))2(5.2)
其中,m为训练样本数量.
5.1.0 批量梯度下降法
- 梯度
(5.3) ∂ J ( θ ) ∂ θ j = − 1 m ∑ i = 1 m ( y i − h θ ( x i ) ) x j i \frac{\partial J(\theta)}{\partial \theta_j}=-\frac{1}{m}\sum_{i=1}^{m}(y^i-h_{\theta}(x^i))x_j^i \tag{5.3} ∂θj∂J(θ)=−m1i=1∑m(yi−hθ(xi))xji(5.3)
其中,i为训练数据集数据,j为目标种类, h θ ( x i ) = ∑ j = 0 n θ j x j i h_{\theta}(x^i)=\sum_{j=0}^{n} \theta_jx_j^i hθ(xi)=∑j=0nθjxji - 参数更新
(5.4) θ l + 1 = θ l − η ∂ J ( θ ) ∂ θ j \theta_{l+1}=\theta_l-\eta \frac{\partial J(\theta)}{\partial \theta_j} \tag{5.4} θl+1=θl−η∂θj∂J(θ)(5.4)
公式(5.4)可看出,每更新一次参数,需要遍历一次所有数据,数据量较大时迭代速度会很慢.
5.1.2 随机梯度下降法
随机梯度下降,训练的每一步在训练集中随机选择一个实例,并仅基于该单个实例来计算梯度.
(5.5)
J
(
θ
)
=
1
2
m
∑
i
=
1
m
(
y
i
−
h
θ
(
x
i
)
)
2
=
1
m
∑
i
=
1
m
c
o
s
t
(
θ
,
(
x
i
,
y
i
)
)
J(\theta)=\frac{1}{2m}\sum_{i=1}^{m}(y^i-h_{\theta}(x^i))^2=\frac{1}{m}\sum_{i=1}^{m}cost(\theta, (x_i, y_i)) \tag{5.5}
J(θ)=2m1i=1∑m(yi−hθ(xi))2=m1i=1∑mcost(θ,(xi,yi))(5.5)
其中:
c
o
s
t
(
θ
,
(
x
i
,
y
i
)
)
=
1
2
(
y
i
−
h
θ
(
x
i
)
)
2
cost(\theta, (x_i, y_i))=\frac{1}{2}(y^i-h_{\theta}(x^i))^2
cost(θ,(xi,yi))=21(yi−hθ(xi))2
-
梯度
(5.6) ∂ c o s t ( θ ) ∂ θ j = − ( y i − h θ ( x i ) ) x j i \frac{\partial cost(\theta)}{\partial \theta_j}=-(y^i-h_{\theta}(x^i))x_j^i \tag{5.6} ∂θj∂cost(θ)=−(yi−hθ(xi))xji(5.6) -
参数更新
(5.7) θ l + 1 = θ l − η ∂ c o s t ( θ ) ∂ θ j \theta_{l+1}=\theta_l-\eta \frac{\partial cost(\theta)}{\partial \theta_j} \tag{5.7} θl+1=θl−η∂θj∂cost(θ)(5.7)
从公式5.7可看出随机梯度下降每次更新只使用一个样本,当训练数据集数据量较大时,可降低计算量,但缺点是每次迭代不一定都是朝着整体最优化方向.
6 超参数
超参数(hyperparameter)训练开始之前预定义的参数,不是通过训练得到的数据,实例:
- 学习率
- 神经网络层数
- 决策树深度或数量
- 聚类算法的簇数
7 模型交叉验证
交叉验证(cross validation)采用分组的思想,将原始数据集划分为训练集(train set)和测试集(test set),用训练集训练模型,测试集验证模型性能.
交叉验证目的
- 交叉验证用于评估模型分类效果,测试模型在新数据上的泛化能力,减小过拟合;
- 从有限的数据中获取尽可能多的信息;
7.2.1 留出法
留出法(Holdout cross validation)将原始数据分成三份,一份作为训练数集(train set),一份作为测试集(test set),一份作为验证集(validation set).
- 分层采样
训练集和测试集的划分尽可能保持数据分布的一致,即数据类别构成比例一致,如1000组样本,训练样本700组,测试样本300组,其中700组样本里有350只猫,350只狗,则测试样本里也要求有对应的比例:150只猫,150只狗,该方法为"分层采样". - 多次留出
单次使用留出法得到的估计结果往往不够稳定,在使用留出法时,一般采用若干次随机划分,重复进行实验评估后,取得的平均值作为留出发的评估结果.
7.2.2 k-fold交叉验证
k-fold交叉验证,将数据集
D
D
D划分为k个互斥的子集,成为
k
k
k折交叉验证,如
D
1
,
D
2
,
.
.
.
,
D
k
D_1, D_2, ..., D_k
D1,D2,...,Dk个子集,这
k
k
k个子集采用分层采样方法,训练时每次从
k
k
k个子集中取
k
−
1
k-1
k−1个子集训练,留一个数据子集进行测试,构成
k
k
k个训练子集,保证所有数据集都能进行训练和测试,最终返回
k
k
k个结果,取
k
k
k个结果的均值作为最终结果.如下将数据分为10个互斥的子集,即为10折交叉验证.
特例:留一法(Leave One Out),即取互斥子集的一个元素作为测试,该方法不受随机样本划分方式的影响,因为m个样本只有唯一的方式划分为m个子集,每个子集包含一个样本,留一法使用的训练集之比原始数据集少一个样本,是在绝大多数情况下,留一法评估的模型与期望评估的模型很相似.因此,留一法的评估结果被认为是准确的,然而,留一法在数据集较大时,训练m个模型的计算开销可能是难以接受的,如数据集包含1百万个样本,则需要训练1百万个模型.
7.2.3 可重复采样
在留出法和交叉验证法中,保留了一部分原始数据作为测试集,因此,实际评估的模型使用的训练集比原始数据集小,这必然会引入一些因训练样本规模不同而导致的估计偏差,留一法虽然样本规模波动较小,但是其计算量太高,为解决评估训练集数据量和计算量可控,提出"可重复采样"方法.
给定包含m个样本的数据集
D
D
D,对该数据集进行采样,生成数据集
D
′
D^{'}
D′:每次随机从
D
D
D中挑选一个样本,将其拷贝放入
D
′
D^{'}
D′中,然后再将该样本放回初始数据集
D
D
D中,使得该样本在下次采样时仍有可能被采集到,重复m次后,得到包含m个样本的数据集
D
′
D^{'}
D′.
8 端到端模型
end-to-end机器学习中的端到端即通过给模型一个输入,即可获取一个预测结果,中间过程是一个整体,无需人为干预,如数据标注,特征提取等,类似于控制系统,给定一个输入,相应会有一个输出,控制系统是一个完整的模型.
非端到端即一个系统分为多个模块,如自然语言处理,包括分词,词性标注,句法分析和语义分析等多个独立的模块,每个模块的结果,均会对整个训练结果.
9 线性和非线性
线性:可加性和齐次性;
可加性:
f
(
x
+
y
)
=
f
(
x
)
+
f
(
y
)
f(x+y)=f(x)+f(y)
f(x+y)=f(x)+f(y)
齐次性:
f
(
a
x
)
=
a
f
(
x
)
f(ax)=af(x)
f(ax)=af(x)
线性回归:自变量和因变量是线性关系,即一个自变量只有一个影响因素,如逻辑回归为线性回归,每个自变量只受一个参数影响;决策边界是线性的,即决策边界为规则的线,如直线,曲线;
非线性回归:回归模型因变量是自变量一次以上的函数形式,回归规律在图形上表现为形态各异的各种曲线;每个自变量受多个参数影响,如
y
=
w
1
∗
x
1
e
w
2
∗
x
1
y=w_1*x_1e^{w_2*x_1}
y=w1∗x1ew2∗x1,自变量受两个参数
w
1
和
w
2
w_1和w_2
w1和w2影响,神经网络为非线性模型.
10 模型评估公式
10.1 方差
方差(Variance, Var),反映数据集中数据离散程度。
V
a
r
=
1
n
∑
i
=
1
n
(
y
r
e
a
l
−
μ
)
2
Var ={\frac{1}{n}\sum_{i=1}^{n}(y_{real}-\mu)^2}
Var=n1i=1∑n(yreal−μ)2
其中,
n
n
n为数据集数据数量,
y
r
e
a
l
y_{real}
yreal训练数据集即真实的数据集,
μ
=
1
n
∑
i
=
1
n
y
i
\mu=\frac{1}{n}\sum_{i=1}^{n}y_i
μ=n1∑i=1nyi为数据集均值.
10.2 标准差
标准差(Standard Deviation, SD)方差的平方根,反映数据集中数据离散程度.
S
D
=
1
n
∑
i
=
1
n
(
y
r
e
a
l
−
μ
)
2
SD=\sqrt{\frac{1}{n}\sum_{i=1}^{n}(y_{real}-\mu)^2}
SD=n1i=1∑n(yreal−μ)2
其中,
n
n
n为数据集数据数量,
y
r
e
a
l
y_{real}
yreal训练数据集即真实的数据集,
μ
=
1
n
∑
i
=
1
n
y
i
\mu=\frac{1}{n}\sum_{i=1}^{n}y_i
μ=n1∑i=1nyi为数据集均值.
10.3 平均绝对误差
平均绝对误差(Mean Absolute Error, MAE),反映预测值和真实值的误差,更接近于实际情况.
M
A
E
=
1
n
∑
i
=
1
n
∣
(
y
r
e
a
l
−
y
p
r
e
d
i
c
t
)
∣
MAE=\frac{1}{n}\sum_{i=1}^{n}|(y_{real}-y_{predict})|
MAE=n1i=1∑n∣(yreal−ypredict)∣
其中,
n
n
n为数据集数据数量,
y
r
e
a
l
y_{real}
yreal训练数据集即真实的数据集,
y
p
r
e
d
i
c
t
y_{predict}
ypredict模型预测数据集.
10.4 平均平方误差
平均平方误差(Mean Squared Error, MSE)即均方误差,评价数据的变化程度,MSE越小,说明预测模型描述实验数据的准确率越高, 表示:
M
S
E
=
1
n
∑
i
=
1
n
(
y
r
e
a
l
−
y
p
r
e
d
i
c
t
)
2
MSE=\frac{1}{n}\sum_{i=1}^{n}(y_{real}-y_{predict})^2
MSE=n1i=1∑n(yreal−ypredict)2
其中,
n
n
n为数据集数据数量,
y
r
e
a
l
y_{real}
yreal训练数据集即真实的数据集,
y
p
r
e
d
i
c
t
y_{predict}
ypredict模型预测数据集,神经网络中的梯度下降方法中优化的数据就是均方误差.
10.5 均方根误差
均方根误差(Root Mean Squared Error)是均方根误差的算数平方根, 应用广泛,但是,它使用平均误差,对异常点(outliers)较敏感,如果回归器对某个点的回归值不理性,误差就会很大,从而对RMSE的值影响较大,平均值是非鲁棒性的,在训练神经网络模型时,为提高神经网络的鲁棒性(Robust),引入滑动平均模型,控制模型跟新速度,提高模型健壮性.
R
M
S
E
=
1
n
∑
i
=
1
n
(
y
r
e
a
l
−
y
p
r
e
d
i
c
t
)
2
RMSE=\sqrt{\frac{1}{n}\sum_{i=1}^{n}(y_{real}-y_{predict})^2}
RMSE=n1i=1∑n(yreal−ypredict)2
其中,
n
n
n为数据集数据数量,
y
r
e
a
l
y_{real}
yreal训练数据集即真实的数据集,
y
p
r
e
d
i
c
t
y_{predict}
ypredict模型预测数据集.
小结
(1) 监督学习:需要大量的标记数据,代价昂贵,常需要人工标注,耗时,代价高;标注的数据一般都是针对某个特定领域或特定应用,不具备通用性,未标注数据易获取,但是不能充分使用;
(2) 无监督学习:完全基于未标记样本的学习,不能保证分类或回归的有效性和精度,不能利用少量的有标记样本.
(3) 半监督学习:结合监督学习的标注数据和无监督学习的未标注数据进行学习,显著提高模型效率和精度,解决了只有少量标记数据,训练出来的学习系统泛化能力低的缺点;
(4) 模型评估公式,也是损失函数的始祖,训练模型时亦需要计算真实值(监督学习)和预测值的拟合程度,在机器学习中称为损失函数,自动控制中,闭环控制中称为偏差,即输入值与输出值(反馈值)的误差。
[参考文献]
[1]https://blog.youkuaiyun.com/FnqTyr45/article/details/80416243
[2]https://wenku.baidu.com/view/c7fe30edbceb19e8b8f6ba96.html
[3]https://blog.youkuaiyun.com/qimiejia5584/article/details/78622442
[4]https://www.cnblogs.com/maybe2030/p/4751804.html
[5]https://blog.youkuaiyun.com/cqfdcw/article/details/78173839
[6]https://www.cnblogs.com/sddai/p/8379452.html
[7]https://www.cnblogs.com/pinard/p/5992719.html
[8]https://blog.youkuaiyun.com/viatorsun/article/details/81880679
[9]https://blog.youkuaiyun.com/wbcnb/article/details/78306970
[10]https://wenku.baidu.com/view/ba63bc677dd184254b35eefdc8d376eeaeaa178f.html?from=search