日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

特征工程与特征选择架构性好文

發(fā)布時間:2025/3/8 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 特征工程与特征选择架构性好文 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

作者:馬東什么

來源:https://zhuanlan.zhihu.com/

p/96420594

整理:深度傳送門

偶然看到的一篇好文,有一些部分講的不錯,分享一下。

特征工程和選擇是以最好的方式轉(zhuǎn)換數(shù)據(jù)的藝術(shù)/科學(xué),這涉及到領(lǐng)域?qū)iL、直覺和數(shù)學(xué)的優(yōu)雅融合。這是一本指南。供初學(xué)者參考,最簡單,但廣泛使用的技術(shù),為特征工程和選擇。歡迎任何意見和承諾。

零、Basic Concepts

0.1?What is Machine Learning

定義了ml,老生常談了,跳過。

0.2?Methodology

整體總結(jié)的還是挺不錯的一張思維導(dǎo)圖。

可以有許多方法將組成ML工作流的任務(wù)劃分為各個階段。但一般來說,基本步驟與上面的圖表相似。

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

定義:標(biāo)識每個變量的數(shù)據(jù)類型。

注:實際上,由于各種原因,我們可能存在混合類型的變量。例如,在信用評分中,“未支付狀態(tài)”是一個通用變量,可以取值1、2、3,這意味著 客戶在他們的帳戶中錯過了1-3次付款.如果客戶違約,它也可以獲得D值。在數(shù)據(jù)清理的某些步驟之后,我們可能不得不轉(zhuǎn)換數(shù)據(jù)類型。

1.3?Univariate Analysis

單變量的描述性統(tǒng)計,給定了一個進行單變量分析的框架思路,挺好

下面是一些可以給出變量的基本統(tǒng)計信息的方法:

1.4?Bi-variate Analysis

兩個或多個變量之間的描述性統(tǒng)計。

  • Scatter Plot

  • Correlation Plot

  • Heat Map

散點圖,相關(guān)圖,熱力圖(也是相關(guān)性)


