【機器學習】如何做出一個更好的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的Importanceb. 此外,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演算法