機(jī)器學(xué)習(xí):特征工程基本流程

一、背景概述

? ??特征工程是使用專業(yè)背景知識(shí)和技巧處理數(shù)據(jù),使得特征能在機(jī)器學(xué)習(xí)算法上發(fā)揮更好的作用的過(guò)程,指的是把原始數(shù)據(jù)轉(zhuǎn)變?yōu)槟P偷挠?xùn)練數(shù)據(jù)的過(guò)程,它的目的是使模型的性能得到提升。

? ??特征工程包括特征構(gòu)建、特征提取、特征選擇三個(gè)部分。特征構(gòu)建是指從原始數(shù)據(jù)中人工的找出一些具有物理意義的特征,屬性分割結(jié)合是特征構(gòu)建時(shí)常使用的方法。?特征提取與特征選擇都是為了從原始特征中找出最有效的特征。特征提取強(qiáng)調(diào)通過(guò)數(shù)據(jù)轉(zhuǎn)換的方式得到一組具有明顯物理或統(tǒng)計(jì)意義的特征;而特征選擇是從特征集合中挑選一組具有明顯物理或統(tǒng)計(jì)意義的特征子集,能表示出每個(gè)特征的重要性對(duì)于模型構(gòu)建的重要性。

二、特征構(gòu)建

????我們觀察原始數(shù)據(jù),思考問(wèn)題并分析得到的數(shù)據(jù),比如結(jié)構(gòu)性的表格數(shù)據(jù),可以嘗試組合二個(gè)、三個(gè)不同的屬性構(gòu)造新的特征,如果存在時(shí)間相關(guān)屬性,可以劃出不同的時(shí)間窗口,得到同一屬性在不同時(shí)間下的特征值,也可以把一個(gè)屬性分解或切分,例如將數(shù)據(jù)中的日期字段按照季度和周期后者一天的上午、下午和晚上去構(gòu)建特征。

? ? 數(shù)據(jù)預(yù)處理包括:

2.1 數(shù)值型

  1.? 幅度調(diào)整/歸一化:python中會(huì)有一些函數(shù)比如preprocessing.MinMaxScaler()將幅度調(diào)整到 [0,1] 區(qū)間。

  2.統(tǒng)計(jì)值:包括max, min, mean, std等。python中用pandas庫(kù)序列化數(shù)據(jù)后,可以得到數(shù)據(jù)的統(tǒng)計(jì)值。?

  3.離散化:把連續(xù)值轉(zhuǎn)成非線性數(shù)據(jù)。例如電商會(huì)有各種連續(xù)的價(jià)格表,從0.03到100元,假如以一元錢的間距分割成99個(gè)區(qū)間,用99維的向量代表每一個(gè)價(jià)格所處的區(qū)間,1.2元和1.6元的向量都是 [0,1,0,…,0]。pd.cut() 可以直接把數(shù)據(jù)分成若干段。

  4.柱狀分布:離散化后統(tǒng)計(jì)每個(gè)區(qū)間的個(gè)數(shù)做柱狀圖。

2.2 類別型

  類別型一般是文本信息,比如顏色是紅色、黃色還是藍(lán)色,我們存儲(chǔ)數(shù)據(jù)的時(shí)候就需要先處理數(shù)據(jù)。處理方法有:?

  1.?one-hot編碼,編碼后得到啞變量。統(tǒng)計(jì)這個(gè)特征上有多少類,就設(shè)置幾維的向量,pd.get_dummies()可以進(jìn)行one-hot編碼。?

  2.?Hash編碼成詞向量

 ?。??Histogram映射:把每一列的特征拿出來(lái),根據(jù)target內(nèi)容做統(tǒng)計(jì),把target中的每個(gè)內(nèi)容對(duì)應(yīng)的百分比填到對(duì)應(yīng)的向量的位置。優(yōu)點(diǎn)是把兩個(gè)特征聯(lián)系起來(lái)。?

??2.3 時(shí)間型

  時(shí)間型特征的用處特別大,既可以看做連續(xù)值(持續(xù)時(shí)間、間隔時(shí)間),也可以看做離散值(星期幾、幾月份)。

  ? ?連續(xù)值

    a) 持續(xù)時(shí)間(單頁(yè)瀏覽時(shí)長(zhǎng))

    b) 間隔時(shí)間(上次購(gòu)買/點(diǎn)擊離現(xiàn)在的時(shí)間)

 ? ? ? 離散值

    a) 一天中哪個(gè)時(shí)間段(hour_0-23)

    b) 一周中星期幾(week_monday...)

