这篇帖子中实现了常见集中抽样方法:【机器学习算法-python实现】采样算法的简单实现
但没有是实现 分层抽样。今天工作中正好用到分层抽样,算作 补充吧。
任务场景:589个分类,每个类目的样本,严重不均衡,有的是千万条,有的只有几条
需求:在喂给算法模型前,进行分层抽样,降低样本量,节省时间;降低样本不均衡程度。
方案:直接采用log平滑,小类目下的样本不删减,效果如下,基本大类目基本和小类目直接平滑成近似的样本数目。
反馈:平滑太严重,将3000万的样本,消减为600万,消减太多。导致信息损失太多。
改进后,在可视化效果中,发现严重的离群点。需要对离群点进行消减。——有多个类目的样本达到500万,所以,对其进行大删减。
再修正:
效果图:
分析:大类目的样本数得到很好的抑制;小类目的样本基本保持不变。基本满足业务场景的需求。