前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >K-means分箱

K-means分箱

作者头像
用户1217611
发布2023-03-06 17:01:17
6900
发布2023-03-06 17:01:17
举报
文章被收录于专栏:文渊之博文渊之博

一、“分箱”定义

各行各业的打工人,经常会面对一种令人尴尬的质疑:为什么你把15-25归为一类,10-20不行吗?13-23不行吗?

以及地产干饭人经常会被问到的:120-140㎡是主力,那119㎡行不行,118㎡呢?这个时候,通常大部分人会说那样也行。

可是那样真的行吗?吾不以为然也。而且,不但那样不行,这样也不是很行。提出问题,自然也要解决问题,下面就让我们一起来看看,怎样才算是真的行。

当我们在把一组连续的数据,进行分段研究的时候,这就是“分箱”。

意思是把一些初始元素,放到不同的“箱子”里去,用于增强数据的粒度,便于研究。比如把月薪水*分为:5000以下、5000-8000、8000-10000、10000-20000、20000以上。有时候分箱也可以进行调整和改变,比如薪酬也可以直接分成“8000以上”和“8000以下”。

同样,性别既可以分为4个箱:“男”、“女”、“无性别”、“双性别”;也可以分为2个箱:“性别明确”和“性别不明确”。

那么问题就来了,到底分成几个箱,以及按照怎样的标准来划分才更合适呢?

首先,最简单的是等距分箱、等频分箱以及自定义分箱。

所谓等距分箱,就是隔着同样的距离把整体切分。比如将薪酬按照1000-2000、2000-3000、3000-4000这样每隔1000分一段。亦或者将房地产产品面积按照每隔10*米划分为80-90、90-100、100-110、110-120。

等频分箱,就是把整体每隔n个元素放在一起作为一个箱,比如一共有1000个样本,我们按照从小到大的顺序排序后,把前250个作为第一类。

自定义分箱就是通过经验和判断进行划分,或者说就是拍脑袋的。就比如我们把月薪分为了5000以下、5000-8000、8000-10000、10000-20000。

对于有些情况,自定义分箱是个不错的选择,有时候自定义分箱,也可以在其他分箱的基础上,来补充一些数据上无法体现的东西。

比如我们的模型里有“年龄”这一维度的数据,而研究目标是青少年的犯罪率,那么就应该适当地把年龄分为14岁以下、14-16岁、16岁以上(因为刑法规定14岁以下完全不承担任何刑事责任!)。

当然也有用各种各样有监督的无监督的手段来分箱的,都可以进行尝试。但今天我们要说的是一个纯粹根据数据分布规律进行分箱的策略——K-means分箱。

二、K-means分箱算法

K-means即K均值聚类算法,如果用过聚类的朋友们肯定就对它很熟悉了,这是最简单有效的聚类方式之一。

首先需要指定一个大于1的正整数K,然后随机选取K个元素作为整体的聚类中心,随后计算每个对象与各聚类中心的几何距离,用于把每个对象分配给不同的聚类中心,再计算形成的每个簇的新几何中心作为新的聚类中心,重复这一过程直到每个聚类中心不再变化。

K-means算法最大的优点,是它可以对于任意大于1的正整数K,根据数据的几何分布,来把数据划分成几类,显然K越大,分类效果越好,但为了避免过拟合的情况出现,我们也可以人为规定一个K,或者是K的上限,也可以通过一个判断来选择最优的K是多少。

对于K-means算法,在一维数组中也是可以用的,当然在多维度空间中也是可行的(就是统计学常用的K-means聚类,顺便说一下这也是通常K-means聚类不可以用于逻辑变量的原因,不要再乱用了同学们)。

大部分数据分析软件都有K-means现成的包,笔者认为相比于python和R, Matlab在数据处理上总是更胜一筹,最后也会给大家分享案例实现的代码。

K-means的核心在于,通过计算机去寻找数据的聚集点,从而在分箱的同时,避免了过多的信息丢失。

三、案例实现

假设我们现在有一些房地产项目的成交明细数据,其中有一列为面积,我们在研究中通常需要对分面积段进行研究,那么我们就需要把面积离散化,也就是进行分箱处理。

就以60-100*内的产品分4个箱为例进行研究。(数据样例)

传统房地产人会通过经验来定一些整数分段,比如60-80*、80-100*、100-120*这样,当然这也不是不行,我们就以10*米来分段,60-100之间被分成了4段。

经验性分箱

方差

占比

[60-70)

0.19

7%

[70-80)

17.26

11%

[80-90)

17.81

34%

[90-100)

14.89

47%

总方差

15.07

可以看到此时总方差来到了15.07。

那么我们用W-K分箱(加权kmeans,在kmeans分箱的基础上附上套数作为权重),就可以得到结果如下

W-K分箱

方差

占比

[69-72)

0.67

12%

[79-82)

0.67

22%

[89-92)

0.81

45%

[98-100)

0.23

21%

总方差

0.65

此时总方差仅有0.65,分箱效果碾压。

最后结果也就是89-91*是一个主力面积段,如果数据的分布改变了,分箱的间断点也会随之改变。

但经验法却总是会指引你去做90-99的产品,也就是有接*10*米的误差了,当然有的人会说,我经验丰富,总是能拍的很准,那也没问题,只是说如果总想用经验,其实很难每次都能获得正确的结论,就像玩俄罗斯轮盘,看起来这是个很简单的游戏,而且听说很少有人在自己的一生中会输第二次。

更何况算法分箱在无形之中降低了房地产的经验门槛,而且也更加合理。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-02-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档