创建了一个微信交流群,想加入的朋友+WeChat:SODAS_MUSIC_STUDIO
1、经验误差与过拟合
①误差
- 错误率:分类错误样本数占总样本数的比例,即在m个样本中有a个错误样本,则错误率为
;
- 精度:就是1-错误率,即1-E;
- 误差:实际预测输出与样本实际输出之间的差异;
- 训练误差(又称,经验误差):就是在训练集上的误差;
- 测试误差:就是在测试集上计算得到的误差;反映了模型对于未见过的数据的预测能力。由于测试数据集是有限的,测试误差无法完全代表模型的性能。
PS1-1:作为泛化误差的近似
- 泛化误差:指模型在所有可能数据上的平均误差,即模型在无穷大数据集上的误差近似。衡量了模型对未知数据的预测能力分析,泛化误差就是想要获得一个泛化误差尽量小的学习器。
PS1-2:泛化误差是一个理想化的概念,因为它考虑了所有可能的数据。
②拟合
- 说的就是某个曲线能否合适的描述某些样本,并且具有较强的泛化能力。
- 过拟合:就是训练样本学的太好了,将训练样本本身的特点当作了一般性质(不考虑数据噪声),使泛化性能变低。
PS1-3:就是模型过于复杂,导致训练误差低,测试误差高
- 欠拟合:就是对训练样本的学习不足,没有找到其一般规律,甚至没有找到任何规律。欠拟合易于克服,但是过拟合的处理比较困难。
PS1-4:就是模型简单,训练误差和测试误差都高
- 如何解决过拟合和欠拟合问题
过拟合 欠拟合 增加训练样本数量
增加新特性
正则化L1、L2
增加模型复杂度
降维
减少正则化系数
集成学习方法
决策树采用拓展分支
减少模型复杂度
神经网络采用增加训练轮数
丢弃法Dropout
2、评估方法
现实任务中往往会对学习器的泛化性能、时间开销、存储开销、可解释性等方面的因素进行评估并做出选择;我们假设测试集是从样本真实分布中独立采样获得,将测试集上的“测试误差”作为泛化误差的近似,所以测试集要和训练集中的样本尽量互斥。
①留出法
- 将训练集D划分为互斥的集合,D = S ∪ T ,S ∩ T = ∅;
PS2-1:S为训练集,T为测试集
- 训练/测试集划分尽可能保持数据分布的一致性。所以,若是数据集为顺序的,则应该随机打乱以后,再进行S和T的分割。
- 单次使用留出法得到的估计结果不够稳定可靠,在使用留出法时,一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。
PS2-2:测试样本和训练样本按照3:7的比例,在测试样本中有30%的样本被错误分类,则精度为1~30%
②交叉验证法(广泛使用)
将数据集D划分为K个大小相似的互斥子集,即 ,
,每个子集Di都尽可能保持数据分布的一致性,即从D中通过分层采样得到。每次k-1个子集作为训练集,余下的作为测试集,最终返回k次训练的均值。
- ”k折交叉验证(别称,k倍交叉验证)“:最常用的就是10折交叉验证,为了减少因为样本划分不同而引入的差别,k折交叉验证通常随机使用不同的划分重复p次,最终返回p次k折交叉验证的均值,常用”10次10折交叉验证“。
- 留一法:是对k折交叉验证法的一个特例,假设有m个样本,若令m=k,这就是留一法,即每一个子集都只有一个样本。留一法不受随机样本划分方式的影响。当数据集比较大的时候,不适合使用留一法。这也是NFL定理的体现。
③自助法
- 因为希望评估的是用D训练的模型,使用留出法和交叉验证法,都保留一部分样本用于测试,这样就让实际评估的模型所使用的训练集比D小,这样必然会引入因训练样本规模不同而产生的估计偏差。自助法是一个比较高效的实验估计方法。但是用的比较少
- 以自助采样法为基础,对数据集D有放回采样m次得到训练集
,
用做测试集。
PS2-3:有的地方写
,其中" / "为集合减法。
每个样本被采样的概率为,不被采样到的概率为
,m次都不被采样到的概率是:
从此数据可以看出,对于样本中大概有36.8%数据在整个采样过程中是一次都没有被采样到的,剩下的63.2%的数据是至少被采样到一次,即代表的是会被放到数据集中去。这样虽然解决了数据样本规模的问题,但是
的样本分布与D的样本分布是不一样的。这样如此会引起新的偏差。这也是其缺点。在数据量足够时,留出法和交叉验证法更为常用。
③调参与最终模型
- 调参:就是对算法参数调整设定。其中参数不同,性能会有差别,很多的参数都是实数域,所以无法尝试所有的参数,通常选择范围步长,如:[0,0.2]范围以0.05为步长,实际上评估的参数就是5个:0、0.05、0.1、0.15、0.2;
- 当模型选择完,学习算法和参数配置已经选定,此时应该用数据集D重新训练模型,这个模型在训练过程中使用了所有m个样本,这个就是最后提交的模型
3、性能度量
- 性能度量:是衡量模型泛化能力的评价标准,反应了任务需求;使用不同的性能度量往往会导致不同的评判结果。
回归任务常用"均方误差"作为性能度量。
分类任务常用"精度"、"错误率"两种性能度量。
- 错误率和精度
错误率:m个样本,有多少次和我的实际不符合。
精度:1-错误率,就是有多少次和我的实际符合。
PS3-1:
是计数符号,相当于一个布尔发生器,当括号内条件满足时输出1,不满足时输出0
- 查全率、查准率与F1
- 在信息检索、Web搜索等场景中经常需要衡量正例被预测出来的比率或者预测出来的正例中确定比率,此时查准率和查全率比错误率和精度更合适。
- 通过统计真实标记和预测结果的组合可以得到"混淆矩阵":
- 查准率:在预测结果中,预测正例对所占所有预测正例中的比例(竖着看)
- 查全率:在真实情况中,预测正例对所占所有真实情况中的比例(横着看)
- TP+FP+FN+TN=样本总数;TP+FP=预测的正例集合;TP+FN=S真正的正例集合
- 查准率和查全率是一对矛盾度量,一般,查准率高时,查全率低;反之亦然。通常只有在一些简单任务中,才可能使查全率和查准率都很高。
PS3-2:在预测癌症患者时,优先考虑查全率,因为如果有一个人漏判了便很严重,所以我们更看重:真实患有癌症的情况下,模型预测正确的概率。
- "P-R"曲线:将学习器认为”最有可能“是正例的样本排在前面,”最不可能“的样例排在最后,按照这个顺序逐个把样本作为正例进行预测,计算查全率R作为横轴,查准率P作为纵轴
如图,若是一个学习器的P-R曲线被另一个学习器的曲线完全包住,则可断言后者性能优于前者。
PS3-3:思考:P和R怎么绘制成曲线的,对应的关系是什么?答:采用阈值搭建P与R的桥梁构建函数,不同的阈值对应着不同的P值和R值关系。混淆矩阵的预测结果都是不明确的结果,就会有对应的概率,比如对于样本1 实际为正 预测为正的概率为0.9 对于样本2 实际为负 预计为正的概率为0.5 这个概率就可以作为阈值。
平衡点:当俩个学习器P-R曲线交叉时,可以用“查准率=查全率”时的取值BEP进行度量,学习器C的BEP 0.64,学习器A优于学习器B
F1度量(常用):其实这个度量就是对查全率和查准率做了一个平均的方法。
PS3-4:数学中有算数平均:
,有几何平均
(可以回想一下基本不等式),这里使用的是调和平均的方式
。
F1度量并不是在所有情况下都是越大越好,但其值较高通常意味着模型在精确度和覆盖度上取得了更好的平衡。
- β > 0度量了查全率对查准率的相对重要性
- β = 1退化为标准F1,说明了F1指标是即不偏向查全率也不偏向查准率;
- β > 1时查全率(R)影响更大,根据公式和图片细细理解;
- β < 1时查准率(P)影响更大,根据公式和图片细细理解;
上述只是在一次实验中计算的P、R等。当进行多次实验时,引出下面的方法:
- “宏查准率”(macro-P) “宏查全率”(macro-R) “宏F1”(macro-F1)先计算每一次的P和R,然后在求平均的macro-P和macro-R并求得macro-F1【就是先分别计算然后再进行求取平均值】
- “微查准率”(micro-P) “微查全率”(micro-R) “微F 1”(micro-F1)将各个混淆矩阵对应的元素进行平均,再计算micro-F1 【就是先平均再计算】
- ROC与AUC【常评价二值分类器】
ROC曲线:即受试者工作特征曲线,又称感受性曲线,它通过展示不同阈值下模型的假阳性率(FPR)和真正率(TPR)之间的关系,帮助理解模型在分类任务中的表现。
- 很多学习器是为测试样本产生一个实值或概率预测,然后与分类阈值比较,大于阈值则为正类,否则为反类。可以将样本排序,分类过程就是以 “截断点” 将样本分为两个部门,前一部分为正例,后一部分为反例
- 更重视查准率,选择比较靠前的截断点,比较重视查全率,选择比较靠后的截断点,因此,排序本身的质量好坏,体现了综合考虑学习器在不同任务下的“期望泛化性能”的好坏,ROC曲线是从这个角度来研究学习器泛化性能的有力工具
- 在不同的阈值下可以得到不同的TPR和FPR值,即可以得到一系列的点,将这些点在图中绘制出来,并依次连接起来就得到了ROC曲线。阈值取值越多,ROC曲线越平滑。
- ROC曲线越靠近图的左上角,说明模型的分类性能越好。
- ROC曲线越接近对角线,模型的分类效果越差,因为对角线代表随机猜测的分类结果。
- 如果模型的ROC曲线完全位于对角线的左上方,则表示模型能够完美区分正负样本,此时AUC为1
AUC:是ROC曲线下的面积,用于衡量模型的整体性能。取值范围:AUC的取值范围是0到1。
用梯形面积公式导出【结合下面ROC曲线(b)图理解】,AUC考虑的是样本预测的排序质量,它与排序误差有紧密联系。
- AUC越接近1,说明模型的分类能力越强。
- AUC=1表示完美分类,模型的性能非常好。
- AUC=0.5表示模型的性能与随机猜测相当。
- AUC<0.5表示模型的预测效果不如随机猜测,可能存在问题。
- “受试者工作特征” ROC: ROC曲线的纵轴是“真正例率”(TPR),横轴是“假正例率”(FPR)【注意与查准率和查全率进行区分】,就是
PS3-5:理解何为真正例率,就是预测结果中的真正例(TP)比上所有真实的正例(TP+FN);何为假正例率,预测结果中的加正例(FP)比上所有真实的假例(TN+FP)
- 将分类阈值依次设为每个样例的预测值,即依次将每个样例划分为正例;与PR曲线类似,若一个学习器的ROC曲线被另一个ROC曲线完全“包住”,则可断言后者的性能优于前者;若两个曲线交叉,如果一定要比较,通过AUC的大小进行比较。
- 给定
个正例和
个反例,令
和
分别表示正反例集合,则排序"损失"定义为:
Rank loss衡量的是分类器输出的预测值与实际标签的一致性。在二分类问题中,Rank loss通常指的是正样本的预测值低于负样本预测值的情况。理想情况下,我们希望正样本的预测值高于负样本。而且【对应上图ab空白部分为
】
PS3-6:【个人理解】这个公式的意思就是说,若是正例的预测值小于反例的预测值,则+1;若是正例的预测值等于反例的预测值,则+
。还是难以理解,这里注意该式子计算的是损失,假设在一个效果比较好的学习器中,一个正例被预测为正例的概率是比较大的,若是有一个反例,被预测为正例的概率应该是比较小的。若是存在一个正例A 预测为正例的概率为0.8,存在一个反例B 预测为正例的概率为0.9。这种情况就是把一个负例预测为一个正例比例较高的值所以这个时候就要给出一个损失值。
- 代价敏感错误率与代价曲线
- 代价敏感错误率:指在分类问题中,不同类别的错误(如将正类误判为负类和将负类误判为正类)分类所造成的代价不同。考虑不同类别的错误分类所造成的不同代价(或者称为权重),并据此调整模型以最小化总体代价的一种评估指标。
- 代价曲线则是一个用于评估代价敏感学习算法性能的工具。它通过将不同分类阈值下的总代价绘制成图表,以直观地展示不同阈值对模型性能的影响。ROC曲线不能直接反映出学习器的期望总体代价,代价曲线可以。
以二分类问题为例,设置一个二分类代价矩阵:
表示将第 i 类样本预测为第 j 类样本的代价
一般而言,若是;
若是将第0类判别为第一类造成的损失更大,则;
损失程度相差越大,与
的值差别就越大
令和
分别代表样例集D的正例子集和反例子集,则 “敏感代价”(cost-sensitive) 错误率为:
PS3-7:这个公式的意思就是在
中,判断错的个数乘以对应的
,在
中,判断错的个数乘以对应的
- “非均等代价”:指在某些情境下,不同类型的错误或决策所带来的损失或代价是不同的。例如,在医疗诊断中,将患有疾病的患者误判为健康(假阴性)的代价可能远高于将健康人误判为患病(假阳性)的代价。因为假阴性可能导致患者错过最佳治疗时机,而假阳性可能只是带来一些额外的检查费用和心理压力。
在非均等代价下,ROC曲线不能直接反映出学习器的期望总体代价,而 “代价曲线” 则可达到这个目的。代价曲线图的横轴是取值为[0,1]的正例概率代价
若p是样例为正例的概率;纵轴是取值为[0,1]的归一化代价【其中,FNR=1-TPR是假反例率,FPR是假正例率】
PS3-8:以上两个公式的分母做了归一化处理。归一化的原因:
①便于比较不同模型。不同模型数据情况不同,归一化分母可将代价放在统一尺度,公平比较它们的代价曲线;
②消除数据影响。数据规模和分布会干扰代价计算,归一化分母可让代价计算少受这些因素干扰,更关注模型性能;
③符合习惯表示。在概率和统计场景中,归一化符合习惯,能让代价曲线取值范围更符合直观理解,方便决策。
ROC每个点,对应代价平面上一条线。
PS3-9:为什么是一条直线,看上两式:横轴为
等于的主要变量为
(所以可以理解为
就是横坐标);而纵坐标为
,分母是归一化,横坐标为"
"。构成的是线性关系,所以是直线。
例如,ROC上(TPR,FPR),计算出FNR=1-TPR,在代价平面上绘制一条从(0,FPR)到(1,FNR)的线段,面积则为该条件下期望的总体代价。所有线段下界面积,所有条件下学习器的期望总体代价。下图的每一条直线的阈值都不相同。