模型调参选择和模型评价指标理解
1. 选择合适的参数
- 1. 调模参数:指算法中要通过模型训练得出的参数
- 2. 超参数:指人为可以指定的参数
- 3. 交叉验证(cross validation) : sklearn.model_selection.cross_val_score(要验证的参数,x_train,y_train,cv(指定几折参数))
交叉验证是验证选择最优单个超参数,在选择出最优超参数后,然后再将最优超参数带入模型进行训练
- 4. 网格搜索(Grid Search): sklearn.model_selection.GridSearchCV(模型,parameters,cv,scoring)
parameters:字典类型,像这样{"xx":[x,x,x],"xxx":[x,x,x]},代表模型需代入的参数
scoring : 指定的评价指标方式.有accuracy、
网格搜索是验证多个超参数的最优组合,使得模型在指定的评价指标中训练效果最好
2. 模型持久化
- 1. pickle: 持久化模型和持久化其它文件是一样的操作
2. sklearn.externals.joblib:
- 保存模型: joblib.dump(model,path)
- 加载模型: joblib.load(path)
3. 模型评价指标
- 1. 一个概念:
真正例(TP):预测值是1,真实值是1
反正例(FP):预测值是1,真实值是0
真反例(TN):预测值是0,真实值是0
假反例(FN):预测值是0,真实值是1
- 2. 几个名词:
- 召回率(Recall) :TP/(TP + FN) , 可理解为查全率, 即 正确预测的正例数 / 实际正例总数
- 精确率(Precision) :TP/(TP + FP) , 可理解为查准率, 即 正确预测的正例数 / 预测正例总数
- FPR : FP/(TN + FP) , 在所有实际值是0的样本中,被错误地预测为1的比例
- f1值 : 2 * (precision * recall) / (precision + recall) , 即 正确预测的正例数 / 实际正例总数
- 准确率(accuracy) : (TP+TN)/(TP+FN+FP+TN) , 即正确预测的正反例数 / 总数
- ROC曲线 : 逻辑回归里面,对于正负例的界定,通常会设一个阈值,大于阈值的为正类,小于阈值为负类。如果我们减小这个阀值,更多的样本会被识别为正类,提高正类的识别率,但同时也会使得更多的负类被错误识别为正类。为了直观表示这一现象,引入ROC。根据分类结果计算得到ROC空间中相应的点,连接这些点就形成ROC curve,横坐标为False Positive Rate(FPR假正率),纵坐标为True Positive Rate(TPR真正率)。一般情况下,这个曲线都应该处于(0,0)和(1,1)连线的上方
- PR曲线 : PR曲线的横坐标是精确率P,纵坐标是召回率R。评价标准和ROC一样,先看平滑不平滑(蓝线明显好些)。一般来说,在同一测试集,上面的比下面的好(绿线比红线好)。 当P和R的值接近时,F1值最大,此时画连接(0,0) 和(1,1)的线,线和PRC重合的地方的F1是这条线最大的F1(光滑的情况下),此时的F1对于PRC就好像AUC对于ROC一样。一个数字比一条线更方便调型。
3. sklearn.metrics常用的评价指标:
- accuracy_score
- precision_score
- recall_score
- f1_score
- precision_recall_curve (PR曲线)
- average_precision_score (ROC曲线)
4.模型评价中心思想
有时候模型没有单纯的谁比谁好(比如图二的蓝线和青线),所以选择模型还是要结合具体的使用场景。下面是两个场景:
- 地震的预测 对于地震的预测,我们希望的是RECALL非常高,也就是说每次地震我们都希望预测出来。这个时候我们可以牺牲PRECISION。情愿发出1000次警报,把10次地震都预测正确了,也不要预测100次对了8次漏了两次。
- 嫌疑人定罪 基于不错怪一个好人的原则,对于嫌疑人的定罪我们希望是非常准确的。即时有时候放过了一些罪犯(recall低),但也是值得的。
对于分类器来说,本质上是给一个概率,此时,我们再选择一个CUTOFF点(阀值),高于这个点的判正,低于的判负。那么这个点的选择就需要结合你的具体场景去选择。反过来,场景会决定训练模型时的标准,比如第一个场景中,我们就只看RECALL=99.9999%(地震全中)时的PRECISION,其他指标就变得没有了意义。
当正负样本数量差距不大的情况下,ROC和PR的趋势是差不多的,但是在正负样本分布极不均衡的情况下,PRC比ROC更能真实的反映出实际情况,因为此时ROC曲线看起来似乎很好,但是却在PR上效果一般。
- 3. 评价指标包括上述内容,但不仅限于上述内容。 在一些企业一些业务中, 会根据业务和行业需要制定适合自己业务的评价指标