阅读之前看这里:博主是正在学习数据分析的一员,博客记录的是在学习过程中一些总结,也希望和大家一起进步,在记录之时,未免存在很多疏漏和不全,如有问题,还请私聊博主指正。
博客地址:天阑之蓝的博客,学习过程中不免有困难和迷茫,希望大家都能在这学习的过程中肯定自己,超越自己,最终创造自己。
过拟合:指模型对于训练数据拟合过当的情况,反应到评估指标上,就是模型在训练集上表现很好,但在测试集和新数据集上的表现较差。
欠拟合:指的是模型在训练和预测时表现都不好的情况。
欠拟合的原因:
解决方法:
过拟合的原因:
过拟合的解决方案
在模型训练的过程中,需要降低 loss 以达到提高 accuracy 的目的。此时,使用正则化之类的方法直接将权值的大小加入到 loss 里,在训练的时候限制权值变大。训练过程需要降低整体的 loss,这时候,一方面能降低实际输出与样本之间的误差,也能降低权值大小。
正则化的主要作用是防止过拟合,对模型添加正则化项可以限制模型的复杂度,使得模型在复杂度和性能达到平衡。
L1正则化和L2正则化可以看做是损失函数的惩罚项。所谓『惩罚』是指对损失函数中的某些参数做一些限制。 L1正则化的模型建叫做Lasso回归,使用L2正则化的模型叫做Ridge回归(岭回归)。
L1正则化的表达如下,其中 α ∣ ∣ w ∣ ∣ 1 \alpha||w||_1 α∣∣w∣∣1为L1正则化项,L1正则化是指权值向量w 中各个元素的绝对值之和。
L2正则化项表达式如下,其中 α ∣ ∣ w ∣ ∣ 2 2 \alpha||w||_2^2 α∣∣w∣∣22为L2正则化项,L2正则化是指权值向量w 中各个元素的平方和然后再求平方根。
数据扩增
这是解决过拟合最有效的方法,只要给足够多的数据,让模型「看见」尽可能多的「例外情况」,它就会不断修正自己,从而得到更好的结果。
如何获取更多数据,可以有以下几个方法
Dropout
在训练时,每次随机(如50%概率)忽略隐层的某些节点;这样,我们相当于随机从 2n(n个神经元的网络) 个模型中采样选择模型
Early stopping
Early stopping便是一种迭代次数截断的方法来防止过拟合的方法,即在模型对训练数据集迭代收敛之前停止迭代来防止过拟合。
具体做法是,在每一个Epoch结束时计算validation data的accuracy,当accuracy不再提高时,就停止训练。当然我们并不会在accuracy一降低的时候就停止训练,因为可能经过这个Epoch后,accuracy降低了,但是随后的Epoch又让accuracy又上去了,所以不能根据一两次的连续降低就判断不再提高。一般的做法是,在训练的过程中,记录到目前为止最好的validation accuracy,当连续10次Epoch(或者更多次)没达到最佳accuracy时,则可以认为accuracy不再提高了。此时便可以停止迭代了(Early Stopping)。这种策略也称为“No-improvement-in-n”,n即Epoch的次数,可以根据实际情况取,如10、20、30……
参数:简单来说,模型参数就是模型内部的配置变量,可以用数据估计它的值。
具体来讲,模型参数有以下特征:
(1)进行模型预测时需要模型参数
(2)模型参数值可以定义模型功能
(3)模型参数用数据估计或数据学习得到
(4)模型参数一般不由实践者手动设置
(5)模型参数通常作为学习模型的一部分保存
通常使用优化算法估计模型参数,优化算法是对参数的可能值进行的一种有效搜索。
模型参数的一些例子包括:
(1)人工神经网络中的权重
(2)支持向量机中的支持向量
(3)线性回归或逻辑回归中的系数
超参数::模型超参数是模型外部的配置,其值不能从数据估计得到。
具体特征有:
(1)模型超参数常应用于估计模型参数的过程中
(2)模型超参数通常由实践者直接指定
(3)模型超参数通常可以使用启发式方法来设置
(4)模型超参数通常根据给定的预测建模问题而调整
怎样得到它的最优值: 对于给定的问题,我们无法知道模型超参数的最优值。但我们可以使用经验法则来探寻其最优值,或复制用于其他问题的值,也可以通过反复试验的方法。
模型超参数的一些例子包括:
(1)训练神经网络的学习速率
(2)支持向量机的C和sigma超参数
(2)k邻域中的k
二者的联系:
当针对特定问题调整机器学习算法时,例如在使用网格搜索或随机搜索时,你将调整模型或命令的超参数,以发现一个可以使模型预测最熟练的模型参数。许多模型中重要的参数无法直接从数据中估计得到。例如,在K近邻分类模型中…这种类型的模型参数被称为调整参数,因为没有可用的分析公式来为其计算一个合适的值。
两者的区别:
模型超参数通常被称为模型参数,这种叫法很容易让人产生误解。解决这个问题的一个很好的经验法则如下:如果你必须手动指定一个“模型参数”,那么它可能就是一个模型超参数。
总结:
总而言之,模型参数是从数据中自动估计的,而模型超参数是手动设置的,并用于估计模型参数的过程。
超参数调优的方法:——可阅读《百面机器学习》P43
在介绍这些概念之前,先来看一下混淆矩阵:
TP: True Positive,将正类预测类正类的样本数量(预测正确)
FN: False Negtive,将正类预测为负类的样本数量(type II error, 漏报)
FP: False Positive,将负类预测为正类的样本数量(type I error)
TN: True Negtive,将负类预测为负类的样本数量(预测正确)
准确度:准确度表示分类正确的样本数所占比例
精确度、精度:该概念是针对“预测结果”而言的。表示预测为正类的样本中有多少是真的正样本
召回率:该概念是针对“原始样本”而言的。表示样本中的正例有多少被分类正确了
ROC曲线:在介绍ROC曲线之前,还需要引入其他概念:
1.敏感性Sensitivity、召回率Recall、hit rate、TPR(True Positive Rate):表示样本中正类被分类正确的比例
T P R = T P T P + F N T P R = T P T P + F N T P R = T P + F N T P TPR=TPTP+FNTPR = \frac{TP}{TP+FN}TPR=TP+FNTP TPR=TPTP+FNTPR=TP+FNTPTPR=TP+FNTP
2.假阴性率FNR(False Negative Rate):F N R = F N T P + F N = 1 − T P R F N R = F N T P + F N = 1 − T P R F N R = T P + F N F N = 1 − T P R FNR=FNTP+FN=1−TPRFNR =\frac{FN}{TP+FN} =1-TPRFNR=TP+FNFN=1−TPR FNR=FNTP+FN=1−TPRFNR=TP+FNFN=1−TPRFNR=TP+FNFN=1−TPR
3.假阳性率FPR(False Positive Rate):F P R = F P F P + T N = 1 − T N R F P R = F P F P + T N = 1 − T N R F P R = F P + T N F P = 1 − T N R FPR=FPFP+TN=1−TNRFPR = \frac{FP}{FP+TN} = 1-TNRFPR=FP+TNFP=1−TNR FPR=FPFP+TN=1−TNRFPR=FP+TNFP=1−TNRFPR=FP+TNFP=1−TNR
4.特异性specificity、真阴性率TNR(True Negative Rate):表示样本中负类被分类正确的比例T N R = T N F P + T N T N R = T N F P + T N T N R = F P + T N T N TNR=TNFP+TNTNR = \frac {TN}{FP+TN}TNR=FP+TNTN TNR=TNFP+TNTNR=FP+TNTNTNR=FP+TNTN
ROC(Receiver Operating Characteristic Curve)接受者特征曲线,是反应敏感性和特异性连续变量的综合指标。
ROC曲线图的横坐标是FPR,表示预测为正但实际为负的样本占所有负例样本的比例,纵坐标是TPR,,表示预测正类中实际负类就越多,纵坐标为TPR,表示预测为正且实际为正的样本占所有正例样本的比例,其值越大,表示预测正类中实际正类就越多。所以理想情况下,TPR应该越接近1越好,FPR越接近0越好。
经过上面的描述我们知道,ROC曲线的横坐标和纵坐标其实是没有相关性的,所以不能把ROC曲线当做一个函数曲线来分析,应该把ROC曲线看成无数个点,每个点都代表一个分类器,其横纵坐标表征了这个分类器的性能。为了更好的理解ROC曲线,我们先引入ROC空间,如下图所示。
AUC值:表示ROC曲线下的面积,即ROC曲线与x轴、(1,0)-(1,1)围绕的面积
参考:准确度、精确度、召回率、ROC曲线、AUC值
参考:
《百面机器学习》
—————————————————————————————————————————————————
博主码字不易,大家关注点个赞转发再走呗 ,您的三连是激发我创作的源动力^ - ^