R建模8大步驟


當我們拿到一堆數據要進行建模預測的時候,往往不知道該怎麼處理。尤其是對於學數理統計的同學,往往老師會佈置一個大作業,自找數據,自行分析,自行預測。很多時候會一頭霧水,不知從何做起。本人也是從這個過程走過,因此這裏跟大家分享一下我個人進行數據清洗,分析,建模和預測的經驗。本篇文章僅描述一般的過程。後續會根據具體線性迴歸,分類(KNN,SVM,決策樹,隨機森林等)實例進行講解。

數據分析一般可以分爲七大部分,包括數據加載,清洗,探索,建模,診斷,預測和評估。以下分別進行講解。

1.數據加載

數據加載即從本地數據庫,txt文件,csv文件,excel文件,RData文件,或者網絡上獲取數據。主要使用的函數爲:
csv文件:read.csv()和read.csv2()函數。前者用於讀取小數據量數據(<10000行),後者在讀取大數據量數據時有優勢。
excel文件:excel文件讀取之前需要先安裝並加載xlsx包,然後該函數才能夠使用。而且該函數需要指定讀取excel文件中的第幾個表格。參數sheetIndex是從索引1開始,這與python從0開始索引不一樣。或者sheetName指定表格名稱來選擇。兩個參數選擇一個就可以。

install.packages("xlsx")
library(xlsx)
read.excel("xxx.xlsx",sheetIndex=1,sheetName="sheet1")

RData文件:

#這句是加載該RData文件,但是不會顯示裏面有什麼數據
data=load("xxx.RData")
#str()函數會顯示該文件中有哪些數據集
str(data)

text數據:read.table()既可以讀取txt文件也可以讀取csv文件。

read.table(file)

詳細的數據讀取函數,參數我會在稍後的文中進行總結。

2.數據清洗

數據清洗主要工作是查看缺失率,處理缺失值(NA),處理共線性強,相關性強,低方差特徵變量。有些情況下需要對數據進行歸一化處理,以減少單位不同引起的相關問題,並能夠加快數據運算與收斂。同時也要觀察數據類型,將分類變量(categorical)轉化成因子變量(factor),連續型變量轉化成numerical,int型變量。

3.數據探索

數據探索主要是通過可視化方式,研究因變量與部分自變量之間是否存在一定的關係(散點圖)。也可以研究自變量分佈關係(箱線圖,直方圖,密度曲線圖)。數據探索的目的是初步的瞭解因變量與自變量,自變量與自變量,及自變量自身關係。是數據建模之前對數據的宏觀認識。

4.數據建模

數據建模是整個數據分析的核心,模型構建的好與壞直接影響到預測結果的準確度。一般建模過程中並不會拿所有的數據當做訓練集,而是按照一定的比例(7:3)將原始數據分成兩部分:訓練集和測試集。訓練集用來訓練模型(學習器),測試集用來對訓練好的模型進行檢驗評估。
這裏最重要的是採用什麼方法對數據進行分割。具體分割方式會在後續中進行講解。

5.模型診斷

模型診斷主要是針對線性迴歸而言。因爲在進行線性迴歸分析時,至少要滿足四個前提條件:殘差均值爲0,殘差服從正態分佈,任意兩組樣本的殘差的方差一致,因變量與自變量之間確實滿足線性關係。
這四條前提可以通過模型的殘差圖和QQ圖進行分析,具體分析會在後續中進行詳解。

6.數據預測

構建好模型後,需要利用該模型對測試集進行預測,主要利用predict()函數進行預測。

7.預測評估

將預測結果與測試集中的真實結果進行比較,從而評估模型的好壞。分類器主要是通過準確率和ROC圖進行評估,迴歸模型則通過MSE(均方差)進行評估。

8.模型比較

當然,有時候課題的要求是要建立多個模型,然後對這幾個模型進行評估,選擇一個預測效果最好的模型。
對於線性模型,可以通過赤池信息準則(AIC),貝葉斯準則(BIC),R^2及殘差圖進行比較。對於嵌套式的兩個迴歸模型(即一個模型的變量包含了另一個預測模型的變量),通過anova(mod1,mod2)先檢驗兩個模型是否有顯著性區別(原假設是沒有顯著性區別),若沒有,則選擇變量較少,相對簡單的那個模型。

歡迎關注我個人公衆號:moisiets,一起學習與交流!
moisiets

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