闲聊数据建模流程

闲聊在数据建模之前的一些数据预处理步骤。
如何培养数据之间的敏感性,多看各指标的分布,通过直方图,柱形图,概率密度图能看到数据的分布情况,能看到数据集中在什么位置,边界值在什么位置。

1、取数:

首先是理解业务,理清逻辑,写sql去数据库里面取数

2、简单理解变量:

取数完成之后,放到excel或者是用python读取文件,浏览数据,记录下每一个变量的含义,并且对变量进行分组,比如在金融行业,将能代表还款意愿的变量放到一组,还款能力的变量放到一组,用户自己个人信息的放到一组,id类放到一组等等,形成良好的职业习惯,;另外顺便将每个变量都升降序排列,或者筛选看看,是连续的还是离散的,或者最大值,最小值等等这些,有助于理清思路

3、看变量分布:

离散变量看直方图统计频数,连续变量看概率密度函数

4、数据预处理:

(1)错误值:
首选是改对了(成本很高)、用缺失值替换、删掉记录
(2)缺失值:
1、样本量小于20%的:
连续变量:用均值(正态分布)或中位数(左右偏)代替,现在也有使用随机森林来替补缺失值的;
分类变量:一般可以不做处理,直接当做一个类别来处理,或者使用众数进行代替
2、20%-50%的:
填补方法如上,同时生成哑变量(这个哑变量是有数据用0,缺失数据填补的用1来编码),让模型来决定是变量的值更重要还是有没有这个变量更重要,或者是结合在一起更有效
3、50%以上的:
根据业务理解,如果不太重要就直接删除这个变量;如果比较重要,原变量不再使用,只生成哑变量(二分类哑变量)参与建模
4、其实要是比较少的话也可以直接删除
(3)异常值(定义,5倍标准差之外,平均值±2-3倍标准差、上下四分位数之外)
1、直接删除
2、盖帽法,比如0.01分位点和0.99分位点之外的统一使用两个极端值来进行代替
3、分箱法(等宽[等距]和等深[百分位数]分箱),比较推荐使用
(4)数据转化和one-hot编码等

5、特征选择:

有些变量单独拿出来效果不显著,但是有可能组合在一起会显著,考虑交互性;或者单独拿出来显著,组合在一起有多重共线性等问题也是需要考虑的。
1、人工筛选:id类、对建模毫无意义、某一列值全都一样的字段、缺失占比高的先剔除,基本上属于人为特征选择;
2、统计检验:可以根据统计检验里面的t检验、方差分析、相关系数来看相关性程度
3、根据IV、xgboost的importance,来筛选重要变量

6、建模:

根据业务需求选择合适的模型进行建模,可以使用网格搜索方法来调节参数,这个方法只能是满足局部最优,一个参数一个参数来调节。

模型效果不理想时,可以从以下方面来调整策略(参考金子老师):
1、调节正负样本的权重参数;调整模型参数
2、更换模型算法,或者同时使用几个算法,然后取最终结果
3、根据原始变量,生成衍生变量

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章