【說在前面】本人部落格新手一枚,象牙塔的老白,職業場的小白。以下內容僅為個人見解,歡迎批評指正,不喜勿噴![握手][握手]
1. 資料預處理
1.1 選擇資料樣本(企業級應用)
- 例如客觀選擇某一時間段內的所有樣本集合等(避免人為主觀選擇)
- 例如在評價樣本中去除惡意/隨意評價樣本等(避免錯誤樣本的干擾)
1.2 視覺化特徵分佈
- dataframe.info/dataframe.describe等(檢視資料樣本的整體分佈情況)
- dataframe.plot/matplotlib/seaborn等(包括柱狀圖/散點圖/折線圖等)
1.3 缺失值處理
- 如果某樣本的缺失記錄佔比較大:
- 可統計為“缺失量”
- 可直接刪除該樣本
- 如果某特徵的缺失記錄佔比較大:
- 可二值化為“有/無”
- 可直接刪除該樣本
- 如果某樣本/特徵的缺失記錄佔比較小:
- 可根據領域知識補全
- 數值型:可根據均值/眾數/模型預測等補全
- 類別型:可以定義為新的類別等
- 可不處理,有些模型對缺失值不敏感:例如樹模型/神經網路等
1.4 異常值處理
- 異常值判定:需根據資料分佈/業務場景等
- RobustScaler/robust_scale等
- 之後會推出異常值檢測專題
- 可直接刪除該樣本
- 可採用缺失值的處理方式
- 注意資料不一致問題
- 注意數值型可用蓋帽/對數變換等壓縮
- 可不處理,有些模型對異常值不敏感:例如KNN/隨機森林等
2. 特徵工程
2.1 數值型
- 連續型:離散化(例如年齡/身高/體重等)
- 無監督:分箱等
- 有監督:基於卡方檢驗/資訊增益等
- 標準化/歸一化:Normalizer/StandardScaler/MinMaxScaler
2.2 非數值型
- 類別型
- 存在排序問題的編碼:sklearn.preprocessing.LabelEncoder
- 不存在排序問題的編碼:sklearn.preprocessing.OneHotEncoder/get_dummies/Binarizer二值化
- 時間型
- 與數值型/類別型進行特徵交叉/組合(企業級應用很常見)
- 採用時間滑動視窗統計特徵count/min/max/mean/median/mode/variance等
- 字串型
- 可採用詞袋模型/TF-IDF/主題模型/Word Embedding等
2.3 特徵體系擴充
- 特徵交叉/特徵組合等
- 多項式轉換:PolynomialFeatures
- 引入新特徵:根據迭代評估決定是否新增(企業級應用)
2.4 特徵選擇(降維)
- 去掉取值變化小的特徵:取值基本都相同的特徵
- 衡量單個特徵和標籤的關聯度:scipy.stats.pearsonr/minepy.MINE/迴歸權重等
- 含正則化的線性模型/樹模型等:SelectKBest/SelectFromModel
- 其他特徵選擇思路:RandomizedLasso/sklearn.feature_selection.RFE
- 降維:sklearn.decomposition.PCA/sklearn.lda.LDA
2.5 sklearn.pipeline
- 能夠完成流水線式和並行式的工作
3. 模型選擇/融合
3.1 常見的機器學習演算法
- lr/svm/rf/GBDT/xgboost/lightgbm等
3.2 模型融合
- 迴歸預測的boosting思路:各模型的加權平均融合
- 分類識別的bagging思路:各模型的投票融合
- Stacking/Blending等模型融合方法
3.3 企業級模型應用思路
- lr/xgboost/gbdt+lr/引入DNN等
4. 模型訓練/測試
4.1 資料集劃分
- 按比例劃分:sklearn.model_selection.train_test_split
- K折交叉驗證:KFold/GroupKFold/StratifiedKFold
4.2 調參
- 網格搜尋/貝葉斯優化等(sklearn.grid_search.GridSearchCV)
5. 其他問題
5.1 樣本不均衡問題
- 資料角度:欠取樣/過取樣/SMOTE演算法等
- 模型角度:調整lr的閾值/採用樹模型等
- 評估角度:採用F1值/ROC曲線等
5.2 無標籤樣本問題
- 半監督學習方法/聚類思考等
5.3 欠擬合/過擬合問題
- 欠擬合
- 特徵擴充/非線性模型等
- 過擬合
- 擴充資料集/正則化/early stoppping/交叉驗證
- Dropout/batch normalization
6. 模型評估
6.1 迴歸問題
- 平均絕對誤差MAE/平均平方誤差MSE/均方根誤差RMSE/決定係數R2等
6.2 分類問題
- 混淆矩陣/準確率/召回率/F1/ROC曲線/AUC/PR曲線/交叉熵損失等
6.3 上線問題
- 線下預估/流量分配/ABtesting/業務評估指標等(企業級應用)
老規矩,最後直接上完整的思維導圖!
如果您對人工智慧演算法感興趣,歡迎瀏覽我的另一篇部落格:人工智慧新手入門學習路線和學習資源合集(含AI綜述/python/機器學習/深度學習/tensorflow)
如果你是計算機專業的應屆畢業生,歡迎瀏覽我的另外一篇部落格:如果你是一個計算機領域的應屆生,你如何準備求職面試?
如果你是計算機專業的本科生,歡迎瀏覽我的另外一篇部落格:如果你是一個計算機領域的本科生,你可以選擇學習什麼?
如果你是計算機專業的研究生,歡迎瀏覽我的另外一篇部落格:如果你是一個計算機領域的研究生,你可以選擇學習什麼?
如果你對金融科技感興趣,歡迎瀏覽我的另一篇部落格:如果你想了解金融科技,不妨先了解金融科技有哪些可能?
之後博主將持續分享各大演算法的學習思路和學習筆記:hello world: 我的部落格寫作思路