R语言笔记——回顾小结(数据清洗,建模简单流程)

已经好久没有写博客了,今天来复习一下简单的建模流程

以kaggle比赛的房价预测为例:(具体数据这里不给出,只说一下思路)

里面所提供的数据较为干净,我们只需对数据进行简单的清洗(较为干净含义为,我们不需要自己手工提取相应变量字段等内容,如,之前某池比赛中关于某宝的一些购物数据,需要我们自己分离出有用的数据,此流程较为繁琐,当然,大致做法就是用python的pandas,或是sql语句,各种处理,各种瞎搞也就搞出来了),那么这里 的数据清洗呢,主要是去除数据中的例外点,

所谓例外点,主要分为离群点高影响点,离群点主要分为异常值杠杆点,所谓异常值呢,就是将所有的样本求一个均值,其中偏离均值很大的点我们认为是异常点,或者我们可以先构建个模型,比如线性回归,然后我们便拟合出一条回归线,其中偏离回归线很大的点我们认为是异常点。所谓杠杆点,通常与x有关,与y没有关系,可以通过帽子矩阵来找出

H=X(X的转秩*X)求逆*X的转秩(公式不好打,就手写了),X极为样本矩阵,H对角线上的值为帽子统计量,其中对其对角线上的值求均值,若大于其均值的2或3倍的点,我们便认为它是高杠杆点,这种杠杆点的存在会使所拟合出的线更偏向于它所在的位置,从而大大影响模型的效果。什么是高影响点?当去掉这个 点后,整体模型发生很大的变化,即对整体影响特别强烈的 点,例如一屋有几个乞丐和一个马云爸爸,他们的money均值也会很高一样。

那么要如何去除这些例外点呢?首先找到离群点,R的caret包下的outliertest(lm),其中lm是你所构建的模型,

l1=outliertest(lm)

之后是高影响点,cooks.distance(lm)即可

l2=cooks.distance(lm)

之后将这两类点合并去重并从整体样本中去除即可,这样,数据清洗工作简单完成了,当然如果里面的特征值很多,30+,可以考虑PCA降纬。

之后是建模,首先,数据已足够干净,可以丢到集成模型中直接跑,随机森林,或boosting方法(其中xgboost简直超神完美)

不过对于其他方法,为了达到更好效果需要进行变量筛选,如重要性排序,直观p值,逐步剔除法等皆可,之后将选好的特征丢在所选的模型中训练即可.

猜你喜欢

转载自blog.csdn.net/lulujiang1996/article/details/80494385
今日推荐