一、监督学习与无监督学习
1、监督学习(分类与回归)
监督学习需要具有标签(label)的训练数据。如做分类,你需要先对训练数据做标记,然后才能训练模型将数据分成标记类。
分类与回归的对比:
- 都是对输入做出预测。
- 输出不同。如果机器学习模型的输出是物体所属的类别是离散值,例如布尔值,我们称之为分类模型。 如:预测明天及以后几天的天气情况:明天阴,下周一晴,是分类; 如果机器学习模型的输出的是物体的值,是连续值的模型称为回归模型。 如:通过之前的温度来预测现在往后的温度,每一个时刻,我们都能预测出一个温度值,得到这个值用的方法就是回归。
- 结果不同。分类的结果没有逼近,对就是对,错就是错,什么类别就是什么类别,最终结果只有一个。回归是对真实值的一种逼近预测,值不确定,当预测值与真实值相近时,误差较小时,认为这是一个好的回归。
- 损失函数不同。回归问题的输出空间定义了一个度量 d = F(ytrue,yfalse)去衡量输出值与真实值之间的“误差大小”;在分类问题中,只有分类“正确”与“错误”之分,至于错误时是将Class 5分到Class 6,还是Class 7,并没有区别。
2、无监督学习(聚类与降维)
非监督学习不需要标签,它只有输入数据,目标是发现数据中的规律。
二、集成学习
Bagging、Boosting、Stacking、Blending
Bagging是并行化的,而Boosting是串行的。Bagging训练的速度就快些,而且对于大规模分布式训练来说,Bagging的优势就更大了。
三、强化学习
强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。
四、误差
①误差:学习器的实际预测输出与样本的真实输出之间的差异称为“误差”。
②偏差(bias):个别测定值与测定的平均值之差。
③残差:(可以理解为噪声),指预测结果与真实值之间的差异.
④方差(variance):指各个数据与其平均数之差的平方的和的平均数,它表示的是一种偏离程度:当数据分布比较分散时,方差就较大;因此方差越大,数据的波动越大;方差越小,数据的波动就越小。
用误差衡量测量结果的准确度,用偏差衡量测试结果的精确度;误差是以真实值为标准,偏差是以多次测量结果的平均值为标准。偏差可以衡量我们所建立模型的精确度,精确度越高,我们用模型计算出的值与实际值越接近;而方差表示的是一种偏离程度,在一定程度上可以表示我们的模型对于任何给定的测试样本会出现多大的变化。残差和模型偏差的定义很接近,两者的区别是偏差是模型拟合度不够导致。而残差是模型准确,但仍然与真实值有一定的差异,这里可以理解成噪声,噪声是随机的,意味着不可预测,而偏差不是随机产生的,可通过一定的特征工程进行预测。
对于模型训练的意义
低偏差,低方差:这是训练的理想模型,此时蓝色点集基本落在靶心范围内,且数据离散程度小,基本在靶心范围内;
低偏差,高方差:这是深度学习面临的最大问题,过拟合了。也就是模型太贴合训练数据了,导致其泛化(或通用)能力差,若遇到测试集,则准确度下降的厉害;
高偏差,低方差:这往往是训练的初始阶段;
高偏差,高方差:这是训练最糟糕的情况,准确度差,数据的离散程度也差。
偏差、残差与方差的关系如图:
对模型起决定性影响的是偏差和方差,模型过于简单必然导致偏差过大,过于复杂必然导致方差过大,需根据图中折中选择。
上图可以分为两个部分,以中间的虚线隔开,左边部分为欠拟合状态,右边部分为过拟合状态,针对欠拟合和过拟合的处理方式如下:
a、欠拟合:偏差过大,做特征工程、减小(弱)正则化系数;
b、过拟合:方差过大,可增加样本、减少特征、增加(强)正则化系数;
偏差和方差贯穿整个建模过程,因此关注偏差和方差的影响,能够找到模型优化方向,而不是盲目的增加特征,增加样本不断试验。
⑤经验误差(训练误差):模型在训练集上的误差称为“经验误差“(empirical error)(训练误差),是模型Y关于训练数据集的平均损失。
⑥测试误差:模型Y关于测试数据集的平均损失
⑦泛化误差:利用学习到的模型对未知数据的误差。
五、过拟合与欠拟合
1、过拟合与欠拟合
过拟合:为了得到一致假设而使得假设过于严格。使得其在训练集上的表现非常完美,但在训练集之外的验证集、测试集却表现不好。
欠拟合:模型在训练集、验证集和测试集上均表现不佳的情况。
2、过拟合与欠拟合的原因
(1)过拟合原因:
①模型过于复杂
②训练集与测试集数据分布不同
③样本噪声数据干扰过大
过拟合一定会发生的原因:数据量太小,不能反映真实的数据分布;模型复杂度的问题,比如神经网络,参数太多,可解释性差;缺乏归纳偏置
(2)欠拟合原因:模型复杂度过低、数据特征量过少
3、解决方法
(1)解决欠拟合(高偏差)的方法
①模型复杂化 ②增加更多的特征使输入数据具有更强的表达能力 ③调整参数与超参数 ④降低正则化约束
(2)解决过拟合(高方差)的方法
①获取和使用更多的数据 ②控制模型的复杂度 ③降低特征的数量 ④使用正则化约束 ⑤使用Dropout(只是用于神经网络) ⑥早停
六、正则化
什么是正则化?
正则化是针对过拟合而提出的。通常在求解模型最优的是一般优化最小的经验风险,现在在该经验风险上加入模型复杂度这一项,并使用一个rate比率来权衡模型复杂度与以往经验风险的权重,如果模型复杂度越高,结构化的经验风险会越大,现在的目标就是变为了结构经验风险的最优化,可以防止模型训练过度复杂,有效降低过拟合的风险。
正则化的一般形式:
其中,第1项是经验风险,第2项是正则化项
为什么要正则化:让模型不要过于依赖样本数据
正则化主要思想:降低模型的复杂度
正则化主要目的:防止模型过拟合
正则化实现思路:最小化损失Loss+ 最小复杂度(结构风险最小化)
正则化终极目标:提升模型泛化Generalization的能力
L1、L2正则化
L1、L2正则化(L1、L2Regularization)又叫L1范数、L2范数。目的是对损失函数(cost function)加上一个约束(也可叫惩罚项),减小其解的范围。
常用范数的定义:
Lasso 回归——L1 范数
L1 Regularization:将噪点相关权重系数设为0(也叫稀疏正则化)
L1范数是指向量中各个元素绝对值之和,也有个美称叫“稀疏规则算子”(Lasso regularization)。所以L1正则化可以产生稀疏模型。
在原始的损失函数后面加上一个L1正则化项
为什么需要用L1:
特征组合可能会包含许多维度,模型太庞大占用大量RAM,因此,对权重降为0,既可以节省空间,也可以减少模型中的噪点。
L1核心思想:将无意义的特征维度降为0
岭回归(Ridge Regression)——L2 范数
L2范数向量各元素的平方和然后求平方根。我们让L2范数的规则项||W||2最小,可以使得W的每个元素都很小,都接近于0,即前面所说的惩罚项为:
L2实现上,直接在原来的损失函数基础上加上权重参数的平方和如下,这样调节权重w变小,实现最小化loss 损失+复杂度的小目标:
加入L2正则化结果:测试Lost明显减少,训练损失有所上升,特征权重的绝对值降低(模型复杂度降低)
例如大多数LR(逻辑回归)模型都会使用L2正则化来降低模型复杂度,并且LR非常容易过拟合,因为LR会尝试让所有样本的Lost减少到0,但始终达不到,所以每个LR指示器特征的权重就会不断增大到正无穷或负无穷。
L1/L2对比:
• L2只能将权重变小,但是不能将他们降为0
• 采用不同方式降低权重w:L2会降低w的平方,L1是减w的绝对值,因此L2与L1具有不同的导数
七、交叉验证
在模型建立中,通常有两个数据集:训练集(train)和测试集(test)。训练集用来训练模型;测试集是完全不参与训练的数据,仅仅用来观测测试效果的数据。
一般情况下,训练的结果对于训练集的拟合程度通常还是挺好的,但是在测试集总的表现却可能不行。比如下面的例子:
图一的模型是一条线型方程。 可以看到,所有的红点都不在蓝线上,所以导致了错误率很高,这是典型的不拟合的情况
图二 的蓝线则更加贴近实际的红点,虽然没有完全重合,但是可以看出模型表示的关系是正确的。
图三,所有点都在蓝线上,这时候模型计算出的错误率很低,(甚至将噪音都考虑进去了)。这个模型只在训练集中表现很好,在测试集中的表现就不行。 这是典型的‘过拟合’情况。
所以,训练的模型需要找出数据之间‘真正’的关系,避免‘过拟合’的情况发生。
交叉验证:就是在训练集中选一部分样本用于测试模型。
保留一部分的训练集数据作为验证集/评估集,对训练集生成的参数进行测试,相对客观的判断这些参数对训练集之外的数据的符合程度。
(一)留出法:
概念:①首先随机地将已给数据分为两部分:训练集和测试集 (例如,70% 训练集,30% 测试集);②然后用训练集在各种条件下 (比如,不同的参数个数) 训练模型,从而得到不同的模型; ③在测试集上评价各个模型的测试误差,选出测试误差最小的模型。
评价:这种方式其实严格意义上并不能算是交叉验证,因为训练集的样本数始终是那么多,模型并没有看到更多的样本,没有体现交叉的思想。由于是随机的将原始数据分组,所以最后测试集上准确率的高低与原始数据的分组有很大的关系,所以这种方法得到的结果其实并不具有说服性。
(二)k折交叉验证:
概念:①首先随机地将数据集切分为 k 个互不相交的大小相同的子集;②然后将 k-1 个子集当成训练集训练模型,剩下的 (held out) 一个子集当测试集测试模型;③将上一步对可能的 k 种选择重复进行 (每次挑一个不同的子集做测试集);④这样就训练了 k 个模型,每个模型都在相应的测试集上计算测试误差,得到了 k 个测试误差,对这 k 次的测试误差取平均便得到一个交叉验证误差。这便是交叉验证的过程。
优点:所有数据都会参与到训练和预测中,有效避免过拟合,充分体现了交叉的思想
缺点:交叉验证可能存在 bias 或者 variance。如果我们提高切分的数量 k,variance 会上升但 bias 可能会下降。相反得,如果降低 k,bias 可能会上升但 variance 会下降。bias-variance tradeoff 是一个有趣的问题,我们希望模型的 bias 和 variance 都很低,但有时候做不到,只好权衡利弊,选取他们二者的平衡点。
应用最多的交叉验证方式,通常使用10折交叉验证,当然这也取决于训练数据的样本数量。
(三)留一交叉验证:
概念:k折交叉验证的特殊情况,k=N,N 是数据集的样本数量,即把每个样本单独作为测试集,其余样本作为训练集,往往在数据缺乏的情况下使用。
优点:①每一回合中几乎所有的样本皆用于训练模型,因此最接近原始样本的分布,这样评估所得的结果比较可靠。②实验过程中没有随机因素会影响实验数据,确保实验过程是可以被复制的。
缺点:计算成本高,因为需要建立的模型数量和原始数据集样本数量一致,尤其当样本数量很大的时候。可以考虑并行化训练模型减少训练时间。
总之,交叉验证对于我们选择模型以及模型的参数都是很有帮助的。
但以上交叉验证的方法都有一个问题,就是在数据分组的时候缺乏随机性,以 k折交叉验证 为例,每个数据样本只能固定属于 k 个子集中的一个,可能会造成对于最终结果的影响。
八、模型评估
在建模的时候,不论是一般机器学习还是深度学习,都要有评价指标进行模型效果的衡量,评价指标是对于一个模型效果的数值型量化。一般来说,评价指标分为分类问题和回归问题,下面就分别介绍两类问题的评价指标。
(一)分类模型的评估
准确率、精确率、召回率、f1_score,混淆矩阵,ks,ks曲线,ROC曲线,psi等。
1、混淆矩阵
1.1 基本概念:混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示。具体评价指标有总体精度、制图精度、用户精度等,这些精度指标从不同的侧面反映了图像分类的精度。
1.2 混淆矩阵一级指标(最底层的):
真实值是positive,模型认为是positive的数量(True Positive=TP);
真实值是positive,模型认为是negative的数量(False Negative=FN):这就是统计学上的第一类错误(Type I Error);
真实值是negative,模型认为是positive的数量(False Positive=FP):这就是统计学上的第二类错误(Type II Error);
真实值是negative,模型认为是negative的数量(True Negative=TN)
1.3 二级指标
混淆矩阵里面统计的是个数,有时候面对大量的数据,光凭算个数,很难衡量模型的优劣。因此混淆矩阵在基本的统计结果上又延伸了如下4个指标,我称他们是二级指标(通过最底层指标加减乘除得到的):
准确率(Accuracy)—— 针对整个模型:对于给定的测试集,分类模型正确分类的样本数与总样本数之比;
精确率(Precision)、查准率:对于给定测试集的某一个类别,分类模型预测正确的比例,或者说:分类模型预测的正样本中有多少是真正的正样本;
召回率(Recall)、查全率:就是灵敏度(Sensitivity),对于给定测试集的某一个类别,样本中的正类有多少被分类模型预测正确
1.4 三级指标
F1 Score:在理想情况下,我们希望模型的精确率越高越好,同时召回率也越高越高,但是,现实情况往往事与愿违,在现实情况下,精确率和召回率像是坐在跷跷板上一样,往往出现一个值升高,另一个值降低,那么,有没有一个指标来综合考虑精确率和召回率了,这个指标就是F值。F1-socre是兼顾精确率和召回率的参数,之所以使用调和平均而不是算术平均,是因为在算术平均中,任何一方对数值增长的贡献相当,任何一方对数值下降的责任也相当;而调和平均在增长的时候会偏袒较小值,也会惩罚精确率和召回率相差巨大的极端情况,很好地兼顾了精确率和召回率。
2、P-R曲线、ROC曲线以及AUC值
2.1 P-R曲线
2.1.1 概念:P即精确率,R即召回率,反映了精确率与召回率之间的关系,横R纵P
2.1.2 如何理解P-R曲线(如图)
优劣对比:
①曲线越靠近右上方,性能越好。(例如上图黑色曲线)
②当一个曲线被另一个曲线完全包含了,则后者性能优于前者。(例如橘蓝曲线,橘色优于蓝 色)
③如果曲线发生交叉(黑橘曲线),判断依据:
根据曲线下方面积大小判断,面积更大的更优于面积小的。
根据平衡点F判断:平衡点是查准率与查重率相等时的点。F计算公式为F = 2 * P * R /( P +R ),F值越大,性能越好。
2.2 ROC曲线
2.2.1 ROC的概念:ROC全称是Receiver Operating Characteristic,也叫“受试者工作特征曲线”,它的横坐标是假阳性率false positive rate(FPR),纵坐标是真阳性率true positive rate(TPR)。对某个分类器而言,我们可以根据其在测试样本上的表现得到一个TPR和FPR点对。这样,此分类器就可以映射成ROC平面上的一个点。调整这个分类器分类时候使用的阈值,就可以得到一个经过(0, 0),(1, 1)的曲线,这就是此分类器的ROC曲线。
2.2.2 ROC曲线图:
2.2.3 为什么要使用ROC
评价标准很多,之所以还要使用ROC和AUC,是因为ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。下图是ROC曲线和Precision-Recall曲线的对比:
a图是原数据ROC曲线,b图是原数据P-R曲线。cd分别对应负样本增大10倍后的两个曲线图。可以看出,ROC曲线基本没有变化,但P-R曲线确剧烈震荡。因此,在面对正负样本数量不均衡的场景下,ROC曲线(AUC的值)会是一个更加稳定能反映模型好坏的指标。
2.2.4 如何理解Roc曲线(如图):
当ROC曲线接近于(1,0)点,表明模型泛化性能越好,接近对角线时,说明模型的预测结果为 随机预测结果.
优劣对比:
①当一个曲线被另一个曲线完全包含了,则后者性能优于前者。
②ROC曲线下方的面积(AUC)可以用来作为评估模型模型性能的指标.如当两个模型 的ROC曲线发生交叉,则很难说哪一个模型更好,这时候可以用AUC来作为一个比较 合理的判据
2.2.5 优缺点:
优点:
(1)兼顾正例和负例的权衡。因为TPR聚焦于正例,FPR聚焦于与负例,使其成为一个比较均衡的评估方法。
(2)ROC曲线选用的两个指标TPR、FPR都不依赖于具体的类别分布。(注意TPR用到的TP和FN同属P列,FPR用到的FP和TN同属N列,所以即使P或N的整体数量发生了改变,也不会影响到另一列。也就是说,即使正例与负例的比例发生了很大变化,ROC曲线也不会产生大的变化,而像Precision使用的TP和FP就分属两列,则易受类别分布改变的影响)
(3)如上面的例子,负例增加了10倍,ROC曲线没有改变,而PR曲线则变了很多。
缺点:
(1)上文提到ROC曲线的优点是不会随着类别分布的改变而改变,但这在某种程度上也是其缺点。因为负例N增加了很多,而曲线却没变,这等于产生了大量FP。像信息检索中如果主要关心正例的预测准确性的话,这就不可接受了。
(2)在类别不平衡的背景下,负例的数目众多致使FPR的增长不明显,导致ROC曲线呈现一个过分乐观的效果估计。
2.3 R-P曲线 vs ROC曲线
①ROC曲线和PR(Precision - Recall)曲线皆为类别不平衡问题中常用的评估方法,二者既有相同也有不同点。
②P-R曲线因为涉及到精确率precision计算,容易受到样本分布的影响。而ROC曲线本质上是正样本或者负样本召回率计算,不受样本分布的影响。
③ROC曲线主要应用于测试集中的样本分布的较为均匀的情况,且当测试集中的正负样本的分布发生明显变化的时,ROC曲线依然能够识别出较好的分类器。
④实际问题中,正负样本数量往往很不均衡,P-R曲线的变化就会非常大,而ROC曲线则能够更加稳定地反映模型本身的好坏。
⑥当正负样本比例失调时,ROC曲线变化不大,此时用P-R曲线更加能反映出分类器性能的好坏。
⑦ROC曲线兼顾正例和负例,适用于评估分类器的整体性能,而P-R曲线则更关注正例。
2.4 AUC值
AUC定义为ROC曲线下的面积,取值范围一般在0.5和1之间。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,AUC更大的分类器效果更好。AUC值是一个概率值,当你随机挑选一个正样本以及一个负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值。当然,AUC值越大,当前的分类算法越有可能将正样本排在负样本前面,即能够更好的分类。
AUC评价:
AUC = 1采用这个预测模型时,不管设定什么阈值都能得出完美预测。绝大多数预测的场合,不存在完美分类器。
0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。
AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测,因此不存在AUC < 0.5的情况。
(二)回归模型的评估
1、误差平方和(Sum of Squared Error,SSE):SSE越接近0,说明模型选择和拟合更好,但是无法评估模型在不同数据集上的表现。
2、均方误差(Mean Squared Error, MSE):预测值与真实值之差平方的期望值。MSE的值越小,说明预测模型描述实验数据具有越好的精确度。
3、均方根误差(Root Mean Square Error, RMSE):是MSE的平方根,为预测值和真实值差异的样本标准差。均⽅根误差为了说明样本的离散程度,拟合时,RMSE越小越好。均方根误差与标准差的研究对象不同,均方根误差用来衡量预测值与真实值之间的偏差,而标准差用于衡量一组数据的离散程度。
4、平均绝对误差(Mean Absolute Error,MAE):预测值与真实值之差的绝对值,反映了预测值与真实值误差的实际情况。
5、决定系数(R-sequare)
正常取值范围:[0-1],越接近1,表明模型的拟合效果越好;越接近0,表明模型拟合效果越差。只要增加更多的变量,无论增加的变量与输出变量是否存在关系,决定系数要么不变,要么增加。
6、校正决定系数:
其中,n为样本数量,p为特征数量。
如果增加更多无意义的变量,会下降;如果加入的特征变量显著,则会上升。
九、生成方法与判别方法
监督学习的任务就是学习一个模型,应用这个模型,对给定的输入预测相应的输出。这个模型的一般形式为决策函数:或者条件概率分布:
监督学习方法可以分为生成方法和判别方法。所学到的模型分别为生成模型与判别模型。
1、生成方法
由数据学习联合概率分布P(X,Y),然后求出条件概率P(Y|X)作为预测的模型即为生成模型:
这样的方法之所以称为生成方法,是因为模型表示了给定的输入X产生输出Y的生成关系。基本思想就是首先建立样本的联合概率密度模型,然后再得到后验概率,再利用它进行分类。
典型的生成模型:朴素贝叶斯、混合高斯、隐马尔可夫(HMM)
2、判别方法
由数据直接学习决策函数f(X),或者条件概率分布P(Y|X)作为预测的模型,即为判别模型。
判别方法关心的是对给定的输入X,应该预测怎样的输出Y。
典型的判别模型:感知机、k近邻(KNN)、决策树、逻辑回归、最大熵、SVM、Boosting、条件随机场(CRF) 、CNN
3、生成方法 vs 判别方法
①生成方法可以还原联合概率分布P(X|Y),而判别方法不能;
②生成方法的学习收敛速度更快,即当样本容易增加的时候,学到的模型可以更快地收敛于真实模型;
③当存在隐变量时,仍可以用生成方法学习,此时判别方法就不能用;
④判别方法直接学习地条件概率分布P(X|Y)或决策函数f(X),直接面对预测,往往学习的精确率更高
⑤由于直接学习的P(X|Y)或f(X),可以对数据进行各种程度上的抽象,定义特征并使用特征,因此可以简化学习问题。