1 模型的选择(选超参数)
交叉验证(Cross validation),用于防止模型过于复杂而引起的过拟合,有时亦称循环估计。
它是一种统计学上将数据样本切割成较小子集的实用方法,可以先在一个子集上做分析, 而其它子集则用来做后续对此分析的确认及验证。
一开始的子集被称为训练集。而其它的子集则被称为验证集或测试集。
交叉验证一般要尽量满足:
1)训练集的比例通常大于一半。比如:70%
2)训练集和测试集要均匀抽样。
验证集的交叉验证是用于模型选取过程中的,而不是模型训练过程中的!
如何在一些模型中选择一个最好的模型?(确定超参数)
1 多项式回归模型中 y = a0 + a1 x + a2 x^2 + a3 x^3 + ... + an x^n , 我们知道模型越复杂即n越高,拟合效果越好。但是未必是一个好的分类模型,因为模型过拟合了。那么如何确定m的值呢。
2 SVM中参数C的确定。
3 KNN算法中K的选取。
交叉验证就是很好的用于这些问题,这些模型中参数寻优的问题。
如何交叉验证?这里主要介绍K交叉验证。
交叉验证的基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set)。首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标。
撸代码举例:
上面整体上看,模型表现很差,换一种看一下效果!
scoring='accuracy' 一般来说准确率(accuracy)会用于判断分类(Classification)模型的好坏。
换KNN模型
scoring='mean_squared_error' 一般来说平均方差(Mean squared error)会用于判断回归(Regression)模型的好坏。
还有其他模型,请自行多试对比,力气活。选取合适的模型。主要思想就是采用多次数据分割的思想进行交叉验证,用每次分割的得分均值选取合适的模型,以便接下来训练。
下面是通过可视化了解模型的训练过程,判断模型是否过拟合,并进行参数选择。
2 模型过拟合-学习曲线
学习曲线(learning curve)可以帮我们判定我们的模型现在所处的状态。我们以样本数为横坐标,训练和交叉验证集上的错误率作为纵坐标。
查看模型是否过拟合: 随着样本量增加,准确率在训练集上得分比较高,交叉验证集上得分较小。
对过拟合而言,通常以下策略对结果优化是有用的:
1)重新清洗数据,导致过拟合的一个原因也有可能是数据不纯导致的。
2)增大数据量。调整训练数据占总数据的比例或者复制原有数据并加上随机噪声或者根据当前数据集估计数据分布参数,使用该分布产生更多数据等。
3)采用正则化方法。但是在机器学习中一般使用L2正则。
4)做一下feature selection,挑出较好的feature的subset来做training。
5)Early stopping便是一种迭代次数截断的方法来防止过拟合的方法,即在模型对训练数据集迭代收敛之前停止迭代来防止过拟合。对模型进行训练的过程即是对模型的参数进行学习更新的过程,这个参数学习的过程往往会用到一些迭代方法,如梯度下降(Gradient descent)学习算法。这样可以有效阻止过拟合的发生,因为过拟合本质上就是对自身特点过度地学习。
而对于欠拟合而言:
需要更多的feature
更复杂的模型来提高准确度
3 分类性能度量指标 ROC
ROC (Receiver Operating Characteristic) 曲线和 AUC (Area Under the Curve) 值常被用来评价一个二值分类器 (binary classifier) 的优劣。
ROC的全名叫做Receiver Operating Characteristic,其主要分析工具是一个画在二维平面上的曲线——ROC curve。平面的横坐标是false positive rate(FPR),纵坐标是true positive rate(TPR)。对某个分类器而言,我们可以根据其在测试样本上的表现得到一个TPR和FPR点对。
针对一个二分类问题,将实例分成正类(postive)或者负类(negative)。但是实际中分类时,会出现四种情况.
(1)若一个实例是正类并且被预测为正类,即为真正类(True Postive TP)
(2)若一个实例是正类,但是被预测成为负类,即为假负类(False Negative FN)
(3)若一个实例是负类,但是被预测成为正类,即为假正类(False Postive FP)
(4)若一个实例是负类,但是被预测成为负类,即为真负类(True Negative TN)
TPR:在所有实际为阳性的样本中,被正确地判断为阳性之比率。TPR=TP/(TP+FN)
FPR:在所有实际为阴性的样本中,被错误地判断为阳性之比率。FPR=FP/(FP+TN)
理想目标:TPR=1,FPR=0,即图中(0,1)点,故ROC曲线越靠拢(0,1)点,越偏离45度对角线越好,Sensitivity、Specificity越大效果越好。
4 模型评估的方法: ROC,AUC,RMSE等指标
精确度(Precision): P = TP/(TP+FP) ; 反映了被分类器 判定的正例中 真正的正例样本 的比重。
准确率(Accuracy)A = (TP + TN)/(P+N) = (TP + TN)/(TP + FN + FP + TN); 反映了分类器统对整个样本的判定能力——能将正的判定为正,负的判定为负 。
召回率(Recall),也称为 True Positive Rate:R = TP/(TP+FN) = 1 - FN/T; 反映了被正确判定的正例占总的正例的比重 。
F1值:F = 2 * 召回率 * 准确率 / (召回率+准确率);这就是传统上通常说的F1 measure。
参考
机器学习练习(三)——交叉验证Cross-validation https://blog.csdn.net/yueguizhilin/article/details/77711789
sklearn中的交叉验证与参数选择 https://blog.csdn.net/u014248127/article/details/78899195
交叉验证与学习曲线
https://blog.csdn.net/hyq3235356/article/details/78482437