【美团机器学习实践】问题建模

机器学习解决问题的通用流程,主要分为4大部分:
1.问题建模
2.特征工程
3.模型选择
4.模型融合

【美团机器学习实践】问题建模
问题建模包含三部分:评估指标、样本选择、交叉验证

1.1评估指标

评估指标用于反映模型效果,预测问题中,将预测结果和真实结果进行比较,为:
【美团机器学习实践】问题建模
实际项目中,线下和线上的评估指标尽可能变化趋势保持一致,线上成本明显高于线下实验成本,在线上实验较长时间并对效果进行可信度检验(如ttestt-test)才能得到结论,必然导致模型迭代进度缓慢。

1.1.1分类指标

1.精确率和召回率
多用于二分类问题
【美团机器学习实践】问题建模
【美团机器学习实践】问题建模
TPTP表示真实结果为正例,预测结果也是正例;FNFN表示真实结果为正例,预测结果为负例;FPFP表示真实结果为负例,预测结果为正例;TNTN表示真实结果为负例,预测结果也是负例。

P-R曲线

【美团机器学习实践】问题建模
PRP-R曲线越靠近右上角性能越好,曲线下面积为APAP分数(平均精确率分数),面积大小能够反映不同模型的性能指标,但是这个值计算方法不好使,设计综合考虑两者的指标。
F1F_1值是精确率和召回率的调和平均值:
【美团机器学习实践】问题建模
准确率(accuracyaccuracy)=TP+TNTP+FP+FN+TN\frac{TP+TN}{TP+FP+FN+TN}

错误率(errorrateerror rate)=FP+FNTP+FP+FN+TN\frac{FP+FN}{TP+FP+FN+TN}

精确率是一个二分类指标,而准确率常用于多分类,其计算公式为:

准确率(accuracyaccuracy)=1ni=1nI(f(xi)=yi)\frac{1}{n}\sum_{i=1}^{n} I(f(x_i)=y_i)

2.ROCROCAUCAUC
很多机器学习模型中,输出为预测概率,而对于预测概率设定阈值,当预测概率大于阈值时为正例,小于阈值时为负例,这会多出一个阈值这个位置参数,且会影响模型的泛化能力。
【美团机器学习实践】问题建模
假正率
【美团机器学习实践】问题建模
下图为ROC曲线示意图。
【美团机器学习实践】问题建模
上图为ROC曲线,纵坐标为真正率,横坐标为假正率,模型靠近左上角性能越好。

如何绘制?

将样本预测概率按照从大到小排序,以每个样本的预测概率为阈值,大于阈值的预测为正例,小于阈值到的预测为负例,再根据样本本身的真假计算FPR和TPR大小,将其作为坐标,绘制在图中,当所有样本绘制结束后,形成的曲线就是ROC曲线。
AUC(Area Under Roc Curve)即ROC曲线下的面积。面积大小表示正样本排在负样本的可能性大小,表示正确率越高;AUC考虑的是样本排序的质量,对于预测分数大小没有这么敏感。

3.对数损失

3.1熵
熵表示一件事情发生的不确定性或系统的不确定性,熵越大,不确定性就越大。
表达式为:

H(x)=p(x)log(p(x))H(x)=-p(x)\log(p(x))

p(x)=01p(x)=0或1时表示时间必定发生或者不发生,其熵为0;当p(x)=12p(x)=\frac{1}{2}时,其不确定性最大,熵为12\frac{1}{2},为最大值。
当某个模型作用在样本上对于其预测值为0-1之间的数时,假设有M个样本,每个样本的预测分数为pip_i,则这个模型的熵大小为ipilogpi\sum_{i} p_i*\log p_i
H(x)H(x)也叫做平均信息量,当不确定性越大时,其平均信息量就越大。当信息确定时,则得到的信息就确定了,信息量就少了。

3.2交叉熵
定义为:在真实分布下,若存在非真实分布,用非真实分布指定的策略消除系统中的不确定性所付出的成本。也就是非真实分布和真实分布之间的差异大小。我得理解就是像最大释然估计一样,用非真实的分布区拟合真实分布所付出的代价大小就是交叉熵。
公式如下:
H(pq)=p(x)log(q(x))H(p,q)=-p(x)\log(q(x))

上面的p(x)表示真实分布,q(x)表示非真实分布,H(p,q)H(p,q)表示两个分布的差异大小,非真实分布越接近真实分布,其交叉熵越低,该非真实分布也就越优。
二分类上:
例:y=1y=1的似然函数是对于y标签的预测y^,
y=0y=0的似然函数是对于y标签的预测1-y^;
最大化似然函数:p(x)logp(x)=ylog(y)+(1y)log(1y)\vec p(x)\log p(x)=y*\log(\vec y) +(1-y)*\log(1-\vec y)
交叉熵函数:(p(x)logp(x)=ylog(y)+(1y)log(1y))-(\vec p(x)\log p(x)=y*\log(\vec y) +(1-y)*\log(1-\vec y))
他们区别在于:交叉熵与最大似然函数相差一个负号
关系为最大似然函数=最小化交叉熵(相同)
也就是让非真实分布和真实分布之间的差异能够减小,这也是最大似然函数的宗旨。

3.3对数损失函数

lgloss是对预测概率的似然估计,其标准形式为:

logloss=logP(YX)logloss=-\log P(Y|X)

其中P(Y|x)表示在已知分布X下,Y发生概率大小。
对数损失函数最小化表示用样本的已知分布,求解导致这种分布的最佳模型参数(这和最大似然估计的思想基本相同,都是利用样本分布来求解模型参数)。

对数损失函数对应的二分类的计算公式为:

logloss=1Ni1N(yilogpi+(1yi)logpi)logloss =-\frac{1}{N} \sum_{i-1}{N} (y_i*\log p_i +(1-y_i)*\log p_i)

其中,y0,1,piy \in {0,1} ,p_i为第i个样本预测为1的概率。

在多分类任务中,其计算公式为:

logloss=1N1Ci=1Nj=1Cyijlogpijlogloss=-\frac{1}{N}*\frac{1}{C}*\sum_{i=1}^{N} \sum _{j=1}^{C} y_{ij}* \log p_{ij}
其中,N为样本数,C为类别数,yij=1y_{ij}=1表示第i个样本的类别是j,pijp_{ij}为第i个样本类别为j的概率。
与交叉熵思想一样,Logloss衡量的是预测概率分布和真实概率分布的差异性,取值越小越好。和AUC不同,logloss对预测概率敏感。

参考文献:
1.https://www.jianshu.com/p/d0c59c2470ba
2.《美团机器学习实践》
3.自己的笔记