? 2.4文本型

 ?。??詞袋:文本數(shù)據(jù)預(yù)處理后,去掉停用詞,剩下的詞組成的list,在詞庫(kù)中的映射稀疏向量。Python中用CountVectorizer處理詞袋.?

 ?。? 把詞袋中的詞擴(kuò)充到n-gram:n-gram代表n個(gè)詞的組合。比如“我喜歡你”、“你喜歡我”這兩句話如果用詞袋表示的話,分詞后包含相同的三個(gè)詞,組成一樣的向量:“我 喜歡 你”。顯然兩句話不是同一個(gè)意思,用n-gram可以解決這個(gè)問(wèn)題。如果用2-gram,那么“我喜歡你”的向量中會(huì)加上“我喜歡”和“喜歡你”,“你喜歡我”的向量中會(huì)加上“你喜歡”和“喜歡我”。這樣就區(qū)分開(kāi)來(lái)了。?

  3. 使用TF-IDF特征:TF-IDF是一種統(tǒng)計(jì)方法,用以評(píng)估一字詞對(duì)于一個(gè)文件集或一個(gè)語(yǔ)料庫(kù)中的其中一份文件的重要程度。字詞的重要性隨著它在文件中出現(xiàn)的次數(shù)成正比增加,但同時(shí)會(huì)隨著它在語(yǔ)料庫(kù)中出現(xiàn)的頻率成反比下降。TF(t) = (詞t在當(dāng)前文中出現(xiàn)次數(shù)) / (t在全部文檔中出現(xiàn)次數(shù)),IDF(t) = ln(總文檔數(shù)/ 含t的文檔數(shù)),TF-IDF權(quán)重 = TF(t) * IDF(t)。自然語(yǔ)言處理中經(jīng)常會(huì)用到。

2.5統(tǒng)計(jì)型

  ?加減平均:商品價(jià)格高于平均價(jià)格多少,用戶在某個(gè)品類下消費(fèi)超過(guò)平均用戶多少,用戶連續(xù)登錄天數(shù)超過(guò)平均多少...

  ?分位線:商品屬于售出商品價(jià)格的多少分位線處

   次序型:排在第幾位

  ?比例類:電商中,好/中/差評(píng)比例,你已超過(guò)全國(guó)百分之…的同學(xué)

2.6組合特征

  1. 拼接型:簡(jiǎn)單的組合特征。例如挖掘用戶對(duì)某種類型的喜愛(ài),對(duì)用戶和類型做拼接。正負(fù)權(quán)重,代表喜歡或不喜歡某種類型。?

  2. 模型特征組合:?

  - 用GBDT產(chǎn)出特征組合路徑?

  - 組合特征和原始特征一起放進(jìn)LR訓(xùn)練

三、特征提取

1. PCA主成分分析

2. LDA線性判別分析

3. ICA獨(dú)立成分分析

四、特征選擇

????特征選擇是剔除不相關(guān)或者冗余的特征,減少有效特征的個(gè)數(shù),減少模型訓(xùn)練的時(shí)間,提高模型的精確度。特征提取通過(guò)特征轉(zhuǎn)換實(shí)現(xiàn)降維,特征選擇則是依靠統(tǒng)計(jì)學(xué)方法或者于機(jī)器學(xué)習(xí)模型本身的特征選擇(排序)功能實(shí)現(xiàn)降維。特征選擇是個(gè)重復(fù)迭代的過(guò)程,有時(shí)可能自己認(rèn)為特征選擇做的很好,但實(shí)際中模型訓(xùn)練并不太好,所以每次特征選擇都要使用模型去驗(yàn)證,最終目的是為了獲得能訓(xùn)練出好的模型的數(shù)據(jù),提升模型的性能。下面介紹幾個(gè)常用的方法

1. 運(yùn)用統(tǒng)計(jì)學(xué)的方法,衡量單個(gè)特征與響應(yīng)變量(Lable)之間的關(guān)系。

皮爾森相關(guān)系數(shù)(Pearson Correlation)

最大信息系數(shù)(MIC)

?2. 基于機(jī)器學(xué)習(xí)模型的特征選擇

