准确率的缺陷:当负样本占99%时分类器将所有样本都预测为负样本也可以获得99%的准确率。即当不同类别的样本比例非常不均衡时,占比大的类别往往称为影响准确率的主因素。
解决办法:可以使用更为有效的平均准确率,即每一个类别下的样本准确率的算术平均,作为模型评估的指标。
Precision值和Recall值是既统一有矛盾的两个指标,为了提高precision值,分类器需要尽量在“更有把握”时才把样本预测为正样本,但此时往往会因为过于保守而漏掉很多“没有把握”的正样本,导致Recall值降低。
P-R曲线能够更全面地反映模型在Precision值和Recall值两方面的指标。其横轴是召回率,纵轴是精确率。
除此之外,F1分数和ROC曲线也能综合地反映一个排序模型的性能,F1分数是精确率和召回率的调和平均数,它的定义为:
F 1 = 2 × p r e c i s i o n × r e c a l l p r e c i s i o n + r e c a l l F_1=\frac{2\times precision \times recall}{precision+recall} F1=precision+recall2×precision×recall
RMSE经常用来衡量回归模型的好坏,其计算公式为
R M S E = ∑ i = 1 n ( y i − y i ^ ) 2 n RMSE=\sqrt{\frac{\sum_{i=1}^{n}(y_i-\hat{y_i})^2}{n}} RMSE=n∑i=1n(yi−yi^)2
其中 y i y_i yi是第 i i i个样本点的真实值, y i ^ \hat{y_i} yi^是第 i i i个样本点的预测值, n n n是样本点的个数。
RMSE一般是能很好的反映回归模型预测值和真实值的偏离程度的。但在实际的问题中,如果存在个别偏离程度非常大的离群点时,即使离群点数量非常少,也会让RMSE指标变得很差。即可能存在模型在大部分的情况下预测误差近乎完美,但就是在小部分的情况下存在非常严重的离群点,导致RMSE特别大。
解决办法:
ROC曲线的横坐标为假阳性率(False Positive Rate, FPR);纵坐标为真阳性率(True Positive Rate, TPR)。FPR和TPR的计算方法分别为:
F P R = F P N T P R = T P P FPR=\frac{FP}{N} \\ TPR=\frac{TP}{P} FPR=NFPTPR=PTP
其中 P P P是真实的正样本的数量, N N N是真实的负样本的数量, T P TP TP是 P P P个正样本中被分类器预测为正样本的个数, F P FP FP是 N N N个负样本中被分类器预测为正样本的个数。
如何绘制ROC曲线?
在二分类任务中,假定有一个阈值,大于该阈值判定为正样本,小于该阈值判定为负样本,该阈值称为截断点,每一个截断点均可得到一对FPR和TPR值,动态调整该值,即可得到ROC曲线。
AUC:AUC是ROC曲线下的面积大小,一般其取值在0-1之间,但因ROC曲线一般都在y=x的上方,因此AUC的通常取值在0.5-1之间,AUC越大说明分类器越可能把真正的正样本排在前面,分类性能越好。
特点:相比P-R曲线(准确率-召回率曲线),ROC曲线有一个特点,就是在样本分布发生变化时,ROC曲线的形状能够基本保持不变,而P-R曲线一般会发生比较剧烈的变化。
意义:这个特点让ROC曲线能够尽量降低不同测试集带来的干扰,更加客观的衡量模型本身的性能。其实在实际的问题中,都存在样本类别不平衡的问题,如果切换不同的测试集P-R曲线的变化就会非常大,而ROC曲线则能够更加准确的反映模型本身的好坏,所以ROC曲线适用范围更广。但如果想要得到模型在具体数据集上的表现,那么P-R曲线更适合。
余弦相似度:
c o s ( A , B ) = A . B ∣ ∣ A ∣ ∣ 2 ∣ ∣ B ∣ ∣ 2 cos(A,B)=\frac{A.B}{||A||_2||B||_2} cos(A,B)=∣∣A∣∣2∣∣B∣∣2A.B
余弦相似度即两个向量 A A A和 B B B的夹角的余弦,关注的是向量之间的角度关系,并不关系绝对大小,其取值为 [ − 1 , 1 ] [-1,1] [−1,1],1表示完全相似,0表示正交,-1表示完全不相似。
余弦距离:
1 − c o s ( A , B ) 1-cos(A,B) 1−cos(A,B)
当一对文本相似度的长度差距很大,但内容接近时,如果使用词频或词向量作为特征,它在特征空间中的欧式距离通常会很大,而如果使用余弦相似度的话,它们之间的夹角可能很小,因而相似度较高。
在一些场景中,例如Word2Vec中,其向量的模长是经过归一化的,此时欧式距离与余弦距离具有单调的关系,即:
∣ ∣ A − B ∣ ∣ 2 = 2 ( 1 − c o s ( A , B ) ) ||A-B||_2=\sqrt{2(1-cos(A,B))} ∣∣A−B∣∣2=2(1−cos(A,B))
其中 ∣ ∣ A − B ∣ ∣ 2 ||A-B||_2 ∣∣A−B∣∣2表示欧式距离。在此场景下,如果选择距离最小(相似度最大)的近邻,那么使用余弦相似度和欧式距离的结果是相同的。
总之,欧式距离体现数值上的绝对差异,而余弦距离体现方向上的相对差异。例如,统计两部剧的用户观看行为,用户A的观看向量为(0,1),用户B的观看向量为(1,0);此时二者之间的余弦距离很大,而欧式距离很小;我们分析两个用户对于不同视频的偏好,更关注相对差异,显然应该使用余弦距离。而当分析用户活跃度时,以登录次数,和平均观看时长作为特征时,余弦距离会认为(1,10)、(10,100),两个用户距离很近;但显然这两个也难怪乎的活跃度是拥有巨大差异的,此时我们更关注数值的局对差异,应当使用欧式距离。
距离的定义:在一个集合中,如果每一对元素均可唯一确定一个实数,使得三条距离公理(正定性、对称性、三角不等式)成立,那该试数可以称为这对元素之间的距离。
判定余弦距离是否是严格距离的证明:
方法一
方法二
显然,在单位圆上面,余弦距离和欧式距离的范围都是[0,2]。而已知欧式距离是满足严格的距离定义的,但余弦距离和欧式距离存在二次关系,因此余弦距离一定不是一个严格满足距离定义的距离。
什么是A/B测试?为什么要进行A/B测试?怎么进行A/B测试?
A/B测试:为同一个目标,设计两种方案,将两种方案随机投放市场中,让组成成分相同(相似)用户去随机体验两种方案之一,根据观测结果,判断哪个方案效果更好。
为什么要进行A/B测试:
主要有三点:
第一点:离线评估无法完全消除模型过拟合的影响,因此其评估结果无法完全替代线上评估结果;
第二点:离线评估无法完全还原线上的工程环境。
第三点:离线评估环境中无法计算某些真实的业务指标。离线评估更关注的是ROC、P-R等指标的提升,而线上评估更关注实战效果和用户体验。
怎么进行A/B测试:
首先是要对用户进行分组,分为实验组和对照组,在分组时一定注意样本的独立性和采样方式的无偏性;然后对对实验组实施新模型,对对照组实施旧模型;最后完成相关技术和业务指标的对比评估。
在每一次的采样中,一个样本未被选中的概率是 1 − 1 n 1-\frac{1}{n} 1−n1,由于是有放回的采样,因此某样本 n n n次采样均未被选中的概率为 ( 1 − 1 n ) n (1-\frac{1}{n})^n (1−n1)n,当 n n n无穷大时,有概率 P P P:
P = lim n → ∞ ( 1 − 1 n ) n = lim n → ∞ 1 ( 1 + 1 n ) n P=\lim\limits_{n\rightarrow \infty}(1-\frac{1}{n})^n=\lim\limits_{n\rightarrow \infty}\frac{1}{ (1+\frac{1}{n})^n } P=n→∞lim(1−n1)n=n→∞lim(1+n1)n1
令 t = 1 n t=\frac{1}{n} t=n1, t → 0 t\rightarrow 0 t→0,则上式转换为:
P = lim n → 0 1 ( 1 + t ) 1 t P=\lim\limits_{n\rightarrow 0}\frac{1}{(1+t)^{\frac{1}{t}}} P=n→0lim(1+t)t11
根据重要极限定理: P = lim n → 0 ( 1 + t ) t = e P=\lim\limits_{n\rightarrow 0}(1+t)^t=e P=n→0lim(1+t)t=e,那么:
P = lim n → 0 1 ( 1 + t ) 1 t = 1 e ≈ 0.368 P=\lim\limits_{n\rightarrow 0}\frac{1}{(1+t)^{\frac{1}{t}}}=\frac{1}{e} \approx 0.368 P=n→0lim(1+t)t11=e1≈0.368
即经过 n n n次有放回的采样后,大约有36.8%的样本未被选中,这些样本可以作为验证集。
超参数调优的基本要素:一是目标函数,即算法需要最大化/最小化的目标;二是搜索范围,一般通过上限和下限来确定;三是算法的其他参数,例如搜索步长。在实际工作中一般采用网格搜索、随机搜索、贝叶斯优化等算法。
感谢阅读。
如果觉得文章对你有所帮助,欢迎打赏哦~