Introduction
包裝法(wrapper)仍是一種特徵選擇和演算法訓練同時進行的方法
與嵌入法相似的地方,仍是依賴算法有coef_及feature_importances_等屬性來完成特徵選擇
不同之處為 使用一個專業的數據挖掘演算法;而非使用 在評估模型使用的演算法
wrapper method
黑箱中所使用的Learning Algorithm是一個目標函數,專門用於選取特徵
不需像過濾法那樣在指定評估指標 和 threshold值
計算成本位於嵌入法與過濾法中間
包裝法效果是所有特徵選擇方法中最利於提升模型表現的
不適用於大
包裝法相比嵌入法更能保證模型效果
機器學習-特徵工程-特徵選擇-嵌入法
Introduction
嵌入法(Embedded)是讓演算法自己決定使用那些特徵的方法
特徵選擇 及 演算法訓練 同時進行
特徵的選擇是依賴模型的表現來進行選擇,因此為一循環過程
Embedded method
最後得到各個特徵的權值,根據權值從大到小選擇特徵
相比過濾法,嵌入法的篩選的特徵更為精確,對模型更有效
缺點1:無法有效界定有用特徵 權值係數的臨界值
不像過濾法有p值可幫助我們做界定
只能說要是權值係數為0時,則對模型毫無貢獻
改善方法:
權值係數作為 超參數,使用學習曲線方法進行調參
根據 模型本身性質 判斷權值係數範圍
缺點2:因為其是引入演算法來挑選特徵,且會使用全部特徵
計算時間與所使用的演算法 及 數據量有關係
from sklearn.feature_selection import SelectFromModel
機器學習-特徵工程-特徵選擇(feature_selection)-過濾法
Introduction從所有的特徵中,選擇出有意義的或對模型有幫助的特徵
避免必須將所有特徵都導入模型進行訓練的窘境
重要!!:必須與數據提供者討論
若是我們無法找到合適領域的人幫助理解數據來選擇特徵的話,可使用以下四種方法
過濾法
嵌入法
包裝法
降維演算法
機器學習-特徵預處理-處理連續型數據
Introduction
二值化(binarizer)
根據閥值(threshold)將數值二元化(大於閥值設為1;小於or等於閥值設為0)
用於處理連續型變量
連續型變量劃分為二分類
決定僅考慮某種現象存在與否
分段(KBinsDiscretizer;分箱)
將連續型數據劃分為不同分類變量
例如:根據不同的年齡段分成老年、中年、青少年、小孩、幼齡
機器學習-調參
泛化誤差(Genelization error)衡量模型在未知數據上的準確率
模型在未知數據(測試集or袋外數據)上表現不好時,通常會說模型泛化程度不夠或是泛化誤差大
泛化誤差受到模型結構(複雜度)影響
機器學習-特徵工程-填補缺失值
Introduction
現實中所蒐集的數據不可能完美,往往伴隨著缺失值的存在處理方法通常為:
直接將含有缺失值的樣本刪除
直接將含有過多缺失值的特徵列刪除
使用sklearn.impute.SimpleImputer將均值、中位數、眾數、常數填補數據
專門用作填補缺失值的類
使用隨機森林回歸填補缺失值
機器學習-演算法-隨機森林回歸(RandomForestRegressor)
DecisionTreeClassifier12345class sklearn.ensemble.RandomForestRegressor(n_estimators=’warn’, criterion=’mse’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=’auto’, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=True, oob_score=False, n_jobs=None, random_state=None, verbose=0, warm_start=False)
機器學習-演算法-隨機森林分類(RandomForestClassifier)
Introduction隨機森林是非常具有代表性的Bagging集成演算法
所有的基評估器(base estimator)都是決策樹
單個決策樹的準確率越高,隨機森林的準確率也會越高
Bagging是依賴於平均值或多數決原則來決定集成結果的
DecisionTreeClassifier12345class sklearn.ensemble.RandomForestClassifier(n_estimators=’warn’, criterion=’gini’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=’auto’, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=True, oob_score=False, n_jobs=None, random_state=None, verbose=0, warm_start=False, class_weight=None)