特征工程与特征选择架构性好文
作者:馬東什么
來源:https://zhuanlan.zhihu.com/
p/96420594
整理:深度傳送門
偶然看到的一篇好文,有一些部分講的不錯,分享一下。
特征工程和選擇是以最好的方式轉換數據的藝術/科學,這涉及到領域專長、直覺和數學的優雅融合。這是一本指南。供初學者參考,最簡單,但廣泛使用的技術,為特征工程和選擇。歡迎任何意見和承諾。
零、Basic Concepts
0.1?What is Machine Learning
定義了ml,老生常談了,跳過。
0.2?Methodology
整體總結的還是挺不錯的一張思維導圖。可以有許多方法將組成ML工作流的任務劃分為各個階段。但一般來說,基本步驟與上面的圖表相似。
0.3?Typical Tasks
0.4?Terminology
Feature: also known as Attribute/ Independent Variable/ Predictor/ Input Variable. It's an individual measurable property/characteristic of a phenomenon being observed [wiki]. The age of a person, etc.
Target: also known as Dependent Variable/ Response Variable/ Output Variable. It's the variable being predicted in supervised learning.
Algorithm: the specifific procedure used to implement a particular ML technique. Linear Regression, etc.
Model: the algorithm applied to a dataset, complete with its settings (its parameters). Y=4.5x+0.8, etc. We want the model that best captures the relationship between features and the target.
Supervised learning?: train the model with labeled data to generate reasonable predictions for the response to new data.
Unsupervised learning?: train the model with un-labeled data to fifind intrinsic structures/ patterns within the data.
Reinforcement learning: the model is learned from a series of actions by maximizing a reward function, which can either be maximized by penalizing bad actions and/or rewarding good actions. Self driving, etc.
老生常談了,不翻譯了。
一、Data Exploration
1.1 Variables
沒啥用,看爛了都。
1.2?Variable Identifification
定義:標識每個變量的數據類型。
注:實際上,由于各種原因,我們可能存在混合類型的變量。例如,在信用評分中,“未支付狀態”是一個通用變量,可以取值1、2、3,這意味著 客戶在他們的帳戶中錯過了1-3次付款.如果客戶違約,它也可以獲得D值。在數據清理的某些步驟之后,我們可能不得不轉換數據類型。
1.3?Univariate Analysis
單變量的描述性統計,給定了一個進行單變量分析的框架思路,挺好
下面是一些可以給出變量的基本統計信息的方法:
1.4?Bi-variate Analysis
兩個或多個變量之間的描述性統計。
Scatter Plot
Correlation Plot
Heat Map
散點圖,相關圖,熱力圖(也是相關性)
二、Feature Cleaning
2.1 Missing Values
Defifinition: no value is stored in a certain observation within a variable. 缺失值的定義
2.1.1 Why Missing Data Matters
當存在缺失值時,某些算法無法工作。
即使對于能夠處理丟失數據的算法,如果不進行處理,模型也會導致不準確的結論。
研究缺失數據對不同ML算法的影響:http://core.ecu.edu/omgt/krosj/IMDSDataMining2003.pdf
很不錯的一篇關于缺失值處理的綜述性質的文章,后續搬到專欄里去。
2.1.2 Missing Mechanisms [1]
理解數據集中缺失值丟失的原因對于缺失值的處理來說非常重要,我們要根據不同缺失值的缺失機制選擇不同的處理方法。
Missing Completely at Random
如果所有觀測值的缺失概率相同,則變量完全隨機丟失(MCAR)。當數據是完全隨機丟失的時候,數據丟失與數據集中的任何其他值(無論是觀測值還是缺失值)之間絕對沒有任何關系。換句話說,這些缺失的數據點是數據的隨機子集。
如果觀測值的缺失值屬于完全隨機丟失,那么忽略這些情況就不會使所做的推論產生偏差。
Missing at Random
當缺失值的傾向與觀測數據之間存在系統的關系時,就會出現隨機丟失(MAR)。換句話說,觀測丟失的概率僅取決于可用信息(數據集中的其他變量),而不取決于變量本身。
例如,如果男性比女性更有可能公開他們的體重,那么體重是MAR(基于可變的性別)。對于那些決定不披露體重的男性和女性,體重信息將隨機丟失。但是,由于男性更傾向于公開,女性會比男性產生更嚴重的缺失現象。
在上述情況下,如果我們決定繼續使用存在缺失值的特征,我們可能會受益于將性別納入控制缺失觀測值的權重偏差。
Missing Not At Random - Depends on Unobserved Predictors
缺失取決于未被記錄的信息,而這些信息也預測了缺失的值。例如,如果某一特定治療引起不適,患者更有可能退出研究(而“不適”沒有測量)。
在這種情況下,如果我們刪除那些缺失的情況,數據樣本將是有偏的。(比
如上面的例子,如果我么刪除缺失樣本則把引起不適的患者排除在建模樣本之外了)
Missing Not At Random - Depends on Missing Value Itself
缺失情況取決于(可能丟失)變量本身。例如,收入較高的人不太可能透露這些信息。
2.1.3 How to Assume a Missing Mechanism(重點干貨)
1、通過業務上的理解。在許多情況下,我們可以通過探究該變量背后的業務邏輯來判斷特征缺失的機制。(比如欺詐分子常常在一些重要的特征上缺失,則此時缺失值意味著重大的缺失嫌疑,這是從業務上去理解的一個例子)
2、通過統計檢驗。將數據集劃分為有/沒有缺失值的數據集,并執行t檢驗以查看是否存在顯著差異。如果有的話,我們可以假設缺失值不是隨機的。(這是個好辦法,不過也不一定要用到t檢驗,我們可以根據缺失特征對樣本分群后查看兩個數據集分布的差異,比如使用kaggle上的對抗性訓練的trick)
但我們應該記住,我們很難100%地確定數據是屬于上述的哪一種缺失的機制,因為未觀察到的預測因子(潛伏變量)是未觀察到的。
2.1.4 How to Handle Missing Data
考慮到下面的內容還是比較好的,手動放到excel表格翻譯。
在實際情況下,當難以確定缺失機制或幾乎沒有時間對每個缺失變量進行深入研究時,流行的方法是采用:
有些算法,如XGBoost,將丟失的數據處理集成到其模型構建過程中,因此您不需要執行該步驟。然而,重要的是要確保您了解算法如何對待它們,并向業務團隊解釋。
(補充:差評,居然沒有多重插補!《缺失值的靈活插補》,詳細介紹了缺失值處理的來龍去脈,相應的python library 在github上有,自己手寫實現也很簡單,后續搬到專欄里吧)
2.2 Outliers
定義:離群點是一種觀察,它與其他觀察結果有很大的偏差,從而引起人們懷疑它是由一種不同的機制產生的。[3]
注意:不同的情境下對于缺失值的處理是非常不同的。例如,信用卡上的不尋常交易通常是欺詐行為的標志,當一個人的身高達到1600厘米時,很可能是由于測量誤差,所以應該用其他的東西過濾掉或補充。
2.2.1 Why Outlier Matters
異常值的存在可能會使1、算法不能正常工作,2、將噪聲引入數據集,3、使樣本的代表性降低。
有些算法對異常值非常敏感,例如,adaboost可能將離群值視為一個困難樣本,并對異常值施加巨大的權重。因此,產生了一個泛化能力差的模型。任何依賴均值/方差的算法都對離群值敏感,因為這些統計量受極值的影響很大。另一方面,一些算法對離群點具有更強的魯棒性。例如,決策樹在創建樹的分支時往往忽略異常值的存在。通常情況下,樹是通過詢問變量x>=值t來劃分的,因此,異常值將落在分支的每一側,但它將被平等地視為其余的值,而不管 它的大小。
2.2.2 Outlier Detection
事實上,離群點分析和異常檢測是一個巨大的研究領域。Charu的書“Outlier Analysis”[4](目前學習翻譯中)為這個主題提供了一個很好的描述與學習。PyOD[5]是一個全面的Python工具包,包含該領域的許多高級方法。
這里列出的所有方法都是用于單變量異常點檢測的。多元孤立點檢測超出了本指南的范圍。(一般特征工程階段也比較少考慮多維的異常點檢測。。。因為太麻煩而復雜了)
下面列出了一些常見的簡單的單變量異常檢測,第一種相對來說最好,結合業務特征的理解,但是也最難,因為需要一定的業務經驗;第二種就是傳說中的均值+3倍標準差的方法,這種方法對于高斯分布的特征比較適合,不過均值和方差的計算會受到異常點的影響,這個其實問題不大,我們使用robust的均值和方差的計算方法就可以了,簡單來說就是畫圖然后把明顯特別極端的值刪除之后計算;那么這里就到了第三點了,IQR,其實就是boxplot的原理,25%和75%的分位數的均值的3倍作為上下限的范圍。最后一種中位數-方差法,為了第二種方法的敏感而存在的一種魯棒性的處理方案,均值用中位數代替。
但是,除了這些方法之外,更重要的是要記住,業務場景才是最最重要的!這回指導您如何定義和處理這些異常值。你的調查結果的意義應該參與到特征工程中來 而不是單純依賴于統計本身。
2.2.3 How to Handle Outliers
單變量異常值得處理和缺失值的處理非常類似,這里僅僅介紹一些新的。
離散化,這個在評分卡中很常用,缺失值和異常值直接放到一個單獨的箱里。
異常值的截斷或者降低帶有異常值的樣本的權重,具體可見:www.statisticshowto.datasciencecentral.com
處理數據中的異常值有許多策略,并且取決于業務場景和數據集,任何事情都可能是正確的,也可能是錯誤的。在決定離群點的性質之前,調查異常值的性質是很重要的。
2.3 Rare Values
定義:類別特征中出現次數很少的類別
注:在某些情況下,罕見的值(如異常值)可能包含有價值的數據集信息,因此需要特別注意。例如,交易中的罕見值可能表示欺詐(例如某些用戶使用了一些非常稀少的交易方式進行交易)
2.3.1 Why Rare Value Matters
1、分類變量中的稀有值往往會導致過度擬合,特別是在基于樹的方法中。
2、大量不常見的標簽增加了噪音,信息很少,因此導致了過度擬合。
3、罕見的標簽可能出現在訓練集,但沒有在測試集,因此導致過分適合的訓練集。
4、罕見的標簽可能出現在測試集,而不是在訓練集導致模型無法評估這樣的樣本
2.3.2 How to Handle Rare Value
眾數插補
把稀少的類別單獨合并為一類,比如合并為“others”,這也是kaggle上非常常用的操作手段。
視情況而定,我們可以采用不同的策略:
1、當變量中有一個占主導地位的類別(超過90%):觀察稀有變量與目標之間的關系時,要么放棄該變量,要么保持原樣。在這種情況下, 稀有變量通常對預測沒有幫助.
2、如果類別的數量很少,保持原樣。因為只有少數類別不太可能帶來大的噪音。
3、當有較高的基數時:嘗試上面表格中的兩種方法。但是它不能保證比原始變量獲得更好的結果。
2.4 High Cardinality
定義:高基數類別特征
2.4.1 Why High Cardinality Matters
1、類別太多的類別特征往往比只有少數標簽的變量有用,特別是在基于樹的算法中。
2、變量中的大量標簽可能會引入噪音,而且信息很少,從而使機器學習模型容易過度匹配。
3、有些標簽可能只存在于訓練數據集中,而不在測試集中,因此導致算法過度擬合訓練集。
4、新的標簽可能出現在測試集中,而訓練集中不存在,因此算法無法對新的觀察執行計算。
(基本和稀有類別類似)
2.4.2 How to Handle High Cardinality
根據業務理解合并、將稀少的類別合并為一個類別、使用離散化的方法對類別特征重新分箱成新的類別特征。
差評,居然沒有特征編碼!
實際上,特征編碼是處理高基數類別特征最常用的手段了,包括woe編碼、target 編碼甚至是簡單的count編碼,這些特征編碼的本質都是使用類別的統計特征來代替原始的類別,并且進行編碼之后實際上無形的進行了分箱,因為很多稀有類別的編碼結果是完全相同或者大體接近的,進行編碼之后然后重新進行分箱,這也是在比賽和工程上常見的一種操作。
三、Feature Engineering
3.1 Feature Scaling
特征標準化
3.1.1 Why Feature Scaling Matters
1、如果輸入范圍不同,某些算法無法正常工作比如邏輯回歸,神經網絡。
2、梯度下降的收斂速度會慢非常多甚至完全無法完成有效訓練。梯度下降是Logistic回歸、支持向量機、神經網絡等常用的優化算法。
3、涉及KNN、聚類等距離計算的算法也會受到特征大小的巨大巨大的影響
注意:基于樹的算法幾乎是唯一不受輸入大小影響的算法,我們可以很容易地從樹的構建方式中看出這一點。在決定如何分割時,樹 算法尋找諸如“是否特征值X>3.0”這樣的決策,并計算拆分后子節點的純度,因此特征的規模并沒啥影響。
3.1.2 How to Handle Feature Scaling
基本是最常見的一些方法了不做詳細介紹了。log變換以及log變換的爸爸box-cox變換也是常用的一種手段。
作者很貼心的比較了面對異常值時三種方法的表現:
正如我們所看到的,規范化-標準化和Min-max方法將把大部分數據壓縮到一個狹窄的范圍,而robust scaler在保持數據整體情況方面做得更好,盡管它不能從處理結果中移除異常值,但是請記住,清除/查找離群值是數據清理中的另一個主題,應該事先完成。(上訴三種標準化sklearn均有實現)
如何選擇特征縮放方法的經驗:
1、如果您的特性不是高斯型的,例如,有一個傾斜分布或有異常值,zscore的標準化不是一個好的選擇,因為它將把大多數數據壓縮到一個狹窄的范圍。
2、然而,我們可以將特征轉換為高斯類,然后使用規范化-標準化。這將在3.4節中討論。
3、在執行距離或協方差計算時(聚類、PCA和LDA等算法),最好采用規范化-標準化,因為它將消除尺度對方差和協方差的影響。具體可見:
https://blog.csdn.net/zbc1090549839/article/details/44103801
4、Min-MaxScaling有著與標準化相同的缺點,而且新的數據可能不會被限制到[0,1],因為它們可能超出了原來的范圍。一些算法,例如 深度蛇精網絡更喜歡限制在0-1的輸入,所以這是一個很好的選擇。
下面是有關此主題的一些附加資源。
1、通過對三種方法的比較,可以發現三種方法在面對分布偏移的變量的差異。https://scikit-learn.org/stable/auto_examples/preprocessing/plot_all_scaling.html#sphx-glr-auto-examples-preprocessing-plot-all-scaling-py
關于PowerTransformer 和QuantileTransformer 之前沒用過,后續添加進來;
2、http://sebastianraschka.com/Articles/2014_about_feature_scaling.html
關于標準化方法對pca的影響,后續研究降維算法系列的時候再看吧。
3.2 Discretize
定義:離散化的定義不用多說了。。資料太多了
3.2.1 Why Discretize Matters
1、通過將具有相似預測能力的相似屬性分組,幫助提高模型性能
2、引入非線性,提高了模型的擬合能力。(關于這一點之前寫過,具體的可百度,這里的非線性指的是離散化之后onehot從而引入非線性)
3、使用分組值增強可解釋性
4、大大降低異常值的影響;
5、降低過擬合
6、允許連續變量之間的特性交互(第3.5.5節)(變成離散特征之后可以像類別特征一樣交互)
3.2.2 How to Handle Discretization
具體的之前介紹離散化綜述的時候寫過,上面是一些比較常用的手段,sklearn和toad都有實現。
一般情況下,離散化方法沒有最佳選擇。它實際上取決于數據集和下面的學習算法。在決定之前,仔細研究一下你的特征和背景。你也可以嘗試不同的方法并比較模型的性能(一般 我就這么干。。。)。
3.3 Feature Encoding
3.3.1 Why Feature Encoding Matters
我們必須將分類變量字符串轉換為數字,以便算法能夠處理這些值。即使您看到一個算法可以接受分類輸入,最有可能的情況是 算法中包含了編碼過程。(lightgbm和catboost實際上在底層都進行了特征編碼,lgb用了梯度編碼,catboost則用了統計特征編碼,具體的后續看需要展開把,catboost還沒怎么深入研究過,不過datawhale有介紹,寫的還是很詳細的)
3.3.2 How to Handle Feature Encoding
在category_encoder的神庫中這些編碼方法均有實現,介紹和原理可見我之前總結的特征工程編碼的文章。
注:如果在線性回歸中使用獨熱編碼,則應保留k-1二進制變量,以避免多重共線性。對于任何在訓練過程中同時查看所有特性的算法來說,這都是正確的。包括支持向量機、神經網絡和聚類。另一方面,基于樹的算法需要整個集合。選擇最佳拆分的二進制變量則不需要這種處理。
(其實這種程度的共線性對模型影響不是特別大的)
注意:不建議在樹算法中使用一次熱編碼。一個熱點將導致分割高度不平衡(因為原始分類功能的每個標簽現在將是一個新的特征。) (E),結果是這兩個子節點的純度都不會有很好的提高。單一熱特征的預測能力將比原始特征弱,因為它們已被破壞。分成很多塊。
上述 關于為什么gbdt不適合onehot展開后的稀疏特征之前寫過具體可知乎搜索。
3.4 Feature Transformation
3.4.1 Why Feature Transformation Matters
3.4.1.1 Linear Assumption
Regression
線性回歸是根據不同的預測變量X1,X2,.Xn。它假定存在線性關系。在X(S)和Y之間數學上,我們可以把這個線性關系寫成Y≈β0+β1X1+β2X2+。。。。+βnXn。
Classifification
同樣,對于分類,Logistic回歸假設變量與概率的對數呈線性關系。
Odds = p / (1 - p), where p is the probability of y = 1
log(odds) = β0 + β1X1 + β2X2 + ... + βnXn
Why it's important to follow linear assumption
如果機器學習模型假設預測器xs與結果Y之間存在線性依賴關系,則當不存在這種線性關系時,這個模型的性能會很差。在這種情況下,我們最好嘗試另一個沒有這樣假設的(非線性)機器學習模型。
如果沒有線性關系,而且我們必須使用線性/Logistic回歸模型,那么數學變換/離散化可能有助于建立這種關系,盡管它不能保證 更好的效果。
3.4.1.2 Variable Distribution
Linear Regression Assumptions
線性回歸對預測變量X有以下假設:
1、與結果Y的線性關系
2、多元正態
3、無或小的多重共線性
4、同方差性,方差齊性
正態性假設意味著每個變量X都應服從高斯分布。
同步性,也稱為方差的同質性,描述了誤差項(即自變量之間的“噪聲”或隨機擾動)的一種情況。S(Xs)和因變量(Y)在自變量的所有值之間是相同的。
在同方差和/或正態假設(假設數據分布為主方差或高斯分布,而實際情況并非如此)中的違規行為可能導致模型性能較差。
剩下的機器學習模型,包括神經網絡、支持向量機、基于樹的方法和主成分分析(PCA),對自變量的分布不作任何假設。但是,在許多情況下,模型的性能可能受益于“類高斯”分布。
為什么模型會受益于“類高斯”分布?在具有正態分布的變量中,可以用來預測Y的X觀測值的變化范圍較大,即 X的值“散布”在更大的范圍內。
在上述情況下,原始變量的變換可以幫助該變量更多地呈現高斯分布的鐘形。
3.4.2 How to Handle Feature Transformation
我懷疑這篇文章的作者可能是個kaggle master
當應用于傾斜分布時,log轉換是有用的,因為它們傾向于擴展屬于波動較低范圍內的值,并且傾向于壓縮或減少波動較高的范圍,這有助于使傾斜分布盡可能地像正常分布一樣。
平方根變換在這個意義上做了類似的事情。
Box-Cox 變換,log變換屬于box-cox變換的一種特例,具體的后續展開,在前面的標準化方法里面有介紹,scipy和sklern中均有實現,包括Quantile transformation 后續具體展開介紹和原理研究。
我們可以用Q-Q圖來檢驗變量在變換后是否是正態分布的(理論分位數上的45度直線)。下面是一個例子,展示了skLearning的方格圖/Yeo-Johnson/分位數變換將數據從各種分布映射到正態分布的效果。https://scikit-learn.org/stable/auto_examples/preprocessing/plot_map_data_to_normal.html#sphx-glr-auto-examples-preprocessing-plot-map-data-to-normal-py
在“小”數據集(不足幾百點)上,quantile轉換器容易過度擬合。此時建議使用power變換。
3.5 Feature Generation
定義:以現有特性的組合創建新功能。這是將領域知識添加到DataSet中的一個很好的方法。
3.5.1 Missing Data Derived Feature
如第2.1節所述,我們可以創建新的二分類特征,表示原始特性上是否存在0/1值的缺失值。
3.5.2 Simple Statistical Derived Feature
通過對原始特性執行簡單的統計計算來創建新特性,包括
以呼叫日志為例,我們可以創建新的功能,如:呼叫次數、呼叫次數/呼叫輸出、平均呼叫持續時間、每月平均呼叫持續時間、最大呼叫持續時間等。
3.5.3 Feature Crossing
在有了一些簡單的統計衍生特征之后,我們可以把它們交叉在一起。用于交叉的通用特征包括:
時間、地區、商業類型等,當然遠不止如此
以呼叫日志為例,我們可以有交叉功能,例如:夜間/白天的呼叫次數,不同業務類型下的呼叫次數(銀行/出租車服務/旅行/醫院)。在過去3個月中調用的次數,等等。第3.5.2節中提到的許多統計計算可以再次用于創建更多的特性。
featuretools和tsfresh就是為了這種特征的交互產生新特征而設計的神庫,有空總結一下使用的心得。
3.5.4 Ratios and Proportions
普通的技巧。例如,為了預測分行信用卡銷售的未來表現信用卡銷售/銷售人員或信用卡銷售/營銷支出等比率將比僅使用在分行銷售的信用卡絕對數量更有力。
實際上我們可以將這種特征衍生的方法歸為連續特征的加減乘除中,一般來說,除是用的最多的。加減相對較少,因為不同尺度的特征加減基本沒有意義但是乘除就有意義了。
3.5.5 Cross Products between Categorical Features
類別特征交叉,實際上就是兩個兩個類別特征合并成一個新的類別特征,考慮到計算量的問題一般來說最多到二階交叉,特征交叉配合lgb處理類別特征的功能在工程實現上非常的簡單迅速,具體可見kaggle ieee中的經典代碼。
3.5.6 Polynomial Expansion
多項式特征,實際上就是連續特征的互相交互,具體可見sklearn中的 PolynomialFeatures,一般比較少用這個,暴力的特征交叉費時費力,很多時候效果也不一定好增加了太多工作量 ,但是不可否認在算力允許的條件下暴力并不是壞事。
3.5.7 Feature Learning by Trees
facebook的gbdt+lr的思路,當然sklearn中的rf的embedding也是實現一樣的功能不過實踐中gbdt+lr的效果往往好得多。
gbdt+lr的引入可以說是非常方便了,一方面通過gbdt引入了非線性大大提高了lr的表達能力(測試中基本二者表現能夠持平),另一方面引入了lr的可解釋性以及online learning的能力。
(gbdt本身的online learning 效果常常非常差)
3.5.8 Feature Learning by Deep Networks
從上面我們可以看到,手工生成特性需要付出很大的努力,而且可能不能保證良好的回報,特別是當我們有大量的特性需要處理時。用樹學習特征可以看作是自動創建特征的早期嘗試,隨著深度學習方法從2016年左右開始流行,它們也取得了一些成果。Cess在這一領域,如自動編碼器和RBM。他們被證明是以一種無人監督或半自理的方式自動地學習特征的抽象表示(一種壓縮形式),而這反過來又支持最先進的結果。在語音識別、圖像分類、目標識別等領域。然而,這些特征的可解釋性有限,深入學習需要更多的數據才能提取出高質量的結果。
這方面在三個比賽中嘗試過,有監督的dnn提取特征以及直接用autoencoder做特征提取,說老實話,在tabular結構化數據中的表現差強人意。
四、Feature Selection
定義:特征選擇是選擇相關特征的子集用于機器學習模型構建的過程。
數據越多,結果就越好,這并不總是事實。包含不相關的特性(那些對預測毫無幫助的特性)和冗余特性(在 )只會使學習過程不堪重負,容易導致過度適應。
通過特征選擇,我們可以:
1、簡化模型,使其易于解釋
2、較短的訓練時間和較小的計算費用
3、數據收集成本較低
4、避免維度的詛咒
5、減少過擬合增強泛化
我們應該記住,不同的特征子集為不同的算法提供了最佳的性能。因此,除了機器學習模型培訓之外,這不是一個單獨的過程。因此,如果 我們正在為線性模型選擇特征,最好使用針對這些模型的選擇程序,比如通過回歸系數或Lasso進行重要性選擇。如果我們選擇gbdt或者rf,最好使用樹派生的重要性。(非常重要!這實際上是很多人的誤區,這篇文章的作者說到我心坎里了)
后續沒有太多新的內容了,值得一提的是featurega是一個使用deap實現的基于遺傳算法的特征選擇庫,具體效果沒有實驗過,本質就是把每一個特征當做一個超參數,然后通過類似調參的方式來選擇最佳特征組合,具體的后續歸并到自動化機器學習的專欄里,遺傳算法說起來有太多的知識點要回歸了。
feature shufflling,代表性的就是permutation和null importance了之前基本介紹過了。
rfe遞歸特征消除,目前在相對可接受時間和計算復雜度內最好的特征選擇方法,缺點就是不適用于數據量非常大并且你的電腦性能比較差的情況。
干貨 很多,整體框架梳理的也比較好,雖然有一些知識點沒有介紹全,但是已經是很難得的總結文章了,給原作者點32個贊!
最后,附上英文原版全文鏈接:https://github.com/Yimeng-Zhang/feature-engineering-and-feature-selection。
備注:公眾號菜單包含了整理了一本AI小抄,非常適合在通勤路上用學習。
往期精彩回顧2019年公眾號文章精選適合初學者入門人工智能的路線及資料下載機器學習在線手冊深度學習在線手冊AI基礎下載(第一部分)備注:加入本站微信群或者qq群,請回復“加群”加入知識星球(4500+用戶,ID:92416895),請回復“知識星球”喜歡文章,點個在看
總結
以上是生活随笔為你收集整理的特征工程与特征选择架构性好文的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 玩转Python? 一文总结30种Pyt
- 下一篇: 【算法入门漫画】:“排序算法” 大总结