机器学习之模型评估(一)
为什么要评估模型
目的是找到最有效的模型。模型开始的时候分布都是一定的,但是随着时间的不断推移,数据的分布会发生一定的变化,这种现象称为分布漂移。而验证指标就是对数据变化的一种模型性能跟踪,当模型的性能变化到一定程度,就要对模型进行重新训练了。
怎么检验和评估模型
机器学习分为原始设计阶段和应用阶段,原始设计阶段是在历史数据上训练一个适合解决目标任务的一个或者是多个机器学习模型,并且进行模型的验证和离线的评估,选择一个最优的模型作为线上模型。
应用模型阶段是模型上线投入生产,使用最新的在线数据对模型进行在线的评估。在线评估和离线评估,评价方式并不一样,常见的是A/B testing,是一种统计假设检验方法。对离线评估采用的是偏经验误差的方法。线上评估采用业务指标,例如使用效率,用户点击率。
评估过程中调优
对模型训练就是对模型参数进行更新的过程,还有模型的超参数,逻辑回归中模型的特征权重就是模型参数,选择模型特征的数目就是超参数,超参数的取值可以根据网格搜索(grid search)、随机搜索(random search)和启发式搜索(smart search)进行选择最优值。
网格搜索(grid search):将超参数的取值范围画成几个小格子,然后对每个小格子所对应的的值进行评估,然后选择评估效果最好的小格子对应的数。
随机搜索(random search):网格搜索如果格子过多,会增加计算量,所以随机选择格子,然后在其中找到最佳的。
离线模型校验模型方法包括,训练集-验证集二划分(hold-out validation)、交叉验证(Cross-validation),还有重采样极技术(boss他strapping 与Jackknife),可以一定程度减少过拟合。
评估指标
可以把评估指标想象成一个尺子,不同的模型要用不同的尺子进行测量。,对于分类(classfication)、回归(regression)、排序(ranking)、聚类(clustering)、推荐(recommendation),精确度,召回率等。
错误率(error rate)= a个样本分类错误/.m个样本
精度(accuracy)= 1 - 错误率
误差(error):输出的预测值和真实值之间的差异
训练误差(training error):经验误差,在训练集上的误差
泛化误差(generalization error):学习器在新样本的误差
二分类中的评价指标
真正例(True Positive,TP):真实类别为正,预测为正
假正例(Flase Positive,FP):真实类别为负,预测为正
假负例(Flase Negative,FP):真实为正,预测为负
真负例(True Negative,TN):真实为负,预测为负
建立混淆矩阵(Confusion Matrix)
ROC AUC:ROC曲线和AUC常被用来评价一个二分类的优劣。如果一个学习器的ROC曲线呗另一个包含,则后者的性能要比前者好。如果有交叉,车需要判断ROC曲线的面积,即AUC。
ROC:纵轴:真正比例TPR;横轴:假正比例FPR
1.先看图中的四个点和对角线:
第一个点,(0,1),即 FPR=0, TPR=1,这意味着 FN(false negative)=0,并且FP(false positive)=0。这意味着分类器很完美,因为它将所有的样本都正确分类。
第二个点,(1,0),即 FPR=1,TPR=0,这个分类器是最糟糕的,因为它成功避开了所有的正确答案。
第三个点,(0,0),即 FPR=TPR=0,即 FP(false positive)=TP(true positive)=0,此时分类器将所有的样本都预测为负样本(negative)。
第四个点(1,1),分类器将所有的样本都预测为正样本。
对角线上的点表示分类器将一半的样本猜测为正样本,另外一半的样本猜测为负样本。
因此,ROC 曲线越接近左上角,分类器的性能越好。
2.如何画ROC曲线
1)一次将Score从小到大排列
2)将每个Score设置为阈值,可以得到20组TPR和FPR,大于设置的阈值为正样本,反之为负样本。
3)当阈值设为1时,所有样本都是负样本,则(0,0)。当阈值设为0时,所有样本都是正样本,则(1,1)
画完后的图为:
3.AUC:
是 ROC 曲线下的面积,它是一个数值,当仅仅看 ROC 曲线分辨不出哪个分类器的效果更好时,用这个数值来判断。
The AUC value is equivalent to the probability that a randomly chosen positive example is ranked higher than a randomly chosen negative example.
从上面定义可知,意思是随机挑选一个正样本和一个负样本,当前分类算法得到的 Score 将这个正样本排在负样本前面的概率就是 AUC 值。AUC 值是一个概率值,AUC 值越大,分类算法越好。