本套技术专栏是作者(秦凯新)平时工作的总结和升华,通过从真实商业环境抽取案例进行总结和分享,并给出商业应用的调优建议和集群环境容量规划等内容,请持续关注本套博客。版权声明:禁止转载,欢迎学习。QQ邮箱地址:[email protected],如有任何商业交流,可随时联系
刚开始写作本文时,并没有感觉太难,后面在写特征工程方面时,发现很多指标问题,不得开始挖掘统计指标,居然发现ROC我之前理解有误,真是血中带泪的进行反复求证,为自己点赞
1 统计学指标(考核指标)
1.1 平均值
平均值的理论:所有数据之和除以数据点的个数,以此表示数据集的平均大小。其数学定义为
1.2 方差
方差理论:为了表示数据集中数据点的离散程度,也即偏离平均值的离散程度。其数学定义为
1.3 标准差
在数学上定义为方差的平方根:
1.4 标准差与方差的区别?
举个例子:一个班级里有60个学生,平均成绩是70分,标准差是9,方差是81,成绩服从正态分布,那么我们通过方差不能直观的确定班级学生与均值到底偏离了多少分,通过标准差我们就很直观的得到学生成绩分布在[61,79]范围的概率为0.6826,即约等于下图中的34.2%*2 。
1.5 贝赛尔修正
- 存在一个值为N的分母,其作用为将计算得到的累积偏差进行平均,从而消除数据集大小对计算数据离散程度所产生的影响。不过,使用N所计算得到的方差及标准差只能用来表示该数据集本身(population)的离散程度;
- 如果数据集是某个更大的研究对象的样本(sample),那么在计算该研究对象的离散程度时,就需要对上述方差公式和标准差公式进行贝塞尔修正,将N替换为N-1:
贝塞尔修正后的方差公式:
贝塞尔修正后的标准差公式:
1.6 众数
众数是指在一组数据中,出现次数最多的数。例如:1, 1, 3 中出现次数最多的数为 1,则众数为 1。
1.7 中位数
中位数是指在一组数据中,按数值大小排序后处于中间位置的数。例如:1, 5, 3 排序后为 1, 3, 5,则其中位数为 3。特别地,当数的个数 N 为偶数时,中位数取位置居中的两个数 (N/2 和 N/2+1) 的平均值,例如:1, 2, 3, 4,中位数为 (2+3)/2 = 2.5。
1.8 欧式距离
1.9 曼哈顿距离
图中红线代表曼哈顿距离,绿色代表欧氏距离,也就是直线距离,而蓝色和黄色代表等价的曼哈顿距离。曼哈顿距离又称为出租车距离,因为这是出租车在街道行驶所走的实际距离的长度。
1.10 余弦距离
- 如果你的数据集有很多特征,但是如果任意一对个体之间的欧氏距离都相等,那么你就没有办法通过欧氏距离进行比较了!
- 曼哈顿距离在某些情况下具有更好的稳定性,如果数据集中某些特征值很大,用曼哈顿距离的话,这些特征会 掩盖其他特征间的邻近关系。
- 余弦距离,它适用于特征向量很多的情况,但是它丢弃了向量长度所包含的在某些场景下可能会很有用的一些信息。
1.10 同比和环比
- 同比:与历史同时期比较,就是与不同年份的同一时期作比较,例如2017年11月份与2018年11月份相比,叫同比。
- 环比:与上一统计段比较就是与前一个相邻的时期作比较,例如2018年7月份与2018年6月份相比较,叫环比
- 举例如下:某网吧2018年9月份在装机规模不变的情况下,上座率环比下降为25%,同比上升10%。那么请问它的经营业绩下滑了吗?
- 答案是提升了了,虽然环比上升了,但是考虑到9月份恰好是开学时间,环比下降很正常。而同比表明较去年的确有10%的上升。
1.11信息熵
信息熵是消除不确定性所需信息量的度量,也即未知事件可能含有的信息量。一个事件或一个系统,准确的说是一个随机变量,它有着一定的不确定性。
- 例如,“除东道主俄罗斯外,哪31个国家能进军2018年俄罗斯世界杯决赛圈”,这个随机变量的不确定性很高,要消除这个不确定性,就需要引入很多的信息,这些很多信息的度量就用“信息熵”表达。需要引入消除不确定性的信息量越多,则信息熵越高,反之则越低。
- 例如“中国男足进军2018年俄罗斯世界杯决赛圈”,这个因为确定性很高,几乎不需要引入信息,因此信息熵很低。
最后给出总结:
- 如果信息中有N种情况,每种出现概率相同,则N越大,信息熵越大。
- 如果信息中有N中情况,其中一种情况概率非常大,则总体信息熵就越小。一般为<0.1,说明信息越明确。
- 如果信息中只有两种情况,概率为1/2,则信息熵为1。
结论:
- 信息越确定,越单一,则信息熵越小。
- 信息越不确定,越混乱,信息熵越大。
2 模型评估通用指标(考核指标)
2.1 RMSE(Root Mean Square Error)均方根误差
衡量观测值与真实值之间的偏差。常用来作为机器学习模型预测结果衡量的标准。
2.2 MSE(Mean Square Error)均方误差
MSE是真实值与预测值的差值的平方然后求和平均。通过平方的形式便于求导,所以常被用作线性回归的损失函数。
2.3 MAE(Mean Absolute Error)平方绝对误差
是绝对误差的平均值,可以更好地反映预测值误差的实际情况。
2.4 SD(Standard Deviation)标准差
方差的算术平均根,用于衡量一组数值的离散程度。
3 ML 分类模型评估指标
样本分为:正类样本和负类样本。
-
TP:被分类器正确分类的正类样本数。
-
TN: 被分类器正确分类的负类样本数。
-
FP: 被分类器错误分类的正类样本数。(本来是负,被预测为正) ---------->正
-
FN: 被分类器错误分类的负类样本数。 (本来是正, 被预测为负) ---------->负
3.1 正确率(Accaracy ACC)
总样本数=TP+TN+FP+FN
ACC=(TP+TN)/(总样本数)
该评价指标主要针对分类均匀的数据集。但现实场景中,均为不平衡的交易。如信用卡欺骗交易。若仅存在1%的欺诈。
总结 :那么即使全部预测正确,那么ACC也为99%。这是不合理,因为不均衡数据,所以根本确定不了真正欺诈的问题,挖掘不到实际的欺诈的细节,反而被认为是非常高的准确度,其实是全部预测错了。
3.2 准确率(Precision 查准率)
Precision = TP / (TP+ FP) 准确率,表示模型预测为正样本的样本中真正为正的比例
比如二分类问题为预测癌症的发生,显然在现实世界中,癌症人数在所有人数中的占比通常只是0.5%左右,即正负样本比例为1:200左右,此时一个分类器如果使用Accuracy作为评估指标,则分类器无需花太多功夫,分类器只用把样本全部清一色预测为正常,那么Accuracy也能达到99.5%的准确率,如此高的准确率,但却毫无任何意义,无法应用到实处,泛化能力极差。
- 所以样本失衡的情况下,Accuracy不再适用,通常使用Precision
3.3 召回率(查全率)
Recall = TP /(TP + FN) 召回率,表示模型准确预测为正样本的数量占所有正样本数量的比例
3.4 F1值
F1 = 2PR /(P+ R) F1,是一个综合指标,是Precision和Recall的调和平均数,因为在一般情况下,Precision和Recall是两个互补关系的指标,鱼和熊掌不可兼得,顾通过F测度来综合进行评估。F1越大,分类器效果越好。
Accaracy和Precision作用相差不大,都是值越大,分类器效果越好,但是有前提,前提就是样本是均衡的。
如果样本严重失衡了,Accuracy不再适用,只能使用Precision,举个简单的例子。
3.5 ROC(Receiver Operating Characteristic)
首先,解释几个二分类问题中常用的概念:True Positive, False Positive, True Negative, False Negative。它们是根据真实类别与预测类别的组合来区分的。
- TP:预测类别是P(正例),真实类别也是P(该值是变化的,并非一成不变,就是真正正例预测对的值)
- FP:预测类别是P,真实类别是N
- TN:预测类别是N,真实类别也是N (该值是变化的,并非一成不变,就是真正负例预测对的值)
- FN:预测类别是N,真实类别是P
假设采用逻辑回归分类器,其给出针对每个实例为正类的概率,那么通过设定一个阈值如0.6,概率大于等于0.6的为正类,小于0.6的为负类。对应的就可以算出一组(FPR,TPR),在平面中得到对应坐标点。随着阈值的逐渐减小,越来越多的实例被划分为正类,但是这些正类中同样也掺杂着真正的负实例,即TPR和FPR会同时增大。阈值最大时,对应坐标点为(0,0),阈值最小时,对应坐标点(1,1)。
具体AUC ROC 可以参考本博客 :https://www.cnblogs.com/peizhe123/p/5081559.html
具体AUC ROC 可以参考本博客 :https://blog.csdn.net/ybdesire/article/details/51999995
(0,0)表示:FPR=0,TPR=0。没有负样本预测错误(也就是负样本全部预测正确),正样本全部预测错误。这说明把全部样本都预测为了负样本。
(1,1)表示:FPR=1,TPR=1。负样本全部预测错误,正样本全部预测正确。这说明把全部样本都预测为了正样本。
(0,1)表示:FPR=0,TPR=1。负样本全部预测正确,正样本全部预测正确。这个模型很完美。
(1,0) 表示:FPR=1,TPR=0。负样本全部预测错误,正样本全部预测错误。这个模型太烂了。
复制代码
现举例讲解ROC计算步骤如下:
y = np.array([1, 1, 2, 2])
scores = np.array([0.1, 0.4, 0.35, 0.8])
fpr, tpr, thresholds = metrics.roc_curve(y, scores, pos_label=2)
复制代码
- 第一步:对score,将数据排序
-
第二步:截断点依次取值为0.1,0.35,0.4,0.8时,计算TPR和FPR的结果。
-
第三步:假设截断点为0.1
scores = [0.1, 0.4, 0.35, 0.8] y_true = [0, 0, 1, 1] y_pred = [1, 1, 1, 1] 复制代码
则:
TP=2(真实为正,实际也为正) FN=0
FP=2 TN=0(真实为负,实际也为负)
TPR = TP/(TP+FN) = 1
FPR = FP/(TN+FP) = 1
复制代码
-
第四步:假设截断点为0.35
scores = [0.1, 0.4, 0.35, 0.8] y_true = [0, 0, 1, 1] y_pred = [0, 1, 1, 1] 复制代码
则:
TP=2(真实为正,实际也为正) FN=0
FP=1 TN=1(真实为负,实际也为负)
TPR = TP/(TP+FN) = 1
FPR = FP/(TN+FP) = 0.5
复制代码
第五步:假设截断点为0.4
说明只要score>=0.4,它的预测类别就是P。 此时,因为4个样本的score有2个大于等于0.4。所以,所有样本的预测类有2个为P(1个预测正确,1一个预测错误);2个样本被预测为N(1个预测正确,1一个预测错误)。
scores = [0.1, 0.4, 0.35, 0.8]
y_true = [0, 0, 1, 1]
y_pred = [0, 1, 0, 1]
复制代码
则: TP=1(真实为正,实际也为正) FN=1 FP=1 TN=1(真实为负,实际也为负) TPR = TP/(TP+FN) = 0.5 FPR = FP/(TN+FP) = 0.5
第六步:假设截断点为0.8
scores = [0.1, 0.4, 0.35, 0.8]
y_true = [0, 0, 1, 1]
y_pred = [0, 0, 0, 1]
复制代码
则:
TP=1(真实为正,实际也为正) FN=1
FP=0 TN=2(真实为负,实际也为负)
TPR = TP/(TP+FN) = 0.5
FPR = FP/(TN+FP) = 0
复制代码
3.6 AUC(Area Under Curve)
我们将曲线与x轴、直线x=1围成的面积,称作AUC(Area under the curve)。AUC位于0到1之间,取值越大说明模型越好。
4 运营指标(指标化运营)
4.1 PV(Page Views)
页面浏览量,也即点击量,重复点击也算在内。
4.2 UV(Unique Visitors)
独立用户浏览数,去除重读,一个用户10次点击,算作一次。
4.3 DAU(Daily Activated Users)
每天的活跃用户数量,每天至少登录一次的用户量。
4.4 MAU(Monthly Activated Users)
月活跃用户量,至少一个月登录一次。
4.5 LTV(Life-Time Value)
用户的生命周期价值,也即用户从使用到放弃的时间内,产生的价值
4.6 ARPU(Average Revenue per User)
每一个用户在一个周期如一年内可以网站可以收益多少钱。