【說在前面】本人博客新手一枚,象牙塔的老白,職業場的小白。以下內容僅為個人見解,歡迎批評指正,不喜勿噴![握手][握手]
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: 我的博客寫作思路