Hike News
Hike News

機器學習-特徵工程-細談特徵降維

Introduction sklearn中的降維演算法都被包括在模塊decomposition中 decomposition模塊為一個矩陣分解模塊 SVD和主成分分析PCA都屬於矩陣分解算法中的入門算法,通過分解特徵矩陣來進行降維 降維(矩陣分解)的過程中追求既減少特徵的數量,又保留大量有效信息的 新特徵矩陣 將帶有重複信息(特徵與特徵之間有線性相關)的特徵合併 刪除無效信息(noise)的特徵 如果一個特徵的方差(Variance)很大,則可以說明這個特徵帶有大量信息 兩種主要的降維方法;其矩陣分解的方法不同,信息量衡量指標不同,但都涉及大量矩陣運算 主成分分析(PCA) 奇異值分解(SVD) 通常在能進行PCA降維的情況下,不會進行特徵選擇 無法使用PCA降維的情況下才會做特徵選擇

Continue Reading →

機器學習-特徵工程-特徵選擇-包裝法

Introduction 包裝法(wrapper)仍是一種特徵選擇和演算法訓練同時進行的方法 與嵌入法相似的地方,仍是依賴算法有coef_及feature_importances_等屬性來完成特徵選擇 不同之處為 使用一個專業的數據挖掘演算法;而非使用 在評估模型使用的演算法 wrapper method 黑箱中所使用的Learning Algorithm是一個目標函數,專門用於選取特徵 不需像過濾法那樣在指定評估指標 和 threshold值 計算成本位於嵌入法與過濾法中間 包裝法效果是所有特徵選擇方法中最利於提升模型表現的 不適用於大 包裝法相比嵌入法更能保證模型效果

Continue Reading →

機器學習-特徵工程-特徵選擇-嵌入法

Introduction 嵌入法(Embedded)是讓演算法自己決定使用那些特徵的方法 特徵選擇 及 演算法訓練 同時進行 特徵的選擇是依賴模型的表現來進行選擇,因此為一循環過程 Embedded method 最後得到各個特徵的權值,根據權值從大到小選擇特徵 相比過濾法,嵌入法的篩選的特徵更為精確,對模型更有效 缺點1:無法有效界定有用特徵 權值係數的臨界值 不像過濾法有p值可幫助我們做界定 只能說要是權值係數為0時,則對模型毫無貢獻 改善方法: 權值係數作為 超參數,使用學習曲線方法進行調參 根據 模型本身性質 判斷權值係數範圍 缺點2:因為其是引入演算法來挑選特徵,且會使用全部特徵 計算時間與所使用的演算法 及 數據量有關係 from sklearn.feature_selection import SelectFromModel

Continue Reading →

機器學習-特徵工程-特徵選擇(feature_selection)-過濾法

Introduction從所有的特徵中,選擇出有意義的或對模型有幫助的特徵 避免必須將所有特徵都導入模型進行訓練的窘境 重要!!:必須與數據提供者討論 若是我們無法找到合適領域的人幫助理解數據來選擇特徵的話,可使用以下四種方法 過濾法 嵌入法 包裝法 降維演算法

Continue Reading →

機器學習-特徵預處理-處理連續型數據

Introduction 二值化(binarizer) 根據閥值(threshold)將數值二元化(大於閥值設為1;小於or等於閥值設為0) 用於處理連續型變量 連續型變量劃分為二分類 決定僅考慮某種現象存在與否 分段(KBinsDiscretizer;分箱) 將連續型數據劃分為不同分類變量 例如:根據不同的年齡段分成老年、中年、青少年、小孩、幼齡

Continue Reading →

機器學習-特徵工程-填補缺失值

Introduction 現實中所蒐集的數據不可能完美,往往伴隨著缺失值的存在處理方法通常為: 直接將含有缺失值的樣本刪除 直接將含有過多缺失值的特徵列刪除 使用sklearn.impute.SimpleImputer將均值、中位數、眾數、常數填補數據 專門用作填補缺失值的類 使用隨機森林回歸填補缺失值

Continue Reading →

機器學習-演算法-隨機森林回歸(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)

Continue Reading →