首页 > 编程知识 正文

KolmogorovSmirnov KS 定义 python实现 KS值的正负,正弦余弦的正负是怎么定义的

时间:2023-05-04 02:17:12 阅读:229575 作者:2892

定义

TP: True Postive 预测正类,实际也是正类
FP:False Positive 预测正类,实际是负类
TN:True Negtive 预测负类,实际也是负类
FN:False Negtive 预测负类,实际是正类

TPR:TP / (TP+FN) 所有正例中有多少个正例被分出来。
FPR: FP / (TN+FP) 所有负例中有多少例子被分为正例。

模型预测的结果通常是一个概率值,概率值越大说明这个样本是正例的可能性越大,我们需要一个阈值(threshold)来定义多大的概率以上才是正例,通常这个值设为0.5,表示概率值大于0.5表示这个样本是正例,小于0.5表示这个样本是负例。

TPR曲线:横轴是阈值,纵轴是TPR,通过将阈值从1.0->0来画出很多个TPR的点,连起来得到TPR曲线。
FPR曲线:横轴是阈值,纵轴是FPR,通过将阈值从1.0->0来画出很多歌FPR的点,连起来得到FPR曲线。

KS值:TPR曲线和FPR曲线相距最远的距离值(同一个阈值的TPR和FPR的差值)

如图:

代码实现 from sklearn.metrics import roc_curveimport numpy as npdef ks(y_true, y_score): fpr, tpr, _ = roc_curve(y_true, y_score) diff = np.subtract(tpr, fpr) mins, maxs = diff.min(), diff.max() return mins if abs(mins) > abs(maxs) else maxs

按照数学的定义,距离是一个绝对值,在二分类问题的结果当中,一个不稳定的分类器可能导致TPR和FPR相交。

如果按照两条线距离的绝对值,那么绝对值最大的地方可能是模型反向预测的地方。如果按照max(TPR-FPR),我们得到的结果时正向预测的最大值的点,但是无法得到模型区分能力最强的点。如果取(TPR-FPR)的最小值和最大值,然后返回这两个值绝对值最大的那个原始值,例如2和-4返回-4,这样既可以知道两条曲线最大的距离是多少,也可以通过符号判断出此处模型是否已经反向预测。

我的代码是第三种,这种情况其实在真实场景中很小概率出现,但是从指标的意义上来说我觉得第三种是最贴近实际生产环境的。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。