[机器学习]总结特征工程干货
萬字長文總結(jié)特征工程干貨-云社區(qū)-華為云萬字長文總結(jié)特征工程干貨 1. 簡介( Feature Engineering) 1.1問題定義“Feature engineering is the art...https://bbs.huaweicloud.com/blogs/255357
1. 簡介( Feature Engineering)
特征工程到底是什么? - 知乎
?
1.1問題定義
“Feature engineering is the art part of data science” —Sergey Yurgenson
Feature engineering is the process of using domain knowledge to extract features from raw data via data mining techniques. These features can be used to improve the performance of machine learning algorithms.—wiki
特征工程(Feature Engineering)是將數(shù)據(jù)轉(zhuǎn)換為能更好地表示潛在問題的特征,從而提高機(jī)器學(xué)習(xí)性能的過程。
1.2特征工程評價指標(biāo)
a.使模型更精準(zhǔn):好的特征工程是數(shù)據(jù)中抽取出來的對預(yù)測結(jié)果最有用的信息,可以提高模型的業(yè)務(wù)指標(biāo)。
| 1 | classification(分類) | accuracy_score | 分類準(zhǔn)確率分?jǐn)?shù)是指所有分類正確的百分比 |
| 2 | balanced_accuracy_score | 計算平衡精度 | |
| 3 | confusion_matrix | 混淆矩陣 | |
| 4 | f1_score | f1值 | |
| 5 | jaccard_similarity_score | Jaccard相似系數(shù)得分 | |
| 6 | precision_recall_fscore_support | 為每個類計算precision, recall, F值和 support | |
| 7 | precision_score | 計算precision | |
| 8 | recall_score | 計算召回率 | |
| 9 | multilabel_confusion_matrix | 多標(biāo)簽混淆矩陣 | |
| 10 | regression(回歸) | explained_variance_score | 解釋回歸模型的方差得分,其值取值范圍是[0,1],越接近于 1說明自變量越能解釋因變量的方差變化,值越小則說明效果越差。 |
| 11 | mean_absolute_error | 平均絕對誤差 | |
| 12 | mean_squared_error | 均方差(Mean squared error,MSE),該指標(biāo)計算的是擬合數(shù)據(jù)和原始數(shù)據(jù)對應(yīng)樣本點(diǎn)的誤差的平方和的均值,其值越小說明擬合效果越好 | |
| 13 | mean_squared_log_error | 均方差加log | |
| 14 | r2_score | R2 決定系數(shù)(擬合優(yōu)度) 模型越好:r2→1 模型越差:r2→0 |
b.模型更簡單:好的特征工程應(yīng)該使得模型復(fù)雜度更低,更加精簡
| 1 | 參數(shù)個數(shù) | 參數(shù)量 | 模型的參數(shù)數(shù)量 |
| 2 | 時間復(fù)雜度 | 計算量FLOPS | 模型的運(yùn)算次數(shù) |
c. 模型更穩(wěn)定: 算法模型運(yùn)行更加穩(wěn)定,魯棒性更強(qiáng)
| 1 | 計算穩(wěn)定性 | 下溢(Underflow)和上溢(Overflow) | 受限于計算機(jī)的運(yùn)算精度使得大量的微小誤差積少成多造成模型失效 |
| 2 | 特征穩(wěn)定性 | PSI = \sum{(\rho_{test}^{i} - \rho_{base}^{i})\ast \ln (\rho_{test}^{i}/ \rho_{base})}PSI=∑(ρtesti??ρbasei?)?ln(ρtesti?/ρbase?) | PSI是對兩個日期的特征數(shù)據(jù)進(jìn)行計算,可以任選其一作為base集另一則是test集,小于0.1認(rèn)為特征穩(wěn)定 |
| 3 | 模型穩(wěn)定性 | psi = sum((實際占比-預(yù)期占比)/ln(實際占比/預(yù)期占比)) | 一般認(rèn)為psi小于0.1時候模型穩(wěn)定性很高,0.1-0.25一般,大于0.25模型穩(wěn)定性差,建議重做。 |
| 4 | 模型穩(wěn)定性 | 交叉驗證 | 當(dāng)算法的輸入發(fā)生變化時,輸出是否會隨之發(fā)生較大的變化 |
2. 特征工程
2.1特征變換
特征變換(feature transformation)指的是使用數(shù)學(xué)映射從現(xiàn)有特征構(gòu)建新特征。例如,在一組體檢數(shù)據(jù)中,若提供了身高、體重等信息,想要判斷受檢者健康情況,單單把身高、體重兩列數(shù)據(jù)不加處理地直接交給模型進(jìn)行訓(xùn)練,訓(xùn)練結(jié)果就不夠好。
2.1.1 特征編碼
對于離散的類別特征,往往需要進(jìn)行必要的特征編碼才能將其作為特征輸入到模型中。常用的編碼方式有OneHot編碼。譬如對于性別這個特征(取值為男性和女性),使用這兩種方式可以分別編碼為{0,1}和{1,0}。此外還有Count Encoding和Target Encoding。Count Encoding編碼,用類別的頻數(shù)來編碼,也可以對頻數(shù)進(jìn)行歸一化,Target Encoding用目標(biāo)變量(二分類)中的某一類的比例來編碼。
2.1.2 特征歸一化
歸一化:使得不同尺度的數(shù)據(jù)轉(zhuǎn)換到同一規(guī)格尺度
目的:
1)歸一化可以讓不屬于同一尺度的特征值進(jìn)行比較:比如身高(cm)體重(kg)
2)歸一化后模型收斂會加快(運(yùn)行速度快)
3)歸一化對一些模型的結(jié)果影響比較大,比如聚類模型,歸一化后效果更好
效果:把原始的連續(xù)型變量轉(zhuǎn)換為均值為0,標(biāo)準(zhǔn)差為1的變量
公式:
\tilde{x}=\frac{{x-\bar{x}}}{\delta}x~=δx?xˉ?
\overline{x}x均值,?\deltaδ?是標(biāo)準(zhǔn)差。
最大最小歸一化
效果:把原始的連續(xù)型變量轉(zhuǎn)換為范圍在[a-b]之間的變量,常見的a=0,b=1
公式:
\tilde{x}=\frac{{x-min(x)}}{max(x)-min(x)}x~=max(x)?min(x)x?min(x)?
2.1.3特征離散
特征離散化:把連續(xù)的數(shù)值切割為少數(shù)的一些區(qū)間,例如將年齡切割為5個年齡段
目的:離散化后的特征方便探索數(shù)據(jù)的分布和相關(guān)性,同時對異常數(shù)據(jù)有很強(qiáng)的魯棒性可以減少異常數(shù)據(jù)對模型的影響,對特征離散化后引入非線性,可以提升模型的預(yù)測能力。
常用的無監(jiān)督的離散化方法主要有:自定義規(guī)則,等寬法,等頻法等。
二值化是一種特殊的離散方法,它把連續(xù)型變量分割為0/1(是/否)類型的類別型變量,例如年齡是否大于18歲,電話號碼是否是手機(jī) 城市是否是一線城市。
2.1.4特征深度合成
特征深度合成算法(結(jié)構(gòu)型數(shù)據(jù) 知識圖譜)
論文:Kanter, James Max, and Kalyan Veeramachaneni. “Deep feature synthesis: Towards automating data science endeavors.” 2015 IEEE international conference on data science and advanced analytics (DSAA). IEEE, 2015.
原理:
例子:
開源實現(xiàn):Featuretools · GitHub
2.2特征交叉
特征組合也叫特征交叉(Feature Crosses),即不同類型或者不同維度特征之間的交叉組合,其主要目的是為了彌補(bǔ)早期的模型無法有效的進(jìn)行特征組合而產(chǎn)生的:
按照特征進(jìn)行分類可以分為類別特征之間交叉和類別特征和數(shù)值特征之間交叉
類別特征之間交叉組合:比如用戶性別、年齡、喜愛視頻類別之間的交叉特征。類別特征和數(shù)值特征之間交叉組合?這類特征通常是在類別特征某個具體類別中計算一些統(tǒng)計量。例如用戶對不同類目視頻的完播率、平均播放時長等。
與非嵌入法不同,嵌入法是直接將特征交叉嵌入到模型的構(gòu)建過程中。
按照特征交叉的方式可以分為非嵌入式和嵌入式
非嵌入式交叉:非嵌入式的關(guān)聯(lián)方式有內(nèi)積、笛卡爾積、哈達(dá)瑪積以及多項式方法等。
嵌入式交叉: 利用模型可以自動進(jìn)行特征的交叉組合,比如常用的 FM 和 FFM 模型等
2.2.1非嵌入法
非嵌入法和具體的機(jī)器學(xué)習(xí)算法相互獨(dú)立,可以通過機(jī)器學(xué)習(xí)算法評估特征子集的效果,非嵌入法主要包括內(nèi)積、笛卡爾積、哈達(dá)馬內(nèi)積以及多項式的方法進(jìn)行組合。
?
2.2.2模型特征交叉
模型特征交叉:
針對特征交叉的問題,工程師首先想到的是特征兩兩組合,這種組合特征然后在手工篩選的方式無疑是低效的。
2.2.2.1 POLY2模型
POLY2模型:
POLY2(w,x) = \sum_{j_{1} = 1}^{n-1}\sum_{j_{2} = j_{1}+1}^{n}w_{h}(j_{1},j_{2})x_{j1}x_{j2}POLY2(w,x)=j1?=1∑n?1?j2?=j1?+1∑n?wh?(j1?,j2?)xj1?xj2?
POLY2模型一定程度上解決了特征組合的問題,但是它本質(zhì)還是線性模型,訓(xùn)練方法和邏輯回歸一樣。
缺陷:
1)在處理數(shù)據(jù)時,類別數(shù)據(jù)一般采用onehot編碼,這樣的話特征向量會很稀疏,再利用POLY2進(jìn)行無選擇的特征交叉會使原來非常稀疏的特征向量更加稀疏,會導(dǎo)致大部分交叉特征權(quán)重缺少有效的數(shù)據(jù)進(jìn)行訓(xùn)練。
2)權(quán)重參數(shù)的數(shù)量由nn直接上升到n^{2}n2極大的增加了訓(xùn)練復(fù)雜度。
2.2.2.2 FM模型
FM模型
為了POLY2模型的缺陷,Rendle于2010年提出FM模型:
下面是FM的二階形式:
FM(w,x) = \sum_{j_{1} = 1}^{n-1}\sum_{j_{2} = j_{1}+1}^{n}(w_{1}.w_{2})x_{j1}x_{j2}FM(w,x)=j1?=1∑n?1?j2?=j1?+1∑n?(w1?.w2?)xj1?xj2?
與POLY2模型相比,主要的區(qū)別是用兩個向量的內(nèi)積?代替了單一的權(quán)重系數(shù)?。
FM為每個特征學(xué)習(xí)了一個隱權(quán)重向量,在特征交叉時,使用兩個特征隱向量的內(nèi)積w_{1}.w_{2}w1?.w2?作為交叉特征的權(quán)重。
FM引入隱向量的思路和矩陣分解的思路有異曲同工之妙,直接把POLY2模型n^2n2級別的權(quán)重直接降低到nknk,梯度下降過程訓(xùn)練FM過程中,FM的復(fù)雜度同樣減低到?nknk?。
隱向量的引入也使FM可以更好的解決數(shù)據(jù)稀疏性的問題,比如推薦場景中某樣本有兩個特征頻道(channel)和品牌(brand),某訓(xùn)練樣本組合是(ESPN,Adidas)在POLY2中,只有ESPN和Adidas同時出現(xiàn)在一個樣本中的時候模型才能學(xué)習(xí)到權(quán)重,而在FM中,ESPN的隱向量可以通過(ESPN,Gucci)學(xué)習(xí),Adidas隱向量可以通過( NBC,Adidas )學(xué)習(xí),甚至對于沒有出現(xiàn)過的(NBC,Gucci)模型也可以學(xué)習(xí)到權(quán)重。
理論上,FM可以引申到三階特征交叉,甚至更高維度,但是由于組合爆炸的問題,三階FM無論是權(quán)重數(shù)量還是訓(xùn)練復(fù)雜度都過高。
2.2.2.3 GBDT+LR模型
FM模型只能做二階特征交叉,要想提高特征交叉的維度會不可避免的產(chǎn)生組合爆炸和計算復(fù)雜度高的問題。
為了有效的解決高維特征組合和特征篩選的問題,2014年Facebook提出來GBDT+LR模型
組合模型利用GBDT自動進(jìn)行特征篩選和組合,生成新的離散特征向量,然后把該特征向量當(dāng)做LR模型的輸入。
一個訓(xùn)練樣本輸入GBDT模型落入 某一子樹,會根據(jù)每個節(jié)點(diǎn)的規(guī)則最終落到某個葉子節(jié)點(diǎn)上,那么這個葉子節(jié)點(diǎn)標(biāo)為1,其他節(jié)點(diǎn)為0,綜合所有子樹的結(jié)果,把特征向量連接起來就是新的離散型特征向量。
事實上,決策樹的深度決定了特征交叉的階數(shù),如果決策樹深度為4那么就是3次節(jié)點(diǎn)分裂的結(jié)果也就是三階特征交叉??梢钥闯鯣BDT特征組合能力遠(yuǎn)遠(yuǎn)強(qiáng)過FM,但是GBDT容易過擬合。
2.3特征壓縮
當(dāng)特征經(jīng)過處理之后,雖然可以直接訓(xùn)練模型了,但是可能由于特征矩陣過大,導(dǎo)致計算量大,出現(xiàn)訓(xùn)練時間長的問題,因此對特征進(jìn)行壓縮可以有效解決訓(xùn)練時間過長的問題特征壓縮最直接的方法就是特征降維,常見的降維方法主要是主成分分析法(PCA)和線性判別分析(LDA),線性判別分析本身也是一個分類模型。PCA和LDA有很多的相似點(diǎn),其本質(zhì)是要將原始的樣本映射到維度更低的樣本空間中。
2.3.1降維算法
PCA算法:
? PCA的主要思想是將n維特征映射到k維上,這k維是全新的正交特征也被稱為主成分,是在原有n維特征的基礎(chǔ)上重新構(gòu)造出來的k維特征。PCA的工作就是從原始的空間中順序地找一組相互正交的坐標(biāo)軸,新的坐標(biāo)軸的選擇與數(shù)據(jù)本身是密切相關(guān)的。其中,第一個新坐標(biāo)軸選擇是原始數(shù)據(jù)中方差最大的方向,第二個新坐標(biāo)軸選取是與第一個坐標(biāo)軸正交的平面中使得方差最大的,第三個軸是與第1,2個軸正交的平面中方差最大的。依次類推,可以得到 個這樣的坐標(biāo)軸。通過這種方式獲得的新的坐標(biāo)軸,我們發(fā)現(xiàn),大部分方差都包含在前面k個坐標(biāo)軸中,后面的坐標(biāo)軸所含的方差幾乎為0。于是,我們可以忽略余下的坐標(biāo)軸,只保留前面k個含有絕大部分方差的坐標(biāo)軸。事實上,這相當(dāng)于只保留包含絕大部分方差的維度特征,而忽略包含方差幾乎為0的特征維度,實現(xiàn)對數(shù)據(jù)特征的降維處理。
LDA算法:
? 線性判別式分析(Linear Discriminant Analysis, LDA),也叫做Fisher線性判別(Fisher Linear Discriminant ,FLD),是模式識別的經(jīng)典算法,它是在1996年由Belhumeur引入模式識別和人工智能領(lǐng)域的。性鑒別分析的基本思想是將高維的模式樣本投影到最佳鑒別矢量空間,以達(dá)到抽取分類信息和壓縮特征空間維數(shù)的效果,投影后保證模式樣本在新的子空間有最大的類間距離和最小的類內(nèi)距離,即模式在該空間中有最佳的可分離性。因此,它是一種有效的特征抽取方法。使用這種方法能夠使投影后模式樣本的類間散布矩陣最大,并且同時類內(nèi)散布矩陣最小。就是說,它能夠保證投影后模式樣本在新的空間中有最小的類內(nèi)距離和最大的類間距離,即模式在該空間中有最佳的可分離性。
2.3.2 Embedding技術(shù)
Embedding中文可以直譯為嵌入,一般翻譯為向量化或者向量映射。特別是在推薦廣告和搜索為核心的互聯(lián)網(wǎng)Embedding技術(shù)應(yīng)用非常廣泛。Embedding從形式上講就是用一個低稠密的向量“表示”一個對象。這里對象可以是一個詞也可以是一個電影一個商品。表示就是說Embedding向量能夠表達(dá)相應(yīng)對象的某些特征,同時向量之間的距離反映了對象之間的相似性。
Embedding方法首先流行于NLP領(lǐng)域,在大語料的輸入下,Embedding可以挖掘一些潛在的知識。
Embedding技術(shù)的重要性:
1)推薦場景中大量使用onehot編碼對類別id型特征進(jìn)行編碼,導(dǎo)致樣本特征極度稀疏,在幾乎所有的推薦模型中都會有Embedding層負(fù)責(zé)將這些高維稀疏的特征轉(zhuǎn)換成低維稠密特征向量。
2)Embedding本身就是十分重要的特征向量,Embedding的表達(dá)能力更強(qiáng)。
3)Embedding技術(shù)對物品用戶的相似度計算是最常用的一種召回層技術(shù),結(jié)合局部敏感哈希技術(shù)之后更適合海量數(shù)據(jù)的初步篩選。
2.3.2.1 Word2vec
Word2vec
自2013年谷歌提出Word2vec以來,Embedding技術(shù)從自然語言處理推廣到廣告 搜索 圖像 推薦等深度學(xué)習(xí)領(lǐng)域。Word2vec是word to vector 的簡稱,Word2vec是一種生成對詞的向量表達(dá)的一種方法。
為了訓(xùn)練Word2vec模型,需要準(zhǔn)備一組由句子組成的語料,我們假設(shè)一個長度為T的句子?w_{1} w_{2} w_{3}... w_{T}w1?w2?w3?...wT?
CBOW模型是用?w_{T}wT?的周邊詞預(yù)測w_{T}wT?,Skip-Gram是用?w_{T}wT?預(yù)測w_{T}wT?的周邊詞。
輸入:選取一個?2c+12c+1?(目標(biāo)詞前后各取?cc個詞)的滑動窗口,從語料庫抽取一個句子,滑動窗口從左到右,每移動一次,窗口中的詞就組成了一個訓(xùn)練樣本。
優(yōu)化目標(biāo):每個詞?w_twt?決定了相鄰詞?x_{t+1}xt+1?基于極大似然法,希望所有樣本條件概率p(w_{t+j}|w_{t})p(wt+j?∣wt?)的乘積最大
\frac{1}{T}\sum_{t = 1}^{T}\sum_{-c\leq{ j }\leq c, j\neq 0 }\log{p(w_{t+j}|w_{t})}T1?t=1∑T??c≤j≤c,j=0∑?logp(wt+j?∣wt?)
p(w_{t+j}|w_{t})p(wt+j?∣wt?)的定義:Word2vec模型的目的是希望用一個向量?V_wVw?表示詞ww,用詞之間的內(nèi)積?V_{i}^{T}V_{j}ViT?Vj?表示語義的接近程度,最后套上一次softmax函數(shù)就可以對上多分類。
p(w_{O}|w_{I}) = \frac{exp(V_{wo}^{T}V_{wI})}{\sum_{t = 1}^{T}exp(V_{w}^{T}V_{wI})}p(wO?∣wI?)=∑t=1T?exp(VwT?VwI?)exp(VwoT?VwI?)?
V_{w}^{T}VwT?表示要訓(xùn)練出的詞向量V_{wI}VwI??是輸入詞的向量?V_{wo}^{T}VwoT?是輸出詞的向量
2.3.2.2 Item2vec
基本思想:Word2vec是對詞序列進(jìn)行Embedding,那么這里的詞也可以是一個商品 一部電影。
Word2vec 一個長度為T的句子?w_{1} w_{2} w_{3}... w_{T}w1?w2?w3?...wT??優(yōu)化目標(biāo)
\frac{1}{T}\sum_{t = 1}^{T}\sum_{-c\leq{ j }\leq c, j\neq 0 }\log{p(w_{t+j}|w_{t})}T1?t=1∑T??c≤j≤c,j=0∑?logp(wt+j?∣wt?)
那么對應(yīng)到Item2Vec就對應(yīng)一個長度為K的用戶歷史記錄w_{1} w_{2} w_{3}... w_{K}w1?w2?w3?...wK?
Item2Vec的優(yōu)化目標(biāo)變成了:
\frac{1}{T}\sum_{t = 1}^{T}\sum_{j\neq i }^{K}\log{p(w_{t+j}|w_{t})}T1?t=1∑T?j=i∑K?logp(wt+j?∣wt?)
可以發(fā)現(xiàn)Item2Vec摒棄了時間窗口的概念,認(rèn)為序列里任意兩個物品都是相關(guān)的,剩下的訓(xùn)練過程和word2vec一致。
2.3.2.3 GraphEmbedding
GraphEmbedding是對圖結(jié)構(gòu)中的節(jié)點(diǎn)進(jìn)行Embedding編碼的方法,最終生成的Embedding向量一般包含圖的結(jié)構(gòu)信息和附近節(jié)點(diǎn)的局部相似性信息。
DeepWalk是早期影響力比較大的一種GraphEmbedding方法,該方法是2014年提出的,它的主要思想是在由物品組成的圖結(jié)構(gòu)上進(jìn)行隨機(jī)游走,產(chǎn)生大量的物品序列,然后將這些物品序列作為訓(xùn)練樣本輸入word2vec進(jìn)行訓(xùn)練,得到物品Embedding向量。
2016年,斯坦福大學(xué)在DeepWalk的基礎(chǔ)上更進(jìn)一步,通過調(diào)整隨機(jī)游走權(quán)重的方法使graph embedding的結(jié)果在網(wǎng)絡(luò)的同質(zhì)性(homophily)和結(jié)構(gòu)性(structural equivalence)中進(jìn)行權(quán)衡權(quán)衡。具體來講,網(wǎng)絡(luò)的“同質(zhì)性”指的是距離相近節(jié)點(diǎn)的embedding應(yīng)該盡量近似,節(jié)點(diǎn)u與其相連的節(jié)點(diǎn)s1、s2、s3、s4的embedding表達(dá)應(yīng)該是接近的,這就是“同質(zhì)性“的體現(xiàn)?!敖Y(jié)構(gòu)性”指的是結(jié)構(gòu)上相似的節(jié)點(diǎn)的embedding應(yīng)該盡量接近,圖中節(jié)點(diǎn)u和節(jié)點(diǎn)s6都是各自局域網(wǎng)絡(luò)的中心節(jié)點(diǎn),結(jié)構(gòu)上相似,其embedding的表達(dá)也應(yīng)該近似,這是“結(jié)構(gòu)性”的體現(xiàn)。
為了使Graph Embedding的結(jié)果能夠表達(dá)網(wǎng)絡(luò)的結(jié)構(gòu)性,在隨機(jī)游走的過程中,需要讓游走的過程更傾向于寬度優(yōu)先搜索(BFS),因為BFS更喜歡游走到跟當(dāng)前節(jié)點(diǎn)有直接連接的節(jié)點(diǎn)上,因此就會有更多同質(zhì)性信息包含到生成的樣本序列中,從而被embedding表達(dá);另一方面,為了抓住網(wǎng)絡(luò)的同質(zhì)性,就需要隨機(jī)游走更傾向于深度優(yōu)先搜索(DFS),因為DFS會更傾向于通過多次跳轉(zhuǎn),游走到遠(yuǎn)方的節(jié)點(diǎn)上,使得生成的樣本序列包含更多網(wǎng)絡(luò)的整體結(jié)構(gòu)信息。
那么在node2vec算法中,是怎樣控制BFS和DFS的傾向性的呢?主要是通過節(jié)點(diǎn)間的跳轉(zhuǎn)概率。圖5顯示了node2vec算法從節(jié)點(diǎn)𝑡跳轉(zhuǎn)到節(jié)點(diǎn)𝑐后,下一步從節(jié)點(diǎn)𝑣跳轉(zhuǎn)到周圍各點(diǎn)的跳轉(zhuǎn)概率。
?
形式化來講,從節(jié)點(diǎn)𝑣跳轉(zhuǎn)到下一個節(jié)點(diǎn)𝑥的概率為
其中,d_{tx}dtx?指的是節(jié)點(diǎn) t到節(jié)點(diǎn)x的距離,參數(shù)pp和qq共同控制著隨機(jī)游走的傾向性。參數(shù)pp被稱為返回參數(shù)(return parameter),?pp越小,隨機(jī)游走回節(jié)點(diǎn)t的可能性越大,node2vec就更注重表達(dá)網(wǎng)絡(luò)的同質(zhì)性,參數(shù)qq被稱為進(jìn)出參數(shù)(in-out parameter),qq?越小,則隨機(jī)游走到遠(yuǎn)方節(jié)點(diǎn)的可能性越大,node2vec更注重表達(dá)網(wǎng)絡(luò)的結(jié)構(gòu)性,反之當(dāng)前節(jié)點(diǎn)更可能在附近節(jié)點(diǎn)游走。
論文:Grover A, Leskovec J. node2vec: Scalable feature learning for networks[C]//Proceedings of the 22nd ACM SIGKDD international conference on Knowledge discovery and data mining. 2016: 855-864.
2.4特征選擇
有一種說法是,特征決定了效果的上限,而不同模型只是以不同的方式或不同的程度來逼近這個上限,好的特征輸入對于模型的效果至關(guān)重要(Garbage in, garbage out)。要做好特征工程,往往跟領(lǐng)域知識和對問題的理解程度有很大的關(guān)系。
2.4.1傳統(tǒng)方法
在做特征抽取的時候,我們是盡可能地抽取更多的Feature,但過多的Feature會造成冗余,容易過擬合等問題,因此我們要進(jìn)行特征篩選。
特征選擇的方法有很多,主要的特征篩選方法有:過濾方法,封裝方法,嵌入方法。
2.4.1.1過濾法
覆蓋率:覆蓋率主要計算每個特征的覆蓋率(即特征在訓(xùn)練集中出現(xiàn)的比例),如果特征的覆蓋率很小,比如我們有10000個樣本,某個特征只出現(xiàn)了5次,說明這個特征覆蓋率對模型預(yù)測的作用不大,覆蓋率小的特征就可以剔除了。
皮爾遜相關(guān)系數(shù):皮爾遜相關(guān)系數(shù)用于度量兩個變量 和 的線性相關(guān)性。
兩個變量之間的相關(guān)系數(shù)為協(xié)方差與標(biāo)準(zhǔn)差的商,它主要是衡量兩個變量之間的線性關(guān)系,數(shù)值在[-1.0, 1.0]區(qū)間中。數(shù)值越是接近0,兩個變量越是線性不相關(guān)。但是數(shù)值為0,并不能說明兩個變量不相關(guān),只是線性不相關(guān)而已。
假設(shè)我們一共有 K類別, uij表示特征 i在類別j 中的均值,u_iui?表示特征?ii的均值,p_{ij}pij?表示特征i在類別 j中的方差,n_jnj?表示類別j中的樣本數(shù)。Fisher得分越高表示特征在不同類別特征之間的差異越大,在同一類別中差異性越小。
皮爾遜卡方檢驗:皮爾遜卡方檢驗適用于變量和變量都為連續(xù)變量的情況:
卡方統(tǒng)計量取值越大,特征相關(guān)性越高
**互信息:**在概率論和信息論中,互信息用來度量兩個變量之間的相關(guān)性?;バ畔⒃酱笳f明兩個變量相關(guān)性越高,互信息為0說明兩個特征相對獨(dú)立。
**相關(guān)特征選擇(CFS):**相關(guān)特征選擇是基于以下假設(shè)來進(jìn)行評估特征集合重要性的,好的特征集合應(yīng)該是包含和目標(biāo)變量非常相關(guān)的特征,但是這些特征之間彼此不想管。對于包含?KK個特征的集合
其中,r_{cf1}rcf1??表示特征變量和目標(biāo)變量之間的相關(guān)性,?r_{fifj}rfifj?表示特征變量之間的相關(guān)性,這里的相關(guān)性可以是皮爾相關(guān)系數(shù)等。CFS越大越好
2.4.1.2封裝法
封裝方法:
過濾方法和具體的機(jī)器學(xué)習(xí)算法相互獨(dú)立,封裝方法是直接使用機(jī)器學(xué)習(xí)算法評估特征子集的效果,封裝得分是使用特征子集搜索和評價指標(biāo)相結(jié)合的方法。
搜索算法有貪婪算法和窮舉,貪婪搜索算法(greedy search)是局部最優(yōu)算法。與之對應(yīng)的是窮舉算法 (exhaustive search),窮舉算法是遍歷所有可能的組合達(dá)到全局最優(yōu)級,但是計算復(fù)雜度是 ,一般是不太實際的算法。
前向搜索:特征子集從空集開始,每次只加入一個特征達(dá)到閾值或者n時,從所有子集中選出錯誤率最小的。
后向搜索:特征子集從全集開始,每次只刪除一個特征并評價,直到達(dá)到閾值或者為空,然后選擇最佳的子集。
2.4.1.3嵌入法
過濾方法和具體的機(jī)器學(xué)習(xí)算法相互獨(dú)立,封裝方法是直接使用機(jī)器學(xué)習(xí)算法評估特征子集的效果,這種方法需要多次模型訓(xùn)練,計算效率低,嵌入法是直接將特征選擇嵌入到模型的構(gòu)建過程中。
嵌入法比較經(jīng)典的例子是LASSO,在LASSO之前,大家都采用嶺回歸對回歸系數(shù)進(jìn)行衰減來防止過擬合,但是嶺回歸不能進(jìn)行特征選擇,對模型可解釋性沒有幫助,Lasso對回歸系數(shù)進(jìn)行了L1懲罰項來防止過擬合,可以讓特定的特征變成0,在實際應(yīng)用中𝜆越大回歸系數(shù)越稀疏,𝜆一般采用交叉驗證的方式來驗證。另一類嵌入方法是基于樹模型的,對基于決策樹的算法,如隨機(jī)森林 GBDT等可以輸出特征重要性。嵌入法既有過濾法計算效率高的優(yōu)點(diǎn)又有封裝法和機(jī)器學(xué)習(xí)算法結(jié)合的優(yōu)點(diǎn)。
2.4.2開源
2.4.2.1開源匯總
業(yè)界開源框架基本都是基于某一有效算法構(gòu)建起來的,用戶在使用時只需將數(shù)據(jù)導(dǎo)入,數(shù)據(jù)便會依據(jù)這些系統(tǒng)/框架本身設(shè)定的原理自動進(jìn)行特征轉(zhuǎn)換、特征擴(kuò)充或降維等操作
| 1 | Featuretools | 依賴于特征深度合成算法,提取數(shù)據(jù)特征 | 可以快速的生成大量候選特征集合 | a容易造成特征維數(shù)過多 b可解釋性偏弱 | 5.3k |
| 2 | TSFRESH | 基于fresh算法進(jìn)行特征選擇 | 1.可以自動提取超過100種的時間序列特征2.可以基于假設(shè)檢驗過濾無關(guān)特征 | 目前只有單機(jī)版 | 5.3k |
| 3 | AutoLearn | 利用每個特征通過應(yīng)用回歸算法對其他特征進(jìn)行預(yù)測 | 通過消除模型中不相關(guān)的特征來提高分類準(zhǔn)確性,識別有效特征 | 輸出特征信息少 | 21 |
| 4 | ExploreKit | 通過組合原始特征中的信息生成大量候選項集,通過模擬候選特征和數(shù)據(jù)集之間的相互作用來預(yù)測新的候選特征的重要性 | 提高了預(yù)測性能,克服了特征空間指數(shù)增長的問題 | 選擇特征的可解釋性不強(qiáng),目前關(guān)注度不高 | 53 |
2.4.2.2論文相關(guān)開源
1)從數(shù)據(jù)的角度梳理了傳統(tǒng)數(shù)據(jù)、結(jié)構(gòu)化數(shù)據(jù)、異構(gòu)數(shù)據(jù)和流式數(shù)據(jù)的典型特征選擇算法。并將其為四大類:基于相似性的、基于信息理論的、基于稀疏學(xué)習(xí)的和基于統(tǒng)計的方法,并開源了特征選擇庫,它包含了大多數(shù)流行的特征選擇算法。
Li, Jundong, et al. “Feature selection: A data perspective.” ACM Computing Surveys (CSUR) 50.6 (2017): 1-45.
GitHub開源:GitHub - jundongl/scikit-feature: open-source feature selection repository in python
包含的算法:
| Information theoretica based | CIFE | Conditional infomax learning: An integrated framework for feature extraction and fusion |
| CMIM | Fast Binary Feature Selection with Conditional Mutual Information | |
| DISR | Information-theoretic feature selection in microarray data using variable complementarity | |
| FCBF | Feature Selection for High-Dimensional Data: A Fast Correlation-Based Filter Solution | |
| ICAP | A powerful feature selection approach based on mutual information | |
| JMI | Data visualization and feature selection: New algorithms for non-gaussian data | |
| MIFS | Using mutual information for selecting features in supervised neural net learning | |
| MIFS | Using mutual information for selecting features in supervised neural net learning | |
| MIM | Feature selection and feature extraction for text categorization | |
| MRMR | Feature selection based on mutual information: Criteria of maxdependency, max-relevance, and min-redundancy | |
| similarity based | fisher_score | R.O. Duda, P.E. Hart, and D.G. Stork, Pattern Classification |
| reliefF | Theoretical and Empirical Analysis of ReliefF and RReliefF | |
| trace_ratio | Trace Ratio Criterion for Feature Selection | |
| Sparselearning based | ll_l21 | Feature Selection for Classification: A Review |
| ls_l21 | Feature Selection for Classification: A Review | |
| RFS | Efficient and Robust Feature Selection via Joint l2,1-Norms Minimization | |
| statistical based | CFS | Feature selection for machine learning: Comparing a correlation-based filter approach to the wrapper |
| chi_square | Chi2: Feature selection and discretization of numeric attributes | |
| f_score | The interpretation of population structure by f-statistics with special regard to systems of mating | |
| gini_index | Variabilita e Mutabilita | |
| t_score | Statistics and data analysis in geology | |
| streaming | alpha_investing | Streaming Feature Selection using Alpha-investing |
| structure | graph_fs | Feature Selection for Classification: A Review |
| group_fs | Feature Selection for Classification: A Review | |
| tree_fs | Feature Selection for Classification: A Review | |
| wrapper | decision_tree_ backward | An Introduction to Variable and Feature Selection |
| decision_tree_ forward | An Introduction to Variable and Feature Selection | |
| svm_backward | An Introduction to Variable and Feature Selection | |
| svm_forward | An Introduction to Variable and Feature Selection |
2.4.2.4時間序列特征
時間序列特征:TSFRESH庫
Christ M, Kempa-Liehr A W, Feindt M. Distributed and parallel time series feature extraction for industrial big data applications[J]. arXiv preprint arXiv:1610.07717, 2016.
TSFresh:
Fresh特征選擇算法原理:
1、如果特征是二類的標(biāo)簽也是二類的,則使用fisher檢驗。
2、假設(shè)特征是二類的而標(biāo)簽是連續(xù)值,則使用ks檢驗
3、如果特征是連續(xù)值而標(biāo)簽是二類的,則使用ks檢驗或 Mann-Whitney U test
4、如果特征是連續(xù)值而標(biāo)簽也是連續(xù)值,則使用kendall相關(guān)系數(shù)
開源實現(xiàn):GitHub - blue-yonder/tsfresh: Automatic extraction of relevant features from time series:
最后大家喜歡的話可以點(diǎn)贊和關(guān)注哦(^o^)/~
本文為華為云社區(qū)用戶原創(chuàng)內(nèi)容,轉(zhuǎn)載時必須標(biāo)注文章的來源(華為云社區(qū)),文章鏈接,文章作者等基本信息,否則作者和本社區(qū)有權(quán)追究責(zé)任。
總結(jié)
以上是生活随笔為你收集整理的[机器学习]总结特征工程干货的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php用什么部署
- 下一篇: 微软NNI---AutoFeatureE