二、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

  • 當(dāng)存在缺失值時,某些算法無法工作。

  • 即使對于能夠處理丟失數(shù)據(jù)的算法,如果不進行處理,模型也會導(dǎo)致不準(zhǔn)確的結(jié)論。

  • 研究缺失數(shù)據(jù)對不同ML算法的影響:http://core.ecu.edu/omgt/krosj/IMDSDataMining2003.pdf

    很不錯的一篇關(guān)于缺失值處理的綜述性質(zhì)的文章,后續(xù)搬到專欄里去。

    2.1.2 Missing Mechanisms [1]

    理解數(shù)據(jù)集中缺失值丟失的原因?qū)τ谌笔е档奶幚韥碚f非常重要,我們要根據(jù)不同缺失值的缺失機制選擇不同的處理方法。

    Missing Completely at Random

    如果所有觀測值的缺失概率相同,則變量完全隨機丟失(MCAR)。當(dāng)數(shù)據(jù)是完全隨機丟失的時候,數(shù)據(jù)丟失與數(shù)據(jù)集中的任何其他值(無論是觀測值還是缺失值)之間絕對沒有任何關(guān)系。換句話說,這些缺失的數(shù)據(jù)點是數(shù)據(jù)的隨機子集。

    如果觀測值的缺失值屬于完全隨機丟失,那么忽略這些情況就不會使所做的推論產(chǎn)生偏差。

    Missing at Random

    當(dāng)缺失值的傾向與觀測數(shù)據(jù)之間存在系統(tǒng)的關(guān)系時,就會出現(xiàn)隨機丟失(MAR)。換句話說,觀測丟失的概率僅取決于可用信息(數(shù)據(jù)集中的其他變量),而不取決于變量本身。

    例如,如果男性比女性更有可能公開他們的體重,那么體重是MAR(基于可變的性別)。對于那些決定不披露體重的男性和女性,體重信息將隨機丟失。但是,由于男性更傾向于公開,女性會比男性產(chǎn)生更嚴(yán)重的缺失現(xiàn)象。

    在上述情況下,如果我們決定繼續(xù)使用存在缺失值的特征,我們可能會受益于將性別納入控制缺失觀測值的權(quán)重偏差

    Missing Not At Random - Depends on Unobserved Predictors

    缺失取決于未被記錄的信息,而這些信息也預(yù)測了缺失的值。例如,如果某一特定治療引起不適,患者更有可能退出研究(而“不適”沒有測量)。

    在這種情況下,如果我們刪除那些缺失的情況,數(shù)據(jù)樣本將是有偏的。(比

    如上面的例子,如果我么刪除缺失樣本則把引起不適的患者排除在建模樣本之外了)

    Missing Not At Random - Depends on Missing Value Itself

    缺失情況取決于(可能丟失)變量本身。例如,收入較高的人不太可能透露這些信息。

    2.1.3 How to Assume a Missing Mechanism(重點干貨)

    1、通過業(yè)務(wù)上的理解。在許多情況下,我們可以通過探究該變量背后的業(yè)務(wù)邏輯來判斷特征缺失的機制。(比如欺詐分子常常在一些重要的特征上缺失,則此時缺失值意味著重大的缺失嫌疑,這是從業(yè)務(wù)上去理解的一個例子)

    2、通過統(tǒng)計檢驗。將數(shù)據(jù)集劃分為有/沒有缺失值的數(shù)據(jù)集,并執(zhí)行t檢驗以查看是否存在顯著差異。如果有的話,我們可以假設(shè)缺失值不是隨機的。(這是個好辦法,不過也不一定要用到t檢驗,我們可以根據(jù)缺失特征對樣本分群后查看兩個數(shù)據(jù)集分布的差異,比如使用kaggle上的對抗性訓(xùn)練的trick)

    但我們應(yīng)該記住,我們很難100%地確定數(shù)據(jù)是屬于上述的哪一種缺失的機制,因為未觀察到的預(yù)測因子(潛伏變量)是未觀察到的。

    2.1.4 How to Handle Missing Data

    考慮到下面的內(nèi)容還是比較好的,手動放到excel表格翻譯。

    在實際情況下,當(dāng)難以確定缺失機制或幾乎沒有時間對每個缺失變量進行深入研究時,流行的方法是采用:

    有些算法,如XGBoost,將丟失的數(shù)據(jù)處理集成到其模型構(gòu)建過程中,因此您不需要執(zhí)行該步驟。然而,重要的是要確保您了解算法如何對待它們,并向業(yè)務(wù)團隊解釋。

    (補充:差評,居然沒有多重插補!《缺失值的靈活插補》,詳細(xì)介紹了缺失值處理的來龍去脈,相應(yīng)的python library 在github上有,自己手寫實現(xiàn)也很簡單,后續(xù)搬到專欄里吧)


    2.2 Outliers

    定義:離群點是一種觀察,它與其他觀察結(jié)果有很大的偏差,從而引起人們懷疑它是由一種不同的機制產(chǎn)生的。[3]

    注意:不同的情境下對于缺失值的處理是非常不同的。例如,信用卡上的不尋常交易通常是欺詐行為的標(biāo)志,當(dāng)一個人的身高達到1600厘米時,很可能是由于測量誤差,所以應(yīng)該用其他的東西過濾掉或補充。

    2.2.1 Why Outlier Matters

    異常值的存在可能會使1、算法不能正常工作,2、將噪聲引入數(shù)據(jù)集,3、使樣本的代表性降低。

    有些算法對異常值非常敏感,例如,adaboost可能將離群值視為一個困難樣本,并對異常值施加巨大的權(quán)重。因此,產(chǎn)生了一個泛化能力差的模型。任何依賴均值/方差的算法都對離群值敏感,因為這些統(tǒng)計量受極值的影響很大。另一方面,一些算法對離群點具有更強的魯棒性。例如,決策樹在創(chuàng)建樹的分支時往往忽略異常值的存在。通常情況下,樹是通過詢問變量x>=值t來劃分的,因此,異常值將落在分支的每一側(cè),但它將被平等地視為其余的值,而不管 它的大小。

    2.2.2 Outlier Detection

    事實上,離群點分析和異常檢測是一個巨大的研究領(lǐng)域。Charu的書“Outlier Analysis”[4](目前學(xué)習(xí)翻譯中)為這個主題提供了一個很好的描述與學(xué)習(xí)。PyOD[5]是一個全面的Python工具包,包含該領(lǐng)域的許多高級方法。

    這里列出的所有方法都是用于單變量異常點檢測的。多元孤立點檢測超出了本指南的范圍。(一般特征工程階段也比較少考慮多維的異常點檢測。。。因為太麻煩而復(fù)雜了)

    下面列出了一些常見的簡單的單變量異常檢測,第一種相對來說最好,結(jié)合業(yè)務(wù)特征的理解,但是也最難,因為需要一定的業(yè)務(wù)經(jīng)驗;第二種就是傳說中的均值+3倍標(biāo)準(zhǔn)差的方法,這種方法對于高斯分布的特征比較適合,不過均值和方差的計算會受到異常點的影響,這個其實問題不大,我們使用robust的均值和方差的計算方法就可以了,簡單來說就是畫圖然后把明顯特別極端的值刪除之后計算;那么這里就到了第三點了,IQR,其實就是boxplot的原理,25%和75%的分位數(shù)的均值的3倍作為上下限的范圍。最后一種中位數(shù)-方差法,為了第二種方法的敏感而存在的一種魯棒性的處理方案,均值用中位數(shù)代替。

    但是,除了這些方法之外,更重要的是要記住,業(yè)務(wù)場景才是最最重要的!這回指導(dǎo)您如何定義和處理這些異常值。你的調(diào)查結(jié)果的意義應(yīng)該參與到特征工程中來 而不是單純依賴于統(tǒng)計本身。

    2.2.3 How to Handle Outliers

    單變量異常值得處理和缺失值的處理非常類似,這里僅僅介紹一些新的。

    離散化,這個在評分卡中很常用,缺失值和異常值直接放到一個單獨的箱里。

    異常值的截斷或者降低帶有異常值的樣本的權(quán)重,具體可見:www.statisticshowto.datasciencecentral.com

    處理數(shù)據(jù)中的異常值有許多策略,并且取決于業(yè)務(wù)場景和數(shù)據(jù)集,任何事情都可能是正確的,也可能是錯誤的。在決定離群點的性質(zhì)之前,調(diào)查異常值的性質(zhì)是很重要的。

    2.3 Rare Values

    定義:類別特征中出現(xiàn)次數(shù)很少的類別

    :在某些情況下,罕見的值(如異常值)可能包含有價值的數(shù)據(jù)集信息,因此需要特別注意。例如,交易中的罕見值可能表示欺詐(例如某些用戶使用了一些非常稀少的交易方式進行交易)

    2.3.1 Why Rare Value Matters

    1、分類變量中的稀有值往往會導(dǎo)致過度擬合,特別是在基于樹的方法中。

    2、大量不常見的標(biāo)簽增加了噪音,信息很少,因此導(dǎo)致了過度擬合。

    3、罕見的標(biāo)簽可能出現(xiàn)在訓(xùn)練集,但沒有在測試集,因此導(dǎo)致過分適合的訓(xùn)練集。

    4、罕見的標(biāo)簽可能出現(xiàn)在測試集,而不是在訓(xùn)練集導(dǎo)致模型無法評估這樣的樣本

    2.3.2 How to Handle Rare Value

    • 眾數(shù)插補

    • 把稀少的類別單獨合并為一類,比如合并為“others”,這也是kaggle上非常常用的操作手段。

    視情況而定,我們可以采用不同的策略:

    1、當(dāng)變量中有一個占主導(dǎo)地位的類別(超過90%):觀察稀有變量與目標(biāo)之間的關(guān)系時,要么放棄該變量,要么保持原樣。在這種情況下, 稀有變量通常對預(yù)測沒有幫助.

    2、如果類別的數(shù)量很少,保持原樣。因為只有少數(shù)類別不太可能帶來大的噪音。

    3、當(dāng)有較高的基數(shù)時:嘗試上面表格中的兩種方法。但是它不能保證比原始變量獲得更好的結(jié)果

    2.4 High Cardinality

    定義:高基數(shù)類別特征

    2.4.1 Why High Cardinality Matters

    1、類別太多的類別特征往往比只有少數(shù)標(biāo)簽的變量有用,特別是在基于樹的算法中。

    2、變量中的大量標(biāo)簽可能會引入噪音,而且信息很少,從而使機器學(xué)習(xí)模型容易過度匹配。

    3、有些標(biāo)簽可能只存在于訓(xùn)練數(shù)據(jù)集中,而不在測試集中,因此導(dǎo)致算法過度擬合訓(xùn)練集。

    4、新的標(biāo)簽可能出現(xiàn)在測試集中,而訓(xùn)練集中不存在,因此算法無法對新的觀察執(zhí)行計算。

    (基本和稀有類別類似)

    2.4.2 How to Handle High Cardinality

    根據(jù)業(yè)務(wù)理解合并、將稀少的類別合并為一個類別、使用離散化的方法對類別特征重新分箱成新的類別特征。

    差評,居然沒有特征編碼!

    實際上,特征編碼是處理高基數(shù)類別特征最常用的手段了,包括woe編碼、target 編碼甚至是簡單的count編碼,這些特征編碼的本質(zhì)都是使用類別的統(tǒng)計特征來代替原始的類別,并且進行編碼之后實際上無形的進行了分箱,因為很多稀有類別的編碼結(jié)果是完全相同或者大體接近的,進行編碼之后然后重新進行分箱,這也是在比賽和工程上常見的一種操作。

    三、Feature Engineering

    3.1 Feature Scaling

    特征標(biāo)準(zhǔn)化

    3.1.1 Why Feature Scaling Matters

    1、如果輸入范圍不同,某些算法無法正常工作比如邏輯回歸,神經(jīng)網(wǎng)絡(luò)。

    2、梯度下降的收斂速度會慢非常多甚至完全無法完成有效訓(xùn)練。梯度下降是Logistic回歸、支持向量機、神經(jīng)網(wǎng)絡(luò)等常用的優(yōu)化算法。

    3、涉及KNN、聚類等距離計算的算法也會受到特征大小的巨大巨大的影響

    注意:基于樹的算法幾乎是唯一不受輸入大小影響的算法,我們可以很容易地從樹的構(gòu)建方式中看出這一點。在決定如何分割時,樹 算法尋找諸如“是否特征值X>3.0”這樣的決策,并計算拆分后子節(jié)點的純度,因此特征的規(guī)模并沒啥影響。

    3.1.2 How to Handle Feature Scaling

    基本是最常見的一些方法了不做詳細(xì)介紹了。log變換以及l(fā)og變換的爸爸box-cox變換也是常用的一種手段。

    作者很貼心的比較了面對異常值時三種方法的表現(xiàn):

    正如我們所看到的,規(guī)范化-標(biāo)準(zhǔn)化和Min-max方法將把大部分?jǐn)?shù)據(jù)壓縮到一個狹窄的范圍,而robust scaler在保持?jǐn)?shù)據(jù)整體情況方面做得更好,盡管它不能從處理結(jié)果中移除異常值,但是請記住,清除/查找離群值是數(shù)據(jù)清理中的另一個主題,應(yīng)該事先完成。(上訴三種標(biāo)準(zhǔn)化sklearn均有實現(xiàn))

    如何選擇特征縮放方法的經(jīng)驗:

    1、如果您的特性不是高斯型的,例如,有一個傾斜分布或有異常值,zscore的標(biāo)準(zhǔn)化不是一個好的選擇,因為它將把大多數(shù)數(shù)據(jù)壓縮到一個狹窄的范圍。

    2、然而,我們可以將特征轉(zhuǎn)換為高斯類,然后使用規(guī)范化-標(biāo)準(zhǔn)化。這將在3.4節(jié)中討論。

    3、在執(zhí)行距離或協(xié)方差計算時(聚類、PCA和LDA等算法),最好采用規(guī)范化-標(biāo)準(zhǔn)化,因為它將消除尺度對方差和協(xié)方差的影響。具體可見:

    https://blog.csdn.net/zbc1090549839/article/details/44103801

    4、Min-MaxScaling有著與標(biāo)準(zhǔn)化相同的缺點,而且新的數(shù)據(jù)可能不會被限制到[0,1],因為它們可能超出了原來的范圍。一些算法,例如 深度蛇精網(wǎng)絡(luò)更喜歡限制在0-1的輸入,所以這是一個很好的選擇。

    下面是有關(guān)此主題的一些附加資源。

    1、通過對三種方法的比較,可以發(fā)現(xiàn)三種方法在面對分布偏移的變量的差異。https://scikit-learn.org/stable/auto_examples/preprocessing/plot_all_scaling.html#sphx-glr-auto-examples-preprocessing-plot-all-scaling-py

    關(guān)于PowerTransformer 和QuantileTransformer 之前沒用過,后續(xù)添加進來;

    2、http://sebastianraschka.com/Articles/2014_about_feature_scaling.html

    關(guān)于標(biāo)準(zhǔn)化方法對pca的影響,后續(xù)研究降維算法系列的時候再看吧。

    3.2 Discretize

    定義:離散化的定義不用多說了。。資料太多了

    3.2.1 Why Discretize Matters

    1、通過將具有相似預(yù)測能力的相似屬性分組,幫助提高模型性能

    2、引入非線性,提高了模型的擬合能力。(關(guān)于這一點之前寫過,具體的可百度,這里的非線性指的是離散化之后onehot從而引入非線性)

    3、使用分組值增強可解釋性

    4、大大降低異常值的影響;

    5、降低過擬合

    6、允許連續(xù)變量之間的特性交互(第3.5.5節(jié))(變成離散特征之后可以像類別特征一樣交互)

    3.2.2 How to Handle Discretization

    具體的之前介紹離散化綜述的時候?qū)戇^,上面是一些比較常用的手段,sklearn和toad都有實現(xiàn)。

    一般情況下,離散化方法沒有最佳選擇。它實際上取決于數(shù)據(jù)集和下面的學(xué)習(xí)算法。在決定之前,仔細(xì)研究一下你的特征和背景。你也可以嘗試不同的方法并比較模型的性能(一般 我就這么干。。。)。

    3.3 Feature Encoding

    3.3.1 Why Feature Encoding Matters

    我們必須將分類變量字符串轉(zhuǎn)換為數(shù)字,以便算法能夠處理這些值。即使您看到一個算法可以接受分類輸入,最有可能的情況是 算法中包含了編碼過程。(lightgbm和catboost實際上在底層都進行了特征編碼,lgb用了梯度編碼,catboost則用了統(tǒng)計特征編碼,具體的后續(xù)看需要展開把,catboost還沒怎么深入研究過,不過datawhale有介紹,寫的還是很詳細(xì)的)

    3.3.2 How to Handle Feature Encoding

    在category_encoder的神庫中這些編碼方法均有實現(xiàn),介紹和原理可見我之前總結(jié)的特征工程編碼的文章。

    注:如果在線性回歸中使用獨熱編碼,則應(yīng)保留k-1二進制變量,以避免多重共線性。對于任何在訓(xùn)練過程中同時查看所有特性的算法來說,這都是正確的。包括支持向量機、神經(jīng)網(wǎng)絡(luò)和聚類。另一方面,基于樹的算法需要整個集合。選擇最佳拆分的二進制變量則不需要這種處理。

    (其實這種程度的共線性對模型影響不是特別大的)

    注意:不建議在樹算法中使用一次熱編碼。一個熱點將導(dǎo)致分割高度不平衡(因為原始分類功能的每個標(biāo)簽現(xiàn)在將是一個新的特征。) (E),結(jié)果是這兩個子節(jié)點的純度都不會有很好的提高。單一熱特征的預(yù)測能力將比原始特征弱,因為它們已被破壞。分成很多塊。

    上述 關(guān)于為什么gbdt不適合onehot展開后的稀疏特征之前寫過具體可知乎搜索。

    3.4 Feature Transformation

    3.4.1 Why Feature Transformation Matters

    3.4.1.1 Linear Assumption

    Regression

    線性回歸是根據(jù)不同的預(yù)測變量X1,X2,.Xn。它假定存在線性關(guān)系。在X(S)和Y之間數(shù)學(xué)上,我們可以把這個線性關(guān)系寫成Y≈β0+β1X1+β2X2+。。。。+βnXn。

    Classifification

    同樣,對于分類,Logistic回歸假設(shè)變量與概率的對數(shù)呈線性關(guān)系。

    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

    如果機器學(xué)習(xí)模型假設(shè)預(yù)測器xs與結(jié)果Y之間存在線性依賴關(guān)系,則當(dāng)不存在這種線性關(guān)系時,這個模型的性能會很差。在這種情況下,我們最好嘗試另一個沒有這樣假設(shè)的(非線性)機器學(xué)習(xí)模型。

    如果沒有線性關(guān)系,而且我們必須使用線性/Logistic回歸模型,那么數(shù)學(xué)變換/離散化可能有助于建立這種關(guān)系,盡管它不能保證 更好的效果

    3.4.1.2 Variable Distribution

    Linear Regression Assumptions

    線性回歸對預(yù)測變量X有以下假設(shè):

    1、與結(jié)果Y的線性關(guān)系

    2、多元正態(tài)

    3、無或小的多重共線性

    4、同方差性,方差齊性

    正態(tài)性假設(shè)意味著每個變量X都應(yīng)服從高斯分布。

    同步性,也稱為方差的同質(zhì)性,描述了誤差項(即自變量之間的“噪聲”或隨機擾動)的一種情況。S(Xs)和因變量(Y)在自變量的所有值之間是相同的。

    在同方差和/或正態(tài)假設(shè)(假設(shè)數(shù)據(jù)分布為主方差或高斯分布,而實際情況并非如此)中的違規(guī)行為可能導(dǎo)致模型性能較差。

    剩下的機器學(xué)習(xí)模型,包括神經(jīng)網(wǎng)絡(luò)、支持向量機、基于樹的方法和主成分分析(PCA),對自變量的分布不作任何假設(shè)。但是,在許多情況下,模型的性能可能受益于“類高斯”分布

    為什么模型會受益于“類高斯”分布?在具有正態(tài)分布的變量中,可以用來預(yù)測Y的X觀測值的變化范圍較大,即 X的值“散布”在更大的范圍內(nèi)。

    在上述情況下,原始變量的變換可以幫助該變量更多地呈現(xiàn)高斯分布的鐘形


    3.4.2 How to Handle Feature Transformation

    我懷疑這篇文章的作者可能是個kaggle master

    當(dāng)應(yīng)用于傾斜分布時,log轉(zhuǎn)換是有用的,因為它們傾向于擴展屬于波動較低范圍內(nèi)的值,并且傾向于壓縮或減少波動較高的范圍,這有助于使傾斜分布盡可能地像正常分布一樣。

    平方根變換在這個意義上做了類似的事情。

    Box-Cox 變換,log變換屬于box-cox變換的一種特例,具體的后續(xù)展開,在前面的標(biāo)準(zhǔn)化方法里面有介紹,scipy和sklern中均有實現(xiàn),包括Quantile transformation 后續(xù)具體展開介紹和原理研究。

    我們可以用Q-Q圖來檢驗變量在變換后是否是正態(tài)分布的(理論分位數(shù)上的45度直線)。下面是一個例子,展示了skLearning的方格圖/Yeo-Johnson/分位數(shù)變換將數(shù)據(jù)從各種分布映射到正態(tài)分布的效果。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

    在“小”數(shù)據(jù)集(不足幾百點)上,quantile轉(zhuǎn)換器容易過度擬合。此時建議使用power變換。


    3.5 Feature Generation

    定義:以現(xiàn)有特性的組合創(chuàng)建新功能。這是將領(lǐng)域知識添加到DataSet中的一個很好的方法。

    3.5.1 Missing Data Derived Feature

    如第2.1節(jié)所述,我們可以創(chuàng)建新的二分類特征,表示原始特性上是否存在0/1值的缺失值。

    3.5.2 Simple Statistical Derived Feature

    通過對原始特性執(zhí)行簡單的統(tǒng)計計算來創(chuàng)建新特性,包括

    以呼叫日志為例,我們可以創(chuàng)建新的功能,如:呼叫次數(shù)、呼叫次數(shù)/呼叫輸出、平均呼叫持續(xù)時間、每月平均呼叫持續(xù)時間、最大呼叫持續(xù)時間等。

    3.5.3 Feature Crossing

    在有了一些簡單的統(tǒng)計衍生特征之后,我們可以把它們交叉在一起。用于交叉的通用特征包括:

    時間、地區(qū)、商業(yè)類型等,當(dāng)然遠(yuǎn)不止如此

    以呼叫日志為例,我們可以有交叉功能,例如:夜間/白天的呼叫次數(shù),不同業(yè)務(wù)類型下的呼叫次數(shù)(銀行/出租車服務(wù)/旅行/醫(yī)院)。在過去3個月中調(diào)用的次數(shù),等等。第3.5.2節(jié)中提到的許多統(tǒng)計計算可以再次用于創(chuàng)建更多的特性。

    featuretools和tsfresh就是為了這種特征的交互產(chǎn)生新特征而設(shè)計的神庫,有空總結(jié)一下使用的心得。

    3.5.4 Ratios and Proportions

    普通的技巧。例如,為了預(yù)測分行信用卡銷售的未來表現(xiàn)信用卡銷售/銷售人員或信用卡銷售/營銷支出等比率將比僅使用在分行銷售的信用卡絕對數(shù)量更有力。

    實際上我們可以將這種特征衍生的方法歸為連續(xù)特征的加減乘除中,一般來說,除是用的最多的。加減相對較少,因為不同尺度的特征加減基本沒有意義但是乘除就有意義了。

    3.5.5 Cross Products between Categorical Features

    類別特征交叉,實際上就是兩個兩個類別特征合并成一個新的類別特征,考慮到計算量的問題一般來說最多到二階交叉,特征交叉配合lgb處理類別特征的功能在工程實現(xiàn)上非常的簡單迅速,具體可見kaggle ieee中的經(jīng)典代碼。

    3.5.6 Polynomial Expansion

    多項式特征,實際上就是連續(xù)特征的互相交互,具體可見sklearn中的 PolynomialFeatures,一般比較少用這個,暴力的特征交叉費時費力,很多時候效果也不一定好增加了太多工作量 ,但是不可否認(rèn)在算力允許的條件下暴力并不是壞事。

    3.5.7 Feature Learning by Trees

    facebook的gbdt+lr的思路,當(dāng)然sklearn中的rf的embedding也是實現(xiàn)一樣的功能不過實踐中g(shù)bdt+lr的效果往往好得多。

    gbdt+lr的引入可以說是非常方便了,一方面通過gbdt引入了非線性大大提高了lr的表達能力(測試中基本二者表現(xiàn)能夠持平),另一方面引入了lr的可解釋性以及online learning的能力。

    (gbdt本身的online learning 效果常常非常差)

    3.5.8 Feature Learning by Deep Networks

    從上面我們可以看到,手工生成特性需要付出很大的努力,而且可能不能保證良好的回報,特別是當(dāng)我們有大量的特性需要處理時。用樹學(xué)習(xí)特征可以看作是自動創(chuàng)建特征的早期嘗試,隨著深度學(xué)習(xí)方法從2016年左右開始流行,它們也取得了一些成果。Cess在這一領(lǐng)域,如自動編碼器和RBM。他們被證明是以一種無人監(jiān)督或半自理的方式自動地學(xué)習(xí)特征的抽象表示(一種壓縮形式),而這反過來又支持最先進的結(jié)果。在語音識別、圖像分類、目標(biāo)識別等領(lǐng)域。然而,這些特征的可解釋性有限,深入學(xué)習(xí)需要更多的數(shù)據(jù)才能提取出高質(zhì)量的結(jié)果。

    這方面在三個比賽中嘗試過,有監(jiān)督的dnn提取特征以及直接用autoencoder做特征提取,說老實話,在tabular結(jié)構(gòu)化數(shù)據(jù)中的表現(xiàn)差強人意。

    四、Feature Selection

    定義:特征選擇是選擇相關(guān)特征的子集用于機器學(xué)習(xí)模型構(gòu)建的過程。

    數(shù)據(jù)越多,結(jié)果就越好,這并不總是事實。包含不相關(guān)的特性(那些對預(yù)測毫無幫助的特性)和冗余特性(在 )只會使學(xué)習(xí)過程不堪重負(fù),容易導(dǎo)致過度適應(yīng)。

    通過特征選擇,我們可以:

    1、簡化模型,使其易于解釋

    2、較短的訓(xùn)練時間和較小的計算費用

    3、數(shù)據(jù)收集成本較低

    4、避免維度的詛咒

    5、減少過擬合增強泛化


    我們應(yīng)該記住,不同的特征子集為不同的算法提供了最佳的性能。因此,除了機器學(xué)習(xí)模型培訓(xùn)之外,這不是一個單獨的過程。因此,如果 我們正在為線性模型選擇特征,最好使用針對這些模型的選擇程序,比如通過回歸系數(shù)或Lasso進行重要性選擇。如果我們選擇gbdt或者rf,最好使用樹派生的重要性。(非常重要!這實際上是很多人的誤區(qū),這篇文章的作者說到我心坎里了)

    后續(xù)沒有太多新的內(nèi)容了,值得一提的是featurega是一個使用deap實現(xiàn)的基于遺傳算法的特征選擇庫,具體效果沒有實驗過,本質(zhì)就是把每一個特征當(dāng)做一個超參數(shù),然后通過類似調(diào)參的方式來選擇最佳特征組合,具體的后續(xù)歸并到自動化機器學(xué)習(xí)的專欄里,遺傳算法說起來有太多的知識點要回歸了。

    feature shufflling,代表性的就是permutation和null importance了之前基本介紹過了。

    rfe遞歸特征消除,目前在相對可接受時間和計算復(fù)雜度內(nèi)最好的特征選擇方法,缺點就是不適用于數(shù)據(jù)量非常大并且你的電腦性能比較差的情況。

    干貨 很多,整體框架梳理的也比較好,雖然有一些知識點沒有介紹全,但是已經(jīng)是很難得的總結(jié)文章了,給原作者點32個贊!

    最后,附上英文原版全文鏈接:https://github.com/Yimeng-Zhang/feature-engineering-and-feature-selection。

    備注:公眾號菜單包含了整理了一本AI小抄非常適合在通勤路上用學(xué)習(xí)

    往期精彩回顧2019年公眾號文章精選適合初學(xué)者入門人工智能的路線及資料下載機器學(xué)習(xí)在線手冊深度學(xué)習(xí)在線手冊AI基礎(chǔ)下載(第一部分)備注:加入本站微信群或者qq群,請回復(fù)“加群”加入知識星球(4500+用戶,ID:92416895),請回復(fù)“知識星球”

    喜歡文章,點個在看

    總結(jié)

    以上是生活随笔為你收集整理的特征工程与特征选择架构性好文的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。