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值,逐步剔除法等皆可,之後將選好的特徵丟在所選的模型中訓練即可.

發佈了53 篇原創文章 · 獲贊 27 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章