”聚类一时爽,判断两行泪“——这是解决任何一个无监督问题时都会面临的苦恼:最近接到了一个无监督问题的项目——给一群无标签的结构化数据贴标签,随后我便立即展开了工作,首先开始查阅资料,然后把EDA(数据探索) 、特征工程、数据标准等三板斧悉数打出,最后输入'KMeans(n_clusters= num).fit(x)'这个命令行之后胸有成竹,自信得打开手机,边“吃鸡”边等待跑数结果,所谓的数据挖掘工作就……就这!?
——然而,在几分钟之后,映入眼帘的只是一个个'簇'的索引,真是一顿操作猛如虎,定睛一看都是'簇’,看着这一连串‘莫的感情’、没有任何意义的簇的序列 ,到底如何才能根据合适的理由判断哪一簇(类)是学生、哪一簇(类)是教师?
方法一:实际调研总结规律。由于学生群体过于庞大,可以从询问教师群体开始,因为教师授课的同时学生也在听课,所以二者具有一定的关联性,通过总结教师群体用户的行为特征,推测学生用户的行为特征,例如可以询问教师们最早从二月份的哪一日开始使用钉钉,通常在工作日和节假日的具体哪个时段在哪个教育类app比较活跃等等。
随即我便打消了这个念头,首先,找到目标群体——该地区教师用户耗费的成本过大;其次,虽然上课有统一的时间,但是上传课件、打卡等操作时间因人而异,最后可能只得到一个分布平均的数据,不便于总结教师用户行为特征;假如统计上课时间,虽然分布特征明显,但因为和学生用户是统一的,所以也难以区分是教师的行为特征还是学生的。
方法二:发放问卷。让不同的被调查者根据每一簇的行为特征决定该簇用户所属标签的最大可能性,然后根据每一簇的票数分布,判断该簇用户的所属群体。设定这一方法的前提是,聚类之后,簇与簇之间的行为特征差异明显,虽然也可以主观判断,但是说服力不足,让不同的调查者共同决定,可以推测不同群体的行为习惯,增强判断的可信度。(具体执行过程于本文第七节)
废话不多说,开始我们的探索之旅!
1 项目背景
1.1 2020年教育行业井喷式爆发
教育部公布首批通过备案教育应用 钉钉等152款APP在列baijiahao.baidu.com因为本次疫情各学校纷纷开展线上教学,在通信网络数据上突出了这群高初小学生的行为特征,如使用钉钉打卡、在直播平台的流量使用增多、观看时间有规律、基站位置无改变等等,因此移动通信运营商希望结合以上疫情期间教育类app的使用特征合理推测用户的属性(学生or老师or其他),然后进行精准营销、完成商品套餐推荐等一系列操作,而在仅仅给定用户行为数据的情况下,如何合理地把学生用户从茫茫用户中区分开来,也是一个不小的难题。
1.2 为什么选择钉钉
由图1-1可知,该地区的钉钉用户在二月份15—17日有一段明显的峰值,原来这段时间恰好是该地