一起啃西瓜书机器学习-期末复习
Posted ZSYL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一起啃西瓜书机器学习-期末复习相关的知识,希望对你有一定的参考价值。
机器学习-期末复习笔记
第一章:绪论
引言
人工智能和机器学习,深度学习的关系:
- 机器学习是人工智能的一个实现途径
- 深度学习是机器学习的一个方法发展而来
机器学习致力于研究如何通过计算的手段,利用经验来改善系统自身的性能,从而在计算机上从数据(经验)中产生“模型”,用于对新的情况给出判断(利用此模型预测未来的一种方法)。
分为三类:监督学习、元监督学习、强化学习。
一般过程
- 数据获取
- 特征工程
- 模型选择
- 模型训练
- 模型评估
- 超参数条件
- 预测
更详细:
机器学习过程中,通过确定两方面的参数来找到泛化性能最好的函数:
- 函数参数,也就是我们通常所说的w和b,这类参数可以通过各种最优化算法自动求得;
- 模型参数,比如多项式回归中的多项式次数,规则化参数入等(即超参数),一般在模型训练之前通过手工指定(当然也可以采用网格法等算法进行寻优)。
确定模型超参数的过程称为模型选择(从Algorithm选择Models)。
机器学习的一般过程:
- 确定模型的一组超参数,
- 用训练集训练该模型,找到使损失函数最小的最优函数,
- 在验证集上对最优函数的性能进行度量,
- 重复1、2、3步,直到搜索完指定的超参数组合,
- 选择在验证集上误差最小的模型,并合并训练集和验证集作为整体训练模型,找到最优函数,
- 在测试集上对最优函数的泛化性能进行度量。
任务
- 分类:离散值
- 回归:连续值
- 聚类:无标记信息
有无标记信息
- 监督学习:分类、回归
- 无监督学习:聚类
- 半监督学习:两者结合
数据
泛化能力
机器学习的目标是使得学到的模型能很好的适用于“新样本”,而不仅仅是训练集合,我们称模型适用于新样本的能力为泛化(generalization)能力。
第二章:模型评估与选择
错误率&误差
错误率
- 错误率即错分样本的占比:E = a/m
误差
-
误差即样本真实输出与预测输出之间的差异
- 训练(经验)误差–>训练集
- 测试误差–>测试集
- 泛化误差–>除训练集外所有样本(对未参与训练的样本总体,测试集只是其中一小部分)
-
机器学习的目的是通过现有样本,学习到泛化误差小的预测模型;
-
由于事先并不知道新样本的特征,我们只能努力使经验误差最小化;
-
但是,一味地减小经验误差并不必然意味着泛化误差减小。很多时候虽然能在训练集上做到分类错误率为零,但多数情况下这样的学习器并不好。
经验误差与过拟合
- 过拟合(训练集误差小,测试集误差大)
学习器把训练样本学习的“太好”,将训练样本本身的特点 当做所有样本的一般性质(不考虑数据噪声),导致泛化性能下降 - 欠拟合(训练集误差大)
对训练样本的一般性质尚未学好
如何判断区分二者?
- 过拟合:模型过于复杂,导致训练误差低,测试误差高
- 欠拟合:模型简单,训练测试误差均高
解决:
过拟合
- 增加训练样本数量
- 正则化
- 降维
- 集成学习方法
- 减少模型复杂度
欠拟合:
- 添加新特性
- 增加模型复杂度
- 减小正则化系数
决策树:拓展分支
神经网络:增加训练轮数
- 过拟合:学习器把训练样本本身特点当做所有潜在样本都会具有的一般性质.
- 欠拟合:训练样本的一般性质尚未被学习器学好.
评估方法
现实任务中往往会对学习器的泛化性能、时间开销、存储开销、可解释性等方面的因素进行评估并做出选择。
我们假设测试集是从样本真实分布中独立采样获得,将测试集上的“测试误差”作为泛化误差的近似,所以测试集要和训练集中的样本尽量互斥。
留出法:
- 直接将数据集划分为两个互斥集合
- 训练/测试集划分要尽可能保持数据分布的一致性
- 一般若干次随机划分、重复实验取平均值
- 训练/测试样本比例通常为2:1~4:1
交叉验证法:
- 将数据集分层采样划分为k个大小相似的互斥子集,每次用k-1个子集的并集作为训练集,余下的一个子集作为测试集,最终返回k个测试结果的均值,k最常用的取值是10.
自助法:
以自助采样法为基础,对数据集D有放回采样m次得到训练集D’ , D\\D’用做测试集。
-
实际模型与预期模型都使用m个训练样本
-
约有1/3的样本没在训练集中出现
-
从初始数据集中产生多个不同的训练集,对集成学习有很大的好处
-
自助法在数据集较小、难以有效划分训练/测试集时很有用;由于改变了数据集分布可能引入估计偏差,在数据量足够时,留出法和交叉验证法更常用。
性能度量
性能度量是衡量模型泛化能力的评价标准,反映了任务需求;使用不同的性能度量往往会导致不同的评判结果
回归任务最常用的性能度量是“均方误差”:
错误率&精度
对于分类任务,错误率和精度是最常用的两种性能度量:
- 错误率:分错样本占样本总数的比率
- 精度(正确率):分对样本占样本总数的比率
查准率&查全率
信息检索、Web搜索等场景中经常需要衡量正例被预测出来的比率或者预测出来的正例中正确的比率,此时查准率和查全率比错误率和精度更适合。
统计真实标记和预测结果的组合可以得到“混淆矩阵”:
查准率:在预测结果中,预测正例对了所占所有预测正例中的比例(竖着来)
查全率:在真实情况中,预测正例对了所占所有真实情况中的比例(横着来)
在预测癌症患者时,优先考虑查全率,因为如果有一个人漏判了便很严重,所以我们更看重:真实患有癌症的情况下,模型预测正确的概率。
基于混淆矩阵,解释什么是TPR(True Positive Rate)真正利率,FPR(False Positive Rate)假正例率,查准率(P),查全率(R)?
- TPR和R相等,都是真实正例被预测正确的比例,即:TPR=R=TP/TP+FN
- FPR:真实反例被预测为正例的比率,即:FPR=FP/FP+TN
- P:预测为正例的实例中,真正正例的比例,即:P=TP/TP+FP
P-R曲线
对样本进行分类时,模型一般会存在置信度,即当判断一个样本为目标类别的最小概率。根据学习器的预测结果按正例可能性大小对样例进行排序,并逐个把样本作为正例进行预测,则可以得到查准率-查全率曲线,简称“P-R曲线”.
平衡点是曲线上“查准率=查全率”时的取值,可用来用于度量P-R曲线有交叉的分类器性能高低。
比P-R曲线平衡点更用常用的是F1度量:
比
F
1
F1
F1更一般的形式
F
B
F_B
FB:
F1是基于P和R的调和平均,FB是加权调和平均
ROC&AUC
ROC曲线:纵轴是TPR,横轴是FPR
若某个学习器的ROC曲线被另一个学习器的曲线“包住”,则后者性能优于前者;否则如果曲线交叉,可以根据ROC曲线下面积大小进行比较,也即AUC值.
AUC衡量了样本预测的排序质量。
偏差与方差
通过实验可以估计学习算法的泛化性能,而“偏差-方差分解”可以用来帮助解释泛化性能。
期望输出与真实标记的差别称为偏差:
- 偏差度量了学习算法期望预测与真实结果的偏离程度;即刻画了学习算法本身的拟合能力;
- 方差度量了同样大小训练集的变动所导致的学习性能的变化;即刻画了数据扰动所造成的影响;
- 噪声表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界;即刻画了学习问题本身的难度。
泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。给定学习任务为了取得好的泛化性能,需要使偏差小(充分拟合数据)而且方差较小(减少数据扰动产生的影响)。
第三章:线性模型
基本形式
线性模型一般形式:
x
x
x:属性描述的示例,
x
i
xi
xi:是
x
x
x在第
i
i
i个属性上的取值.
向量形式:
f ( x ) = w T x + b f(x) = w^Tx + b f(x)=wTx+b
w = ( w 1 ; w 2 ; . . . ; w d ) w = (w_1;w_2;...;w_d) w=(w1;w2;...;wd):向量表示
线性模型优点
- 形式简单、易于建模
- 可解释性
- 非线性模型的基础
- 引入层级结构或高维映射
线性回归(linear regression)目的
- 学得一个线性模型以尽可能准确地预测实值输出标记
单一属性的线性回归目标:
- f ( x ) = w T x + b f(x) = w^Tx + b f(x)=wTx+b
参数/模型估计
参数/模型估计:最小二乘法(least square method)
最小化均方误差
分别对
w
w
w和
b
b
b求导,可得:
基于均方误差最小化来进行模型求解的方法为最小二乘法.
在线性回归中,最小二乘法就是试图找到一条直线,使所有样本到直线上的欧式距离之和最小。
对数线性回归
输出标记的对数为线性模型逼近的目标:
对数几率回归
二分类任务
z = w T x + b z = w^Tx + b z=wTx+b
寻找函数将分类标记与线性回归模型输出联系起来:
最理想的函数——单位阶跃函数
预测值大于零就判为正例,小于零就判为反例,预测值为临界值零则可任意判别
单位阶跃函数缺点:不连续
替代函数——对数几率函数(logistic function)
- 单调可微、任意阶可导
单位阶跃函数与对数几率函数的比较:
运用对数几率函数:
对数几率(log odds)
-
样本作为正例的相对可能性的对数
对数几率回归优点 -
无需事先假设数据分布
-
可得到“类别”的近似概率预测
-
可直接应用现有数值优化算法求取最优解
第四章:决策树
基本流程
决策树基于树结构来进行预测
- 决策过程中提出的每个判定问题都是对某个属性的“测试”
- 决策过程的最终结论对应了我们所希望的判定结果
- 每个测试的结果或是导出最终结论,或者导出进一步的判定问题,其考虑范围是在上次决策结果的限定范围之内
- 从根结点到每个叶结点的路径对应了一个判定测试序列
决策树学习的目的是为了产生一棵泛化能力强,即处理未见示例能力强的决策树
划分选择
决策树学习的关键在于如何选择最优划分属性。一般而言,随着划分过程不断进行,我们希望决策树的分支结点所包含的样本尽可能属于同一类别,即结点的“纯度”(purity)越来越高
经典的属性划分方法:
- 信息增益
- 增益率
- 基尼指数
信息增益
“信息熵”是度量样本集合纯度最常用的一种指标,假定当前样本集合D中第k类样本所占的比例为
p
k
p_k
pk,则D的信息熵定义为:
Ent(D)的值越小,则D的纯度越高。
- 计算信息熵时约定:若p=0, p ∗ l o g 2 p = 0 p*log2^p = 0 p∗log2p=0.
- Ent(D)的最小值为0,最大值 l o g 2 y log2^y log2y.
- 一般而言,信息增益越大,则意味着使用属性a来进行划分所获得的“纯度提升”越大
- ID3决策树学习算法[Quinlan, 1986]以信息增益为准则来选择划分属性
信息增益实例
存在的问题
若把“编号”也作为一个候选划分属性,则其信息增益一般远大于其他属性。显然,这样的决策树不具有泛化能力,无法对新样本进行有效预测。
信息增益对可取值数目较多的属性有所偏好
增益率
存在的问题:
- 增益率准则对可取值数目较少的属性有所偏好
C4.5 [Quinlan, 1993]使用了一个启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选取增益率最高的
基尼指数
数据集D的纯度可用“基尼值”来度量:
-
反映了从D中随机抽取两个样本,其类别标记不一致的概率.
-
Gini(D):越小,数据集D的纯度越高.
CART [Breiman et al., 1984]采用“基尼指数”来选择划分属性
剪枝处理
为什么剪枝?
- “剪枝”是决策树学习算法对付“过拟合”的主要手段
- 可通过“剪枝”来一定程度避免因决策分支过多,以致于把训练集自身的一些特点当做所有数据都具有的一般性质而导致的过拟合
剪枝的基本策略
- 预剪枝
- 后剪枝
判断决策树泛化性能是否提升的方法
- 留出法:预留一部分数据用作“验证集”以进行性能评估
预剪枝
决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点记为叶结点,其类别标记为训练样例数最多的类别
针对上述数据集,基于信息增益准则,选取属性“脐部”划分训练集。分别计算划分前(即直接将该结点作为叶结点)及划分后的验证集精度,判断是否需要划分。若划分后能提高验证集精度,则划分,对划分后的属性,执行同样判断;否则,不划分
预剪枝的优缺点
优点
- 降低过拟合风险
- 显著减少训练时间和测试时间开销
缺点
- 欠拟合风险:有些分支的当前划分虽然不能提升泛化性能,但在其基础上进行的后续划分却有可能导致性能显著提高。预剪枝基于“贪心”本质禁止这些分支展开,带来了欠拟合风险
后剪枝
先从训练集生成一棵完整的决策树,然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点
后剪枝的优缺点
优点
- 后剪枝比预剪枝保留了更多的分支,欠拟合风险小,泛化性能往往优于预剪枝决策树
缺点
- 训练时间开销大:后剪枝过程是在生成完全决策树之后进行的,需要自底向上对所有非叶结点逐一考察
ID3,C4.5和CART算法对比
相同点:都采用贪心方法,以自顶向下递归的分治方式构造,随着树的构建,训练集递归地被划分为子集
不同点:
- ID3算法基于信息增益为准则来选择划分属性,依赖于特征数目多的特征,没有考虑少特征和不完整数据,抗噪性差,容易产生过拟合.
- C4.5算法基于增益率准则来选择划分属性,使用了一个启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选取增益率最高的,对可取值数目较少的属性有所偏好。
第五章 神经网络
神经元模型
- 输入:来自其他n个神经元传递过来的输入信号
- 处理:输入信号通过带权重的连接进行传递, 神经元接受到总输入值将与神经元的阈值进行比较
- 输出:通过激活函数的处理以得到输出
- 理想激活函数是阶跃函数, 0表示抑制神经元而1表示激活神经元
- 阶跃函数具有不连续、不光滑等不好的性质, 常用的是 Sigmoid 函数
感知机
感知机由两层神经元组成, 输入层接受外界输入信号传递给输出层, 输出层是M-P神经元(阈值逻辑单元)
感知机能够容易地实现逻辑与、或、非运算
感知机学习
给定训练数据集, 权重 w i ( i = 1 , 2 , . . . , n ) wi(i=1,2,...,n) wi(i=1,2,...,n)与阈值 η \\eta η可以通过学习得到.
感知机学习规则
对训练样例
(
x
,
y
)
(x,y)
(x,y), 若当前感知机的输出为
y
h
a
t
yhat
yhat, 则感知机权重调整规则为:
η
\\eta
η 属于(0, 1)称为学习率.
若感知机对训练样例 ( x , y ) (x,y) (x,y)预测正确, 则感知机不发生变化;否则根据错误程度进行权重的调整.
感知机学习能力
- 若两类模式线性可分, 则感知机的学习过程一定会收敛;否感知机的学习过程将会发生震荡
- 单层感知机的学习能力非常有限, 只能解决线性可分问题
- 事实上, 与、或、非问题是线性可分的, 因此感知机学习过程能够求得适当的权值向量. 而异或问题不是线性可分的, 感知机学习不能求得合适解
对于非线性可分问题, 如何求解?
- 多层感知机
多层感知机
解决异或问题的两层感知机:
输出层与输入层之间的一层神经元, 被称之为隐层或隐含层, 隐含层和输出层神经元都是具有激活函数的功能神经元
多层前馈神经网络
定义:每层神经元与下一层神经元全互联, 神经元之间不存在同层连接也不存在跨层连接
前馈:输入层接受外界输入, 隐含层与输出层神经元对信号进行加工, 最终结果由输出层神经元输出
学习:根据训练数据来调整神经元之间的“连接权”以及每个功能神经元的“阈值”
多层网络:包含隐层的网络
误差逆传播算法
误差逆传播算法(Error BackPropagation, 简称BP)是最成功的训练多层前馈神经网络的学习算法.
此处请参考:【深度学习】梯度下降和反向传播原理
标准 BP 算法
- 每次针对单个训练样例更新权值与阈值.
- 参数更新频繁, 不同样例可能抵消, 需要多次迭代.
累计 BP 算法
- 其优化的目标是最小化整个训练集上的累计误差
- 读取整个训练集一遍才对参数进行更新, 参数更新频率较低.
实际应用
但在很多任务中, 累计误差下降到一定程度后, 进一步下降会非常缓慢, 这时标准BP算法往往会获得较好的解, 尤其当训练集非常大时效果更明显.
多层前馈网络表示能力
- 只需要一个包含足够多神经元的隐层, 多层前馈神经网络就能以任意精度逼近任意复杂度的连续函数
多层前馈网络局限
- 神经网络由于强大的表示能力, 经常遭遇过拟合. 表现为:训练误差持续降低, 但测试误差却可能上升
- 如何设置隐层神经元的个数仍然是个未决问题. 实际应用中通常使用“试错法”调整
缓解过拟合的策略
- 早停:在训练过程中, 若训练误差降低, 但验证误差升高, 则停止训练
- 正则化:在误差目标函数中增加一项描述网络复杂程度的部分, 例如连接权值与阈值的平方和
全局最小与局部极小
- 显然参数空间梯度为零的点, 只要是误差函数值小于邻点的误差函数值, 就是局部极小点
- 可能存在多个局部极小值, 但却只会有一个全局极最小值
“跳出”局部最小的策略
基于梯度的搜索是使用最为广泛的参数寻优方法. 如果误差函数仅有一个局部极小, 那么此时找到的局部极小就是全局最小;
然而,如果误差函数具有多个局部极小, 则不能保证找到的解是全局最小. 在现实任务中, 通常采用以下策略“跳出”局部极小, 从而进一步达到全局最小.
- 多组不同的初始参数优化神经网络, 选取误差最小的解作为最终参数.
- 模拟退火技术 [Aarts and Korst, 1989]. 每一步都以一定的概率接受比当前解更差的结果, 从而有助于跳出局部极小.
- 随机梯度下降. 与标准梯度下降法精确计算梯度不同, 随机梯度下降法在计算梯度时加入了随机因素.
- 遗传算法 [Goldberg, 1989]. 遗传算法也常用来训练神经网络以更好地逼近全局极小.
深度学习
典型的深度学习模型就是很深层的神经网络.
模型复杂度
- 增加隐层神经元的数目 (模型宽度)
- 增加隐层数目(模型深度)
- 从增加模型复杂度的角度看, 增加隐层的数目比增加隐层神经元的数目更有效. 这是因为增加隐层数不仅增加额拥有激活函数的神经元数目, 还增加了激活函数嵌套的层数.
复杂模型难点
- 多隐层网络难以直接用经典算法(例如标准BP算法)进行训练, 因为误差在多隐层内逆传播时, 往往会”发散”而不能收敛到稳定状态.
复杂模型训练方法
- 预训练:监督逐层训练是多隐层网络训练的有效手段, 每次训练一层隐层结点, 训练时将上一层隐层结点的输出作为输入, 而本层隐结点的输出作为下一层隐结点的输入, 这称为”预训练”.
- 微调:在预训练全部完成后, 再对整个网络进行微调训练. 微调一般使用BP算法.
预训练+微调 的做法可以视为将大量参数分组, 对每组先找到局部看起来比较好的设置, 然后再基于这些局部较优的结果联合起来进行全局寻优.
复杂模型训练方法
权共享
- 一组神经元使用相同的连接权值.
- 权共享策略在卷积神经网络(CNN)[LeCun and Bengio, 1995; LeCun et al. , 1998]中发挥了重要作用.
卷积神经网络
-
结构:CNN复合多个卷积层和采样层对输入信号进行加工, 然后在连接层实现与输出目标之间的映射.
-
卷积层:每个卷积层包含多个特征映射, 每个特征映射是一个由多个神经元构成的“平面”, 通过一种卷积滤波器提取的一种特征
-
采样层:亦称“汇合层”, 其作用是基于局部相关性原理进行亚采样, 从而在减少数据量的同时保留有用信息
-
连接层:每个神经元被全连接到上一层每个神经元, 本质就是传统的神经网络, 其目的是通过连接层和输出层的连接完成识别任务
卷积神经网络激活函数
- 在CNN中通常将 sigmoid 激活函数替换为修正线性函数ReLU
卷积神经网络训练
- CNN 可以用BP进行训练, 但在训练中, 无论是卷积层还是采样层, 每一组神经元都是用相同的连接权, 从而大幅减少了需要训练的参数数目
理解深度学习:
“特征工程” VS“特征学习”或者 “表示学习”
- 特征工程由人类专家根据现实任务来设计, 特征提取与识别是单独的两个阶段;
- 特征学习通过深度学习技术自动产生有益于分类的特征, 是一个端到端的学习框架.
第六章:支持向量机
间隔与支持向量
向量方向
向量加减
点到向量距离
线性模型:在样本空间中寻找一个超平面, 将不同类别的样本分开.
- Q:将训练样本分开的超平面可能有很多, 哪一个好呢?
- A:应选择”正中间”, 容忍性好, 鲁棒性高, 泛化能力最强.
距离超平面最近的这几个训练样本点使等式成立,成为支持向量,两个异类支持向量到超平面的距离之和为:
显然为了最大化间隔,仅需最小化
∣
∣
w
∣
∣
2
||w||^2
∣∣w∣∣2,这就是SVM的基本型.
对偶问题
解的稀疏性
支持向量机解的稀疏性: 训练完成后, 大部分的训练样本都不需保留, 最终模型仅与支持向量有关.
求解方法 - SMO
SMO(Sequential minimal optimization)
基本思路:不断执行如下两个步骤直至收敛.
用一个变量表示另一个变量, 回代入对偶问题可得一个单变量的二次规划, 该问题具有闭式解.
偏移项b:通过支持向量来确定.
线性不可分
- Q:若不存在一个能正确划分两类样本的超平面, 怎么办?
- A:将样本从原始空间映射到一个更高维的特征空间, 使得样本在这个特征空间内线性可分.
核支持向量机
核函数
基本想法:不显式地设计核映射, 而是设计核函数.
Mercer定理(充分非必要):只要一个对称函数所对应的核矩阵半正定, 则它就能作为核函数来使用.
常用核函数:
软间隔
- Q:现实中, 很难确定合适的核函数使得训练样本在特征空间中线性可分; 同时一个线性可分的结果也很难断定是否是有过拟合造成的.
- A:引入”软间隔”的概念, 允许支持向量机在一些样本上不满足约束.
0/1损失函数
基本想法:最大化间隔的同时, 让不满足约束的样本
以上是关于一起啃西瓜书机器学习-期末复习的主要内容,如果未能解决你的问题,请参考以下文章