一起啃西瓜书机器学习-期末复习(不挂科)
Posted ZSYL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一起啃西瓜书机器学习-期末复习(不挂科)相关的知识,希望对你有一定的参考价值。
【一起啃西瓜书】机器学习-期末复习(不挂科)
前言
马上西瓜书期末考试,为了不挂科,需要有针对复习,内容来自专业各个学霸及老师的重点划分。
试卷题型
卷面共100分,含5种题型,考试时间120分钟。
- 判断题,8道,每题2分,共16分;
- 填空题,7道,每题2分,共14分;
- 简答题,5道,每题4分,共20分;
- 演算题,2道,每题10分,共20分;
- 编程题,2道,一道编程填空题(10分),一道编程题(20分),共30分。
第一章:绪论
机器学习致力于研究如何通过计算的手段,利用经验来改善系统自身的性能,从而在计算机上从数据(经验)中产生“模型”,用于对新的情况给出判断(利用此模型预测未来的一种方法)。
分为三类:监督学习、无监督学习、强化学习。
一般过程
- 数据获取
- 特征工程
- 模型选择
- 模型训练
- 模型评估
- 超参数条件
- 预测
更详细:
机器学习过程中,通过确定两方面的参数来找到泛化性能最好的函数:
- 函数参数,也就是我们通常所说的w和b,这类参数可以通过各种最优化算法自动求得;
- 模型参数,比如多项式回归中的多项式次数,规则化参数入等(即超参数),一般在模型训练之前通过手工指定(当然也可以采用网格法等算法进行寻优)。
确定模型超参数的过程称为模型选择(从Algorithm选择Models)。
机器学习的一般过程:
- 确定模型的一组超参数,
- 用训练集训练该模型,找到使损失函数最小的最优函数,
- 在验证集上对最优函数的性能进行度量,
- 重复1、2、3步,直到搜索完指定的超参数组合,
- 选择在验证集上误差最小的模型,并合并训练集和验证集作为整体训练模型,找到最优函数,
- 在测试集上对最优函数的泛化性能进行度量。
任务
- 分类:离散值
- 回归:连续值
- 聚类:无标记信息
有无标记信息
- 监督学习:分类、回归
- 无监督学习:聚类
- 半监督学习:两者结合
数据
训练集
用于模型拟合的数据样本
验证集
在模型训练过程中单独留出来的样本集,它可以用于调整模型的超参数和用于对模型的初步评估。通常用来在模型迭代训练时,用以验证当前模型的泛化能力,但不能作为调参,选择特征等算法相关的选择的依据。
监督学习
定义:
- 输入数据是由输入特征值和目标值所组成。
- 函数的输出可以是一个连续的值(称为回归), 或是输出是有限个离散值(称作分类)。
用已知某种或某些特征的样本作为训练集,以建立一个数学模型,再用已建立的模型来预测未知的样本的方法.是从标签化训练集数据集中推断出模型的机器学习任务.
无监督学习
定义:
- 输入数据是由输入特征值组成,没有目标值
- 输入数据没有被标记,也没有确定的结果。样本数据类别未知;
- 需要根据样本间的相似性对样本集进行类别划分
在算法构建过程中不考虑标签值,只通过特征信息去归纳一些新的规律出来.
半监督学习
定义:训练集同时包含有标记样本数据和未标记样本数据。
用少量有标注的样本和大量为标注的样本进行训练分类
第二章:模型评估与选择
欠拟合与过拟合
拟合:就是说这个曲线能不能很好的描述某些样本,并且有较强的泛化能力.
- 过拟合(训练集误差小,测试集误差大)
学习器把训练样本学习的“太好”,将训练样本本身的特点 当做所有样本的一般性质(不考虑数据噪声),导致泛化性能下降 - 欠拟合(训练集误差大)
对训练样本的一般性质尚未学好
如何判断区分二者?
- 过拟合:模型过于复杂,导致训练误差低,测试误差高
- 欠拟合:模型简单,训练测试误差均高
解决:
过拟合
- 增加训练样本数量
- 正则化L1.L2
- 降维
- 集成学习方法
- 减少模型复杂度
- 丢弃法Dropout
欠拟合:
- 添加新特性
- 增加模型复杂度
- 减小正则化系数
决策树:拓展分支
神经网络:增加训练轮数
- 过拟合:学习器把训练样本本身特点当做所有潜在样本都会具有的一般性质.
- 欠拟合:训练样本的一般性质尚未被学习器学好.
评估方法
现实任务中往往会对学习器的泛化性能、时间开销、存储开销、可解释性等方面的因素进行评估并做出选择。
我们假设测试集是从样本真实分布中独立采样获得,将测试集上的“测试误差”作为泛化误差的近似,所以测试集要和训练集中的样本尽量互斥。
留出法:
- 直接将数据集划分为两个互斥集合
- 训练/测试集划分要尽可能保持数据分布的一致性
- 一般若干次随机划分、重复实验取平均值
- 训练/测试样本比例通常为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
在测试集上对最优函数的泛华性能进行度量.
交叉验证
为什么用交叉验证法?
- 交叉验证用于评估模型的预测性能,尤其是训练好的模型在新数据上的表现,可以在一定程度上减小过拟合
- 还可以从有限的数据中获取尽可能多的有效信息
第三章:线性模型
线性回归&分类
- 线性回归:试图学得一个线性模型以尽可能准确的预测实值输出标记
- 分类:即最常见的是二分类,在线性回归得出预测值之后,增加了一个“单位越界函数”
回归和分类的区别:
本质都是一致的,就是模型的拟合(匹配),但是分类问题的y值(label)更离散化一些.而且同一个y值可能对应一大批的x,这些x是具有范围的。所以分类问题更多的是(一定区域的X)对应着一个y标签。而回归问题的模型更倾向于(很小区域内的X或者一般是一个X)对应着一个y.
基本形式
线性模型一般形式:
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)
-
样本作为正例的相对可能性的对数
对数几率回归优点 -
无需事先假设数据分布
-
可得到“类别”的近似概率预测
-
可直接应用现有数值优化算法求取最优解
多分类学习
多分类学习方法
- 二分类学习方法推广到多类
- 利用二分类学习器解决多分类问题(常用)
- 对问题进行拆分,为拆出的每个二分类任务训练一个分类器
- 对于每个分类器的预测结果进行集成以获得最终的多分类结果
拆分策略
- 一对一(One vs. One, OvO)
- 一对其余(One vs. Rest, OvR)
- 多对多(Many vs. Many, MvM)
给定一个训练集有N个预测标签,将这N个类别两两配对,从而产生N(N-1)/2个分类结果,最终结果可通过投票产生:即把被预测得最多的类别作为最终分裂结果
拆分阶段
- N个类别两两配对
- N(N-1)/2 个二类任务
- 各个二类任务学习分类器
- N(N-1)/2 个二类分类器
测试阶段
- 新样本提交给所有分类器预测
- N(N-1)/2 个分类结果
- 投票产生最终分类结果
- 被预测最多的类别为最终类别
一对其余
任务拆分
- 某一类作为正例,其他反例
- N 个二类任务
- 各个二类任务学习分类器
- N 个二类分类器
测试阶段
- 新样本提交给所有分类器预测
- N 个分类结果
- 比较各分类器预测置信度
- 置信度最大类别作为最终类别
两种策略比较
一对一
- 训练N(N-1)/2个分类器,存储开销和测试时间大
- 训练只用两个类的样例,训练时间短
一对其余
- 训练N个分类器,存储开销和测试时间小
- 训练用到全部训练样例,训练时间长
预测性能取决于具体数据分布,多数情况下两者差不多
多对多
- 多对多(Many vs Many, MvM)
若干类作为正类,若干类作为反类
纠错输出码(Error Correcting Output Code, ECOC)
纠错输出码(Error Correcting Output Code, ECOC)
- ECOC编码对分类器错误有一定容忍和修正能力,编码越长、纠错能力越强
- 对同等长度的编码,理论上来说,任意两个类别之间的编码距离越远,则纠错能力越强
类别不平衡
类别不平衡(class imbalance)
- 不同类别训练样例数相差很大情况(正类为小类)
再缩放
- 欠采样(undersampling)
- 去除一些反例使正反例数目接近(EasyEnsemble [Liu et al.,2009])
- 过采样(oversampling)
- 增加一些正例使正反例数目接近(SMOTE [Chawla et al.2002])
- 直接基于原始训练集进行学习,但在用训练好的分类器进行预测时,将式 y ′ / 1 − y ′ = y / 1 − y ∗ m − / m + y'/1-y' = y/1-y * m^-/m^+ y′/1−y′=y/1−y∗m−/m+嵌入到其决策过程中,称为阈值移动(threshold-moving)
优化提要
各任务下(回归、分类)各个模型优化的目标
- 最小二乘法:最小化均方误差
- 对数几率回归:最大化样本分布似然
参数的优化方法
- 最小二乘法:线性代数
- 对数几率回归:凸优化梯度下降、牛顿法
线性回归
线性回归是属于机器学习里面的监督学习,与分类问题不同的是,在回归问题中,其目标是通过对训练样本的学习,得到从样本特征到样本标签直接的映射,其中,在回归问题中,样本的标签是连续值(分类是离散值)。线性回归是一类重要的回归问题。在线性回归中,目标值与特征直接存在线性关系。
若线性回归方程得到多个解,下面哪些方法能够解决此问题?
- 获取更多的训练样本
- 选取样本有效的特征,使样本数量大于特征数
- 加入正则化项
线性回归分析中的残差(Residuals)
- 残差均值总是为零
线性回归分析中,目标是残差最小化。残差平方和是关于参数的函数,为了求残差极小值,令残差关于参数的偏导数为零,会得到残差和为零,即残差均值为零。
若下图展示了两个拟合回归线(A 和 B),原始数据是随机产生的。现在,我想要计算 A 和 B 各自的残差之和。注意:两种图中的坐标尺度一样。
关于 A 和 B 各自的残差之和,下列说法正确的是?
- A 与 B 相同
A 和 B 中各自的残差之和应该是相同的。线性回归模型的损失函数为: L o s s = ∑ ( y ′ − ( w x i + b ) ) 2 Loss=\\sum(y'-(wxi+b))^2 Loss=∑(y′−(wxi+b))2
对损失函数求导,并令 ∇Loss=0,即可得到 XW-Y=0,即残差之和始终为零。
波士顿房价预测
sklearn
中已经提供了波斯顿房价数据集的相关接口,想要使用该数据集可以使用如下代码:
from sklearn import datasets
#加载波斯顿房价数据集
boston = datasets.load_boston()
#X表示特征,y表示目标房价
X = boston.data
y = boston.target
由数据集可以知道,每一个样本有13个特征与目标房价,而我们要做的事就是通过这13个特征来预测房价,我们可以构建一个多元线性回归模型,来对房价进行预测。
模型如下:
y
=
b
+
w
1
x
1
+
w
2
x
2
+
.
.
.
+
w
n
x
n
y=b+w_1x_1+w_2x_2+...+w_nx_n
y=b+w1x1+w2x2+...+wnxn
x
i
x_i
xi:第i个特征值,
w
i
w_i
wi:表示第i个特征对应的权重,b表示偏置,y是目标房价.
为了方便,我们稍微将模型进行变换:
y = w 0 x 0 + w 1 x 1 + w 2 x 2 + . . . + w n x n y=w_0x_0+w_1x_1+w_2x_2+...+w_nx_n y=w0x0+w1x1+w2x2+...+wnxn
其中 x 0 x_0 x0等于1.
Y = h e t a X Y = hetaX Y=hetaX
h e t a = ( w 0 , w 1 , . . , w n ) heta=(w_0, w_1,..,w_n) heta=(w0,以上是关于一起啃西瓜书机器学习-期末复习(不挂科)的主要内容,如果未能解决你的问题,请参考以下文章