社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

「机器学习」三张图给门外汉讲清楚什么叫KS

狗厂 • 7 年前 • 796 次点击  

有一次,我们公司开会,机器学习团队的老大汇报业绩时候说到,我们最近做出来的最好的模型,KS 达到了 0.45(不要纠结这个数字哈,随便写了一个)。搞业务的某个同学就一脸懵逼地问,这个 KS 是个什么意思呢?这是好呢?还是不好呢?

当时,对这个问题的回答是失败的,会议陷入了小小的混乱。大家遇到的困扰是,很难用“人话”或者“普通话”,讲清楚到底什么是 KS。小 L 解释不清,老 B 上,还是解释不清,老 H 登场,最后还是没让听众彻底满意,当然,搞清楚这个也不是特别重要,最后一笑也就过去了,“回去自己百度/知乎”云云。

小生斗胆,想要尝试去解释清楚什么是 KS。咱们直接上干货吧。

我们公司的机器学习建模,目标是构建一种“二分类”模型,简单说,就是把一群人,分成“好人”和“坏人”。建模最后的结果是,我们使用模型给每个人打个分数,分数越低,人越坏,反之,则越好。然后,按照分数高低,我们可以把人给排列整齐。

看上图,模型产生 10 个分数,从低到高,把 100 个人,按照从坏到好,排成 10 列。这种排列的方式,是模型的一种预测,它不知道真实的情况是什么。

我们用颜色代表真实的情况。图里,红色代表坏人,绿色代表好人。假如,我们这个模型是上帝做的,绝对正确,我们就会看到一种现象,左边 5 列都是红的,右边 5 列都是绿的。

但是,模型是人做的,难免猜错,就会出现上面的现象,大体左边坏人多一些,右边好人多一些,但是有一些猜错的现象。每个小格子里的编号,是为了让读者你方便计算数量。显然,这 100 个人里,正好 50 个好人,50 个坏人。

下面,我需要一个机器警察去抓坏人。不过,这个机器警察只能按照模型预测的分数去抓,我们设定一个分数值,机器警察会把小于等于这个分数的人,都给抓起来。

现在我们需要做一个表格,来计算每个分数下面,抓到的坏人占全部坏人的比率(抓对率),以及抓到的好人占全部好人的比率(误抓率)。

看上面的图。假设,我们设为 0 分,没有人会被抓。同理,设置为 10 分,则所有坏人(100%)和所有好人(100%)都会被抓。

上面图里的表格,每一列代表,设置为这个分数时候,抓住的好人占所有好人的概率(误抓率),以及抓住的坏人占所有坏人的概率(抓对率)。第三行数字,代表两种概率的差值(坏人的概率 减去 好人的概率)。

假如,我们把上面的那个表格,可视化一下,画成折线图,就会是上面的样子。

上面那根灰色的线,代表每个分值抓住的总坏人率,下面那根红线代表误抓的总好人率。蓝色的线代表差值的变化情况。

然后,关键来了。蓝色的线的顶点。就是我们的主角 KS 君。到这里,我们基本讲明白了什么是 KS,诸君看懂了么??

========

我猜,你的脸是下面这样的:

Hey, bro ? So what ? 翻译成中文是,他*的,什么鬼?

KS 有毛用?抓人呢?

嗯……

简单说,KS 就是这样一种东西,确实也没什么用,至于抓人怎么决策什么的,KS 君也很难帮你。

如果,你很仁慈,你应该把机器警察的抓人分,设置成 1 分。一个好人也不误抓,宁肯让一些坏人逍遥法外。如果你很残暴,错杀一千不放过一个,你就设置成 10 分,把所有人都抓了。

对对,我当然知道 KS 是 60%,发生在设置为 5 分的时候,但是那又怎么样???不能怎么样。你没看错,不能怎么样。具体设置在几分呢?还是看心情。

======

回归严肃脸。

KS 量化评估了一个模型,累计好人和累计坏人相差最大的那个位置,从很小的一个侧面反应了一个模型的区分能力。几乎没有卵用。显然,预测的目标人群里,真实好坏客户的占比,会严重干扰KS的值。

在上图的极端情况下,KS 高达 82%,在分值设为 1 分的时候。你应该可以口算出来吧?(KS 并不是越高越好,当我们说KS越高越好的时候,一定是有一些前提的)

而且,跟抓人困境一样,KS 对决策几乎没有什么实质性的帮助。只是一种参考而已。显然,我们在真实抓人的时候,不一定可以设置能取到 KS 的分值(例如 第一个例子里的 5 分),你要考虑监狱的床位够不够,对吧?

说好的三张图,其实用了五张。就当我把你骗了,怎么的吧?

嘻嘻,希望你学会了,什么是 KS。

完。

PS. 课本上说,对一个风控模型来说,经验上,KS 统计量至少要 40% 才反应一个较好的判别能力。(课本知识,你懂的,自己判断咯)

再PS. KS 是一个统计量,是两个战斗民族(俄罗斯人)的名字(Kolmogorov-Smirnov)缩写。

最后,门外汉知道这些就够了。

真的。

完了。


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/U2X9IG6Tij
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/12092
 
796 次点击