【機器學習】如何做出一個更好的Machine Learning預測模型

初衷

這篇文章主要從工程角度來總結在實際運用機器學習進行預測時,我們可以用哪些tips來提高最終的預測效果,主要分為Data Cleaning,Features Engineering, Models Training三個部分,可以幫助大家在實際的工作中取得更好的預測效果或是在kaggle的比賽里取得更好的成績和排位。

Data Cleaning

1. 移除多餘的duplicate features(相同或極為相似的features)

2. 移除constant features(只有一個value的feature)

#R裡面可以使用unique()函數判斷,如果返回值為1,則意味著為constant features

3. 移除方差過小的features(方差過小意味著提供信息很有限)

#R中可以使用caret包里的nearZeroVar()函數#Python里可以使用sklearn包里的VarianceThreshold()函數

4. 缺失值處理:將missing value重新編為一類。

#比如原本-1代表negative,1代表positive,那麼missing value就可以全部標記為0#對於多分類的features做法也類似二分類的做法#對於numeric values,可以用很大或很小的值代表missing value比如-99999.

5. 填補缺失值

可以用mean,median或者most frequent value進行填補

#R用Hmisc包中的impute()函數#Python用sklearn中的Imputer()函數

6. 高級的缺失值填補方法

利用其他column的features來填補這個column的缺失值(比如做回歸)

#R裡面可以用mice包,有很多方法可供選擇

注意:不是任何時候填補缺失值都會對最後的模型預測效果帶來正的效果,必須進行一定的檢驗。

Features Engineering

1. Data Transformation

a. Scaling and Standardization

#標準化,R用scale(), Python用StandardScaler()#注意:Tree based模型無需做標準化

b. Responses Transformation

#當responses展現skewed distribution時候用,使得residual接近normal distribution#可以用log(x),log(x+1),sqrt(x)等

2. Features Encoding

#把categorical features變成numeric feature#Label encoding:Python 用 LabelEncoder()和OneHotEncoder(), R用dummyVars()

3. Features Extraction

#主要是針對文本分析

4. Features Selection

a. 方法很多:

註:其中randomForest以及xgboost里的方法可以判斷features的Importance

b. 此外,PCA等方法可以生成指定數量的新features(映射)

c. 擅對features進行visualization或correlation的分析。

Models Trainning

1. Mostly Used ML Models

嘗試多一些的模型,比如下面這些:

2. 利用Grid Search進行hyper參數的選擇

3. 利用Cross-Validation衡量訓練效果

4. Ensemble Learning Methods

必讀下面這個文檔:Kaggle Ensembling Guide

最後

想要了解關於R、Python、數據科學以及機器學習更多內容。

請關注我的專欄:Data Science with R&Python, 以及關注我的知乎賬號:文兄


推薦閱讀:

R之方差分析
玩點好玩的--使用馬爾可夫模型自動生成文章
RStudio | R語言應用及發展峰會(精華分享)
購物籃關聯分析——R挖掘Apriori演算法

TAG:机器学习 | 数据挖掘 | Python |