? ? ? ??線性模型和正則化

  當(dāng)特征和響應(yīng)變量之間全部都是線性關(guān)系,并且特征之間均是比較獨(dú)立的。可以嘗試使用線性回歸模型去做特征選擇,因?yàn)樵绞侵匾奶卣髟谀P椭袑?duì)應(yīng)的系數(shù)就會(huì)越大,而跟輸出變量越是無(wú)關(guān)的特征對(duì)應(yīng)的系數(shù)就會(huì)越接近與0。在很多實(shí)際的數(shù)據(jù)當(dāng)中,往往存在多個(gè)互相關(guān)聯(lián)的特征,這時(shí)候模型就會(huì)變得不穩(wěn)定,數(shù)據(jù)中細(xì)微的變化就可能導(dǎo)致模型的巨大變化(模型的變化本質(zhì)上是系數(shù),或者叫參數(shù),可以理解成W),這會(huì)讓模型的預(yù)測(cè)變得困難,這種現(xiàn)象也稱為多重共線性。例如,假設(shè)我們有個(gè)數(shù)據(jù)集,它的真實(shí)模型應(yīng)該是Y=X1+X2,當(dāng)我們觀察的時(shí)候,發(fā)現(xiàn)Y’=X1+X2+e,e是噪音。如果X1和X2之間存在線性關(guān)系,例如X1約等于X2,這個(gè)時(shí)候由于噪音e的存在,我們學(xué)到的模型可能就不是Y=X1+X2了,有可能是Y=2X1,或者Y=-X1+3X2。通過(guò)在模型中加入正則化項(xiàng),也能起到特征選擇的作用。L1正則化學(xué)到的是比較稀疏的模型,控制懲罰項(xiàng)系數(shù)alpha,會(huì)迫使那些弱的特征所對(duì)應(yīng)的系數(shù)變?yōu)?,這個(gè)特征使得L1正則化成為一種很好的特征選擇方法。L2正則化會(huì)使得系數(shù)的取值變得平均,對(duì)于關(guān)聯(lián)特征,這意味則他們能夠獲得更加相近的對(duì)應(yīng)系數(shù)。

? ? ? ? 隨機(jī)森林模型

隨機(jī)森林由多棵決策樹(shù)構(gòu)成,決策樹(shù)中的每個(gè)節(jié)點(diǎn),都是關(guān)于某個(gè)特征的條件,利用不純度可以確定劃分?jǐn)?shù)據(jù)集的最優(yōu)特征,對(duì)于分類問(wèn)題,通常采用基尼不純度或者信息增益,對(duì)于回歸問(wèn)題,通常采用方差或者最小二乘擬合。當(dāng)訓(xùn)練決策樹(shù)的時(shí)候,可以計(jì)算出每個(gè)特征減少了多少樹(shù)的不純度。對(duì)于一個(gè)決策樹(shù)森林來(lái)說(shuō),可以算出每個(gè)特征平均減少了多少不純度,并把它平均減少的不純度作為特征選擇的值。

另一種常用的特征選擇方法就是直接度量每個(gè)特征對(duì)模型精確率的影響。主要思路是打亂每個(gè)特征的特征值順序,并且度量順序變動(dòng)對(duì)模型的精確率的影響。很明顯,對(duì)于不重要的變量來(lái)說(shuō),打亂順序?qū)δP偷木_率影響不會(huì)太大,但是對(duì)于重要的變量來(lái)說(shuō),打亂順序就會(huì)降低模型的精確率。

要記?。?、這種方法存在偏向,對(duì)具有更多類別的變量會(huì)更有利;2、對(duì)于存在關(guān)聯(lián)的多個(gè)特征,其中任意一個(gè)都可以作為指示器(優(yōu)秀的特征),并且一旦某個(gè)特征被選擇之后,其他特征的重要度就會(huì)急劇下降,因?yàn)椴患兌纫呀?jīng)被選中的那個(gè)特征降下來(lái)了,其他的特征就很難再降低那么多不純度了,這樣一來(lái),只有先被選中的那個(gè)特征重要度很高,其他的關(guān)聯(lián)特征重要度往往較低。在理解數(shù)據(jù)時(shí),這就會(huì)造成誤解,導(dǎo)致錯(cuò)誤的認(rèn)為先被選中的特征是很重要的,而其余的特征是不重要的,但實(shí)際上這些特征對(duì)響應(yīng)變量的作用確實(shí)非常接近的(這跟Lasso是很像的)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容