机器学习面试150题:不只是考SVM xgboost 特征工程(51-100)|附送【AI工程师大礼包】 - 知乎
1.auc
有两种解释方式,
一种是本身定义的角度,auc是roc曲线的面积,roc曲线的面积,根据混淆矩阵,真阳性率,假阴性率计算的,同时考虑了模型分正确和分错误的情况,在样本不平衡的情况下依然很好用。
一种是物理意义角度,auc是随机取出一个正样本和一个负样本,正样本预测值比负样本预测值大的概率。
roc曲线的面积
混淆矩阵
物理意义
auc是随机取出一个正样本和一个负样本,正样本预测值比负样本预测值大的概率。
例如 0.7 的 AUC,其含义可以大概理解为:给定一个正样本和一个负样本,在 70%的情况下,模型对正样本的打分高于对负样本的打分。可以看出在这个解释下,我们关心的只有正负样本之间的分数高低,而具体的分值则无关紧要。机器学习评估指标 AUC 综述_AI_DataFunTalk_InfoQ精选文章
代码实现
sql
python
手撕二分类的评价指标AUC_EWilsen的博客-CSDN博客_手撕auc
def naive_auc(labels,preds):
"""
最简单粗暴的方法
先排序,然后统计有多少正负样本对满足:正样本预测值>负样本预测值, 再除以总的正负样本对个数
复杂度 O(NlogN), N为样本数
"""
n_pos = sum(labels)
n_neg = len(labels) - n_pos
total_pair = n_pos * n_neg
labels_preds = zip(labels,preds)
labels_preds = sorted(labels_preds,key=lambda x:x[1])
accumulated_neg = 0
satisfied_pair = 0
for i in range(len(labels_preds)):
if labels_preds[i][0] == 1:
satisfied_pair += accumulated_neg
else:
accumulated_neg += 1
#这里是计算的当前的正样本之前有多少负样本,公式计算的是计算的当前的正样本之后有多少pair,所以这种计算方式不用再减去正样本的组合数
return satisfied_pair / float(total_pair)
————————————————
版权声明:本文为CSDN博主「EWilsen」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/juanmengmu2595/article/details/79549476
分子是:正样本预测值,大于负样本预测值的pair数。在计算的时候,先对[label,pre]排序,按照pre从小到大排序,然后遍历找到符合条件的pair数。
分母是正样本数*负样本数,就是总共的排列组合数。
AUC的计算方法_kingsam_的博客-CSDN博客_auc计算公式
AUC计算方法总结_昨夜的梦--pzy的博客-CSDN博客_auc的p值如何计算
分子是所有满足条件的pair数,分母是总共的pair数。分子:先按照预测概率从小到大对样本排序,rank是正样本的序号。ranki相加表示,满足正样本概率大于其他概率的样本数,然后减去pair的(正样本,正样本)。
是数列求和,1到m求和。
如何解决离线auc和线上点击率不一致的问题
如何解决离线和线上auc和线上点击率不一致的问题? - 知乎
为什么搜推场景用auc,广告场景用logloss
【转】为什么搜索与推荐场景用AUC评价模型好坏?_Just Jump的博客-CSDN博客_为什么用auc衡量模型好坏
2.常用的特征筛选的方式
3.CBOW和skip-gram的区别
CBOW是周围词预测中心词,skip-gram是中心词预测周围词。
skip-gram对低频词的效果比cbow好,因为训练的更充分。每个词作为中心词的时候都会对周围词做预测。
4.tensorflow实现负采样(w2v)
基于TensorFlow实现Skip-Gram模型 - 知乎
如何实现负采样的
双塔里也是这个
5.如何处理类别不平衡问题
负采样,负采样之后如何做还原
6.如何离线检测召回的结果
(好像是看召回的,和用户第二天浏览的,覆盖量)
7.kmeans
初识点的选择。