一、总结一些知识点
1、对于unbalanced data的处理方法
当一个data不同label数据量比例为1:2 或 2:3,这种情况时,可以直接进行model train。但是当达到10 : 1这样的比例时,则将其称之为unbalanced data,对其处理方式有如下几种:
way1:可以采用“下采样”的方法,使得data不同label数据达到平衡;
way2:加入label1 : label2 = 10 : 1,则将label1分为10份,分别与label2数据集组合为一个数据集后,训练10个model,然后采用bagging的方式,得出最终的prediction结果。
way3:给不同label的数据,在loss function中加入不同的“权重”。
2、对于“缺失值”的处理方法:
way1:当缺失值 数量中等时,可以将其看作一个独立类型,进行one-hot encoding;
way2:缺失值 数量较小时,可以采用适当方式对其进行填充;
way3:缺失值 数量较大时,可以直接舍弃该feature;
3、如果一个feature的数据分布为long tailed,则由于其大部分value都集中在一个很小的区域,因此,不做任何处理的feature对model train无意义,要想使用这个feature,可对其做如下处理:
way1:如果feature为连续值,将连续值进行离散化;
4、数据变换的方式有如下几种:
way1:log
way2:指数
way3:Box-Cox
5、对于不同类型的feature可以做不同的处理
type1:时间型:可以将时间离散化,eg:{节日,非节日},{饭点,非饭点},{工作日,非工作日};
type2:文本类:n-grams,bag of words,TF-IDF,word2vec;
type3:统计型:如:电脑开机速度 击败 3%;
note that:如果数据量过大,在处理feature时,可以一部分一部分来进行处理;
note that:如果一个feature中有3种类别数据,则可对其进行one-hot encoding,为{[1,0,0] , [0,1,0] , [0,0,1]}。除此以外,也可以如是encoding,{[1,0] , [0,1], [0,0]}
6、如果要用GBDT不要用sklearn,可以用XGBoost(more often),或,LightGBM
7、xgboost使用说明
N1:在使用xgboost时,可以将data以libsvm(sparse data format),或,numpy format(用sklearn model时要将data转为Numpy形式)存储;
N2:不建议在xgboost中进行缺省值填充,因为他只能用一个value对所有feature的缺省值进行填充;
8、kaggle wiki
好吧,不幸的发现kaggle 2017 年已经被收购,kaggle wiki不能用了,复制一个链接,里边罗列了很多“目标函数(loss function)”:https://github.com/fxia22/ebola-1/blob/master/SharedData/Kaggle-Setup.md
二、总结几个code模板:
blending model 模板
xgboost模型训练,调参
绘制学习曲线(plot learning curve)