<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          萬字長文講解如何做特征工程

          共 8252字,需瀏覽 17分鐘

           ·

          2022-06-12 14:42

          點擊下方卡片,關(guān)注“新機(jī)器視覺”公眾號

          重磅干貨,第一時間送達(dá)

          特征工程是數(shù)據(jù)分析中最耗時間和精力的一部分工作,它不像算法和模型那樣是確定的步驟,更多是工程上的經(jīng)驗和權(quán)衡。因此沒有統(tǒng)一的方法。這里只是對一些常用的方法做一個總結(jié)。本文關(guān)注于特征選擇部分。后面還有兩篇會關(guān)注于特征表達(dá)和特征預(yù)處理。


          一、特征選擇

          1. 特征的來源

          在做數(shù)據(jù)分析的時候,特征的來源一般有兩塊,一塊是業(yè)務(wù)已經(jīng)整理好各種特征數(shù)據(jù),我們需要去找出適合我們問題需要的特征;另一塊是我們從業(yè)務(wù)特征中自己去尋找高級數(shù)據(jù)特征。我們就針對這兩部分來分別討論。

          2. 選擇合適的特征

          我們首先看當(dāng)業(yè)務(wù)已經(jīng)整理好各種特征數(shù)據(jù)時,我們?nèi)绾稳フ页鲞m合我們問題需要的特征,此時特征數(shù)可能成百上千,哪些才是我們需要的呢?

          第一步是找到該領(lǐng)域懂業(yè)務(wù)的專家,讓他們給一些建議。比如我們需要解決一個藥品療效的分類問題,那么先找到領(lǐng)域?qū)<遥蛩麄冏稍兡男┮蛩兀ㄌ卣鳎υ撍幤返寞熜Мa(chǎn)生影響,較大影響的和較小影響的都要。這些特征就是我們的特征的第一候選集。

          這個特征集合有時候也可能很大,在嘗試降維之前,我們有必要用特征工程的方法去選擇出較重要的特征結(jié)合,這些方法不會用到領(lǐng)域知識,而僅僅是統(tǒng)計學(xué)的方法。

          最簡單的方法就是方差篩選。方差越大的特征,那么我們可以認(rèn)為它是比較有用的。如果方差較小,比如小于1,那么這個特征可能對我們的算法作用沒有那么大。最極端的,如果某個特征方差為0,即所有的樣本該特征的取值都是一樣的,那么它對我們的模型訓(xùn)練沒有任何作用,可以直接舍棄。在實際應(yīng)用中,我們會指定一個方差的閾值,當(dāng)方差小于這個閾值的特征會被我們篩掉。sklearn中的VarianceThreshold類可以很方便的完成這個工作。

          特征選擇方法有很多,一般分為三類:第一類過濾法比較簡單,它按照特征的發(fā)散性或者相關(guān)性指標(biāo)對各個特征進(jìn)行評分,設(shè)定評分閾值或者待選擇閾值的個數(shù),選擇合適特征。上面我們提到的方差篩選就是過濾法的一種。第二類是包裝法,根據(jù)目標(biāo)函數(shù),通常是預(yù)測效果評分,每次選擇部分特征,或者排除部分特征。第三類嵌入法則稍微復(fù)雜一點,它先使用某些機(jī)器學(xué)習(xí)的算法和模型進(jìn)行訓(xùn)練,得到各個特征的權(quán)值系數(shù),根據(jù)權(quán)值系數(shù)從大到小來選擇特征。類似于過濾法,但是它是通過機(jī)器學(xué)習(xí)訓(xùn)練來確定特征的優(yōu)劣,而不是直接從特征的一些統(tǒng)計學(xué)指標(biāo)來確定特征的優(yōu)劣。下面我們分別來看看3類方法。

          2.1 過濾法選擇特征

          上面我們已經(jīng)講到了使用特征方差來過濾選擇特征的過程。除了特征的方差這第一種方法,還有其他一些統(tǒng)計學(xué)指標(biāo)可以使用。

          第二個可以使用的是相關(guān)系數(shù)。這個主要用于輸出連續(xù)值的監(jiān)督學(xué)習(xí)算法中。我們分別計算所有訓(xùn)練集中各個特征與輸出值之間的相關(guān)系數(shù),設(shè)定一個閾值,選擇相關(guān)系數(shù)較大的部分特征。

          第三個可以使用的是假設(shè)檢驗,比如卡方檢驗。卡方檢驗可以檢驗?zāi)硞€特征分布和輸出值分布之間的相關(guān)性。個人覺得它比比粗暴的方差法好用。如果大家對卡方檢驗不熟悉,可以參看這篇卡方檢驗原理及應(yīng)用,這里就不展開了。在sklearn中,可以使用chi2這個類來做卡方檢驗得到所有特征的卡方值與顯著性水平P臨界值,我們可以給定卡方值閾值, 選擇卡方值較大的部分特征。

          除了卡方檢驗,我們還可以使用F檢驗和t檢驗,它們都是使用假設(shè)檢驗的方法,只是使用的統(tǒng)計分布不是卡方分布,而是F分布和t分布而已。在sklearn中,有F檢驗的函數(shù)fclassif和fregression,分別在分類和回歸特征選擇時使用。

          第四個是互信息,即從信息熵的角度分析各個特征和輸出值之間的關(guān)系評分。在決策樹算法中我們講到過互信息(信息增益)。互信息值越大,說明該特征和輸出值之間的相關(guān)性越大,越需要保留。在sklearn中,可以使用mutualinfoclassif(分類)和mutualinforegression(回歸)來計算各個輸入特征和輸出值之間的互信息。

          以上就是過濾法的主要方法,個人經(jīng)驗是,在沒有什么思路的 時候,可以優(yōu)先使用卡方檢驗和互信息來做特征選擇

          2.2 包裝法選擇特征

          包裝法的解決思路沒有過濾法這么直接,它會選擇一個目標(biāo)函數(shù)來一步步的篩選特征。

          最常用的包裝法是遞歸消除特征法(recursive feature elimination,以下簡稱RFE)。遞歸消除特征法使用一個機(jī)器學(xué)習(xí)模型來進(jìn)行多輪訓(xùn)練,每輪訓(xùn)練后,消除若干權(quán)值系數(shù)的對應(yīng)的特征,再基于新的特征集進(jìn)行下一輪訓(xùn)練。在sklearn中,可以使用RFE函數(shù)來選擇特征。

          我們下面以經(jīng)典的SVM-RFE算法來討論這個特征選擇的思路。這個算法以支持向量機(jī)來做RFE的機(jī)器學(xué)習(xí)模型選擇特征。它在第一輪訓(xùn)練的時候,會選擇所有的特征來訓(xùn)練,得到了分類的超平面wx˙+b=0后,如果有n個特征,那么RFE-SVM會選擇出w中分量的平方值w2i最小的那個序號i對應(yīng)的特征,將其排除,在第二類的時候,特征數(shù)就剩下n-1個了,我們繼續(xù)用這n-1個特征和輸出值來訓(xùn)練SVM,同樣的,去掉w2i最小的那個序號i對應(yīng)的特征。以此類推,直到剩下的特征數(shù)滿足我們的需求為止。

          2.3 嵌入法選擇特征

          嵌入法也是用機(jī)器學(xué)習(xí)的方法來選擇特征,但是它和RFE的區(qū)別是它不是通過不停的篩掉特征來進(jìn)行訓(xùn)練,而是使用的都是特征全集。在sklearn中,使用SelectFromModel函數(shù)來選擇特征。

          最常用的是使用L1正則化和L2正則化來選擇特征。在之前講到的用scikit-learn和pandas學(xué)習(xí)Ridge回歸第6節(jié)中,我們講到正則化懲罰項越大,那么模型的系數(shù)就會越小。當(dāng)正則化懲罰項大到一定的程度的時候,部分特征系數(shù)會變成0,當(dāng)正則化懲罰項繼續(xù)增大到一定程度時,所有的特征系數(shù)都會趨于0. 但是我們會發(fā)現(xiàn)一部分特征系數(shù)會更容易先變成0,這部分系數(shù)就是可以篩掉的。也就是說,我們選擇特征系數(shù)較大的特征。常用的L1正則化和L2正則化來選擇特征的基學(xué)習(xí)器是邏輯回歸。

          此外也可以使用決策樹或者GBDT。那么是不是所有的機(jī)器學(xué)習(xí)方法都可以作為嵌入法的基學(xué)習(xí)器呢?也不是,一般來說,可以得到特征系數(shù)coef或者可以得到特征重要度(feature importances)的算法才可以做為嵌入法的基學(xué)習(xí)器。

          3.尋找高級特征

          在我們拿到已有的特征后,我們還可以根據(jù)需要尋找到更多的高級特征。比如有車的路程特征和時間間隔特征,我們就可以得到車的平均速度這個二級特征。根據(jù)車的速度特征,我們就可以得到車的加速度這個三級特征,根據(jù)車的加速度特征,我們就可以得到車的加加速度這個四級特征。。。也就是說,高級特征可以一直尋找下去。

          在Kaggle之類的算法競賽中,高分團(tuán)隊主要使用的方法除了集成學(xué)習(xí)算法,剩下的主要就是在高級特征上面做文章。所以尋找高級特征是模型優(yōu)化的必要步驟之一。當(dāng)然,在第一次建立模型的時候,我們可以先不尋找高級特征,得到以后基準(zhǔn)模型后,再尋找高級特征進(jìn)行優(yōu)化。

          尋找高級特征最常用的方法有:

          • 若干項特征加和:我們假設(shè)你希望根據(jù)每日銷售額得到一周銷售額的特征。你可以將最近的7天的銷售額相加得到。

          • 若干項特征之差:假設(shè)你已經(jīng)擁有每周銷售額以及每月銷售額兩項特征,可以求一周前一月內(nèi)的銷售額。

          • 若干項特征乘積:假設(shè)你有商品價格和商品銷量的特征,那么就可以得到銷售額的特征。

          • 若干項特征除商:假設(shè)你有每個用戶的銷售額和購買的商品件數(shù),那么就是得到該用戶平均每件商品的銷售額。

          當(dāng)然,尋找高級特征的方法遠(yuǎn)不止于此,它需要你根據(jù)你的業(yè)務(wù)和模型需要而得,而不是隨便的兩兩組合形成高級特征,這樣容易導(dǎo)致特征爆炸,反而沒有辦法得到較好的模型。個人經(jīng)驗是,聚類的時候高級特征盡量少一點,分類回歸的時候高級特征適度的多一點。

          4. 特征選擇小結(jié)

          特征選擇是特征工程的第一步,它關(guān)系到我們機(jī)器學(xué)習(xí)算法的上限。因此原則是盡量不錯過一個可能有用的特征,但是也不濫用太多的特征。

          二、特征表達(dá)

          1. 缺失值處理

          特征有缺失值是非常常見的,大部分機(jī)器學(xué)習(xí)模型在擬合前需要所有的特征都有值,不能是空或者NULL。那么如果有缺失值我們需要怎么處理呢?

          首先我們會看是該特征是連續(xù)值還是離散值。如果是連續(xù)值,那么一般有兩種選擇,一是選擇所有有該特征值的樣本,然后取平均值,來填充缺失值,另一種是取中位數(shù)來填充缺失值。如果是離散值,則一般會選擇所有有該特征值的樣本中最頻繁出現(xiàn)的類別值,來填充缺失值。在sklearn中,可以使用preprocessing.Imputer來選擇這三種不同的處理邏輯做預(yù)處理。

          2. 特殊的特征處理

          有些特征的默認(rèn)取值比較特殊,一般需要做了處理后才能用于算法。比如日期時間,比如顯示20180519,這樣的值一般沒辦法直接使用。那么一般需要如何變換呢?

          對于時間原始特征,處理方法有很多,這里只舉例幾種有代表性的方法。 第一種是使用連續(xù)的時間差值法,即計算出所有樣本的時間到某一個未來時間之間的數(shù)值差距,這樣這個差距是UTC的時間差,從而將時間特征轉(zhuǎn)化為連續(xù)值。第二種方法是根據(jù)時間所在的年,月,日,星期幾,小時數(shù),將一個時間特征轉(zhuǎn)化為若干個離散特征,這種方法在分析具有明顯時間趨勢的問題比較好用。第三種是權(quán)重法,即根據(jù)時間的新舊得到一個權(quán)重值。比如對于商品,三個月前購買的設(shè)置一個較低的權(quán)重,最近三天購買的設(shè)置一個中等的權(quán)重,在三個月內(nèi)但是三天前的設(shè)置一個較大的權(quán)重。當(dāng)然,還有其他的設(shè)置權(quán)重的方法,這個要根據(jù)要解決的問題來靈活確定。

          對地理特征,比如“廣州市天河區(qū)XX街道XX號”,這樣的特征我們應(yīng)該如何使用呢?處理成離散值和連續(xù)值都是可以的。如果是處理成離散值,則需要轉(zhuǎn)化為多個離散特征,比如城市名特征,區(qū)縣特征,街道特征等。但是如果我們需要判斷用戶分布區(qū)域,則一般處理成連續(xù)值會比較好,這時可以將地址處理成經(jīng)度和緯度的連續(xù)特征。

          3. 離散特征的連續(xù)化處理

          有很多機(jī)器學(xué)習(xí)算法只能處理連續(xù)值特征,不能處理離散值特征,比如線性回歸,邏輯回歸等。那么想使用邏輯回歸,線性回歸時這些值只能丟棄嗎?當(dāng)然不是。我們可以將離散特征連續(xù)化處理。

          最常見的離散特征連續(xù)化的處理方法是獨熱編碼one-hot encoding。處理方法其實比較簡單,比如某特征的取值是高,中和低,那么我們就可以創(chuàng)建三個取值為0或者1的特征,將高編碼為1,0,0這樣三個特征,中編碼為0,1,0這樣三個特征,低編碼為0,0,1這樣三個特征。也就是說,之前的一個特征被我們轉(zhuǎn)化為了三個特征。sklearn的OneHotEncoder可以幫我們做這個處理。

          第二個方法是特征嵌入embedding。這個一般用于深度學(xué)習(xí)中。比如對于用戶的ID這個特征,如果要使用獨熱編碼,則維度會爆炸,如果使用特征嵌入就維度低很多了。對于每個要嵌入的特征,我們會有一個特征嵌入矩陣,這個矩陣的行很大,對應(yīng)我們該特征的數(shù)目。比如用戶ID,如果有100萬個,那么嵌入的特征矩陣的行就是100萬。但是列一般比較小,比如可以取20。這樣每個用戶ID就轉(zhuǎn)化為了一個20維的特征向量。進(jìn)而參與深度學(xué)習(xí)模型。在tensorflow中,我們可以先隨機(jī)初始化一個特征嵌入矩陣,對于每個用戶,可以用tf.nn.embedding_lookup找到該用戶的特征嵌入向量。特征嵌入矩陣會在反向傳播的迭代中優(yōu)化。

          此外,在自然語言處理中,我們也可以用word2vec將詞轉(zhuǎn)化為詞向量,進(jìn)而可以進(jìn)行一些連續(xù)值的后繼處理。

          4. 離散特征的離散化處理

          離散特征有時間也不能直接使用,需要先進(jìn)行轉(zhuǎn)化。比如最常見的,如果特征的取值是高,中和低,那么就算你需要的是離散值,也是沒法直接使用的。

          對于原始的離散值特征,最常用的方法也是獨熱編碼,方法在第三節(jié)已經(jīng)講到。

          第二種方法是虛擬編碼dummy coding,它和獨熱編碼類似,但是它的特點是,如果我們的特征有N個取值,它只需要N-1個新的0,1特征來代替,而獨熱編碼會用N個新特征代替。比如一個特征的取值是高,中和低,那么我們只需要兩位編碼,比如只編碼中和低,如果是1,0則是中,0,1則是低。0,0則是高了。目前虛擬編碼使用的沒有獨熱編碼廣,因此一般有需要的話還是使用獨熱編碼比較好。

          此外,有時候我們可以對特征進(jìn)行研究后做一個更好的處理。比如,我們研究商品的銷量對應(yīng)的特征。里面有一個原始特征是季節(jié)春夏秋冬。我們可以將其轉(zhuǎn)化為淡季和旺季這樣的二值特征,方便建模。當(dāng)然有時候轉(zhuǎn)化為三值特征或者四值特征也是可以的。

          對于分類問題的特征輸出,我們一般需要用sklearn的LabelEncoder將其轉(zhuǎn)化為0,1,2,...這樣的類別標(biāo)簽值。

          5. 連續(xù)特征的離散化處理

          對于連續(xù)特征,有時候我們也可以將其做離散化處理。這樣特征變得高維稀疏,方便一些算法的處理。

          對常用的方法是根據(jù)閾值進(jìn)行分組,比如我們根據(jù)連續(xù)值特征的分位數(shù),將該特征分為高,中和低三個特征。將分位數(shù)從0-0.3的設(shè)置為高,0.3-0.7的設(shè)置為中,0.7-1的設(shè)置為高。

          當(dāng)然還有高級一些的方法。比如使用GBDT。在LR+GBDT的經(jīng)典模型中,就是使用GDBT來先將連續(xù)值轉(zhuǎn)化為離散值。那么如何轉(zhuǎn)化呢?比如我們用訓(xùn)練集的所有連續(xù)值和標(biāo)簽輸出來訓(xùn)練GBDT,最后得到的GBDT模型有兩顆決策樹,第一顆決策樹有三個葉子節(jié)點,第二顆決策樹有4個葉子節(jié)點。如果某一個樣本在第一顆決策樹會落在第二個葉子節(jié)點,在第二顆決策樹落在第4顆葉子節(jié)點,那么它的編碼就是0,1,0,0,0,0,1,一共七個離散特征,其中會有兩個取值為1的位置,分別對應(yīng)每顆決策樹中樣本落點的位置。在sklearn中,我們可以用GradientBoostingClassifier的 apply方法很方便的得到樣本離散化后的特征,然后使用獨熱編碼即可。

          三、特征預(yù)處理

          1. 特征的標(biāo)準(zhǔn)化和歸一化

          由于標(biāo)準(zhǔn)化和歸一化這兩個詞經(jīng)常混用,所以本文不再區(qū)別標(biāo)準(zhǔn)化和歸一化,而通過具體的標(biāo)準(zhǔn)化和歸一化方法來區(qū)別具體的預(yù)處理操作。

          z-score標(biāo)準(zhǔn)化:這是最常見的特征預(yù)處理方式,基本所有的線性模型在擬合的時候都會做 z-score標(biāo)準(zhǔn)化。具體的方法是求出樣本特征x的均值mean和標(biāo)準(zhǔn)差std,然后用(x-mean)/std來代替原特征。這樣特征就變成了均值為0,方差為1了。在sklearn中,我們可以用StandardScaler來做z-score標(biāo)準(zhǔn)化。當(dāng)然,如果我們是用pandas做數(shù)據(jù)預(yù)處理,可以自己在數(shù)據(jù)框里面減去均值,再除以方差,自己做z-score標(biāo)準(zhǔn)化。

          max-min標(biāo)準(zhǔn)化:也稱為離差標(biāo)準(zhǔn)化,預(yù)處理后使特征值映射到[0,1]之間。具體的方法是求出樣本特征x的最大值max和最小值min,然后用(x-min)/(max-min)來代替原特征。如果我們希望將數(shù)據(jù)映射到任意一個區(qū)間[a,b],而不是[0,1],那么也很簡單。用(x-min)(b-a)/(max-min)+a來代替原特征即可。在sklearn中,我們可以用MinMaxScaler來做max-min標(biāo)準(zhǔn)化。這種方法的問題就是如果測試集或者預(yù)測數(shù)據(jù)里的特征有小于min,或者大于max的數(shù)據(jù),會導(dǎo)致max和min發(fā)生變化,需要重新計算。所以實際算法中, 除非你對特征的取值區(qū)間有需求,否則max-min標(biāo)準(zhǔn)化沒有 z-score標(biāo)準(zhǔn)化好用。

          此外,經(jīng)常我們還會用到中心化,主要是在PCA降維的時候,此時我們求出特征x的平均值mean后,用x-mean代替原特征,也就是特征的均值變成了0, 但是方差并不改變。這個很好理解,因為PCA就是依賴方差來降維的。

          雖然大部分機(jī)器學(xué)習(xí)模型都需要做標(biāo)準(zhǔn)化和歸一化,也有不少模型可以不做做標(biāo)準(zhǔn)化和歸一化,主要是基于概率分布的模型,比如決策樹大家族的CART,隨機(jī)森林等。當(dāng)然此時使用標(biāo)準(zhǔn)化也是可以的,大多數(shù)情況下對模型的泛化能力也有改進(jìn)。

          2. 異常特征樣本清洗

          我們在實際項目中拿到的數(shù)據(jù)往往有不少異常數(shù)據(jù),有時候不篩選出這些異常數(shù)據(jù)很可能讓我們后面的數(shù)據(jù)分析模型有很大的偏差。那么如果我們沒有專業(yè)知識,如何篩選出這些異常特征樣本呢?常用的方法有兩種。

          第一種是聚類,比如我們可以用KMeans聚類將訓(xùn)練樣本分成若干個簇,如果某一個簇里的樣本數(shù)很少,而且簇質(zhì)心和其他所有的簇都很遠(yuǎn),那么這個簇里面的樣本極有可能是異常特征樣本了。我們可以將其從訓(xùn)練集過濾掉。

          第二種是異常點檢測方法,主要是使用iForest或者one class SVM,使用異常點檢測的機(jī)器學(xué)習(xí)算法來過濾所有的異常點。

          當(dāng)然,某些篩選出來的異常樣本是否真的是不需要的異常特征樣本,最好找懂業(yè)務(wù)的再確認(rèn)一下,防止我們將正常的樣本過濾掉了。

          3. 處理不平衡數(shù)據(jù)

          這個問題其實不算特征預(yù)處理的部分,不過其實它的實質(zhì)還是訓(xùn)練集中各個類別的樣本的特征分布不一致的問題,所以這里我們一起講。

          我們做分類算法訓(xùn)練時,如果訓(xùn)練集里的各個類別的樣本數(shù)量不是大約相同的比例,就需要處理樣本不平衡問題。也許你會說,不處理會怎么樣呢?如果不處理,那么擬合出來的模型對于訓(xùn)練集中少樣本的類別泛化能力會很差。舉個例子,我們是一個二分類問題,如果訓(xùn)練集里A類別樣本占90%,B類別樣本占10%。而測試集里A類別樣本占50%, B類別樣本占50%, 如果不考慮類別不平衡問題,訓(xùn)練出來的模型對于類別B的預(yù)測準(zhǔn)確率會很低,甚至低于50%。

          如何解決這個問題呢?一般是兩種方法:權(quán)重法或者采樣法。

          權(quán)重法是比較簡單的方法,我們可以對訓(xùn)練集里的每個類別加一個權(quán)重class weight。如果該類別的樣本數(shù)多,那么它的權(quán)重就低,反之則權(quán)重就高。如果更細(xì)致點,我們還可以對每個樣本加權(quán)重sample weight,思路和類別權(quán)重也是一樣,即樣本數(shù)多的類別樣本權(quán)重低,反之樣本權(quán)重高。sklearn中,絕大多數(shù)分類算法都有class weight和 sample weight可以使用。

          如果權(quán)重法做了以后發(fā)現(xiàn)預(yù)測效果還不好,可以考慮采樣法。

          采樣法常用的也有兩種思路,一種是對類別樣本數(shù)多的樣本做子采樣, 比如訓(xùn)練集里A類別樣本占90%,B類別樣本占10%。那么我們可以對A類的樣本子采樣,直到子采樣得到的A類樣本數(shù)和B類別現(xiàn)有樣本一致為止,這樣我們就只用子采樣得到的A類樣本數(shù)和B類現(xiàn)有樣本一起做訓(xùn)練集擬合模型。第二種思路是對類別樣本數(shù)少的樣本做過采樣, 還是上面的例子,我們對B類別的樣本做過采樣,直到過采樣得到的B類別樣本數(shù)加上B類別原來樣本一起和A類樣本數(shù)一致,最后再去擬合模型。

          上述兩種常用的采樣法很簡單,但是都有個問題,就是采樣后改變了訓(xùn)練集的分布,可能導(dǎo)致泛化能力差。所以有的算法就通過其他方法來避免這個問題,比如SMOTE算法通過人工合成的方法來生成少類別的樣本。方法也很簡單,對于某一個缺少樣本的類別,它會隨機(jī)找出幾個該類別的樣本,再找出最靠近這些樣本的若干個該類別樣本,組成一個候選合成集合,然后在這個集合中不停的選擇距離較近的兩個樣本,在這兩個樣本之間,比如中點,構(gòu)造一個新的該類別樣本。舉個例子,比如該類別的候選合成集合有兩個樣本(x1,y),(x2,y)(x1,y),(x2,y),那么SMOTE采樣后,可以得到一個新的訓(xùn)練樣本(x1+x22,y)(x1+x22,y),通過這種方法,我們可以得到不改變訓(xùn)練集分布的新樣本,讓訓(xùn)練集中各個類別的樣本數(shù)趨于平衡。我們可以用imbalance-learn這個Python庫中的SMOTEENN類來做SMOTE采樣。

          四、總結(jié)

          特征選擇是特征工程里的一個重要問題,其目標(biāo)是尋找最優(yōu)特征子集。特征選擇能剔除不相關(guān)(irrelevant)或冗余(redundant )的特征,從而達(dá)到減少特征個數(shù),提高模型精確度,減少運行時間的目的。另一方面,選取出真正相關(guān)的特征簡化模型,協(xié)助理解數(shù)據(jù)產(chǎn)生的過程。并且常能聽到“數(shù)據(jù)和特征決定了機(jī)器學(xué)習(xí)的上限,而模型和算法只是逼近這個上限而已”,由此可見其重要性。但是它幾乎很少出現(xiàn)于機(jī)器學(xué)習(xí)書本里面的某一章。然而在機(jī)器學(xué)習(xí)方面的成功很大程度上在于如果使用特征工程。


          注:文章轉(zhuǎn)載自

          https://www.cnblogs.com/pinard/p/9032759.html

          劉建平Pinard


          本文僅做學(xué)術(shù)分享,如有侵權(quán),請聯(lián)系刪文。

          —THE END—
          瀏覽 49
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产精品中文字幕在线观看 | av在线精品 | 三级片小说视频 | 国产精品久久久精品 | 亚洲视频欧美色图 |