线性稀疏自编码机_特征工程之特征缩放amp;特征编码
機(jī)器學(xué)習(xí)入門系列(2)--如何構(gòu)建一個(gè)完整的機(jī)器學(xué)習(xí)項(xiàng)目,第五篇!
本篇文章會(huì)繼續(xù)介紹特征工程的內(nèi)容,這次會(huì)介紹特征縮放和特征編碼,前者主要是歸一化和正則化,用于消除量綱關(guān)系的影響,后者包括了序號(hào)編碼、獨(dú)熱編碼等,主要是處理類別型、文本型以及連續(xù)型特征。
3.2 特征縮放
特征縮放主要分為兩種方法,歸一化和正則化。
3.2.1 歸一化
- 某些算法要求樣本數(shù)據(jù)或特征的數(shù)值具有零均值和單位方差;
- 為了消除樣本數(shù)據(jù)或者特征之間的量綱影響,即消除數(shù)量級(jí)的影響。如下圖所示是包含兩個(gè)屬性的目標(biāo)函數(shù)的等高線
- 數(shù)量級(jí)的差異將導(dǎo)致量級(jí)較大的屬性占據(jù)主導(dǎo)地位。從下圖左看到量級(jí)較大的屬性會(huì)讓橢圓的等高線壓縮為直線,使得目標(biāo)函數(shù)僅依賴于該屬性。
- 數(shù)量級(jí)的差異會(huì)導(dǎo)致迭代收斂速度減慢。原始的特征進(jìn)行梯度下降時(shí),每一步梯度的方向會(huì)偏離最小值(等高線中心點(diǎn))的方向,迭代次數(shù)較多,且學(xué)習(xí)率必須非常小,否則非常容易引起寬幅震蕩。但經(jīng)過標(biāo)準(zhǔn)化后,每一步梯度的方向都幾乎指向最小值(等高線中心點(diǎn))的方向,迭代次數(shù)較少。
- 所有依賴于樣本距離的算法對(duì)于數(shù)據(jù)的數(shù)量級(jí)都非常敏感。比如 KNN 算法需要計(jì)算距離當(dāng)前樣本最近的 k 個(gè)樣本,當(dāng)屬性的量級(jí)不同,選擇的最近的 k 個(gè)樣本也會(huì)不同。
- 線性函數(shù)歸一化(Min-Max Scaling)。它對(duì)原始數(shù)據(jù)進(jìn)行線性變換,使得結(jié)果映射到[0,1]的范圍,實(shí)現(xiàn)對(duì)原始數(shù)據(jù)的等比縮放,公式如下:
其中 X 是原始數(shù)據(jù),
分別表示數(shù)據(jù)最大值和最小值。- 零均值歸一化(Z-Score Normalization)。它會(huì)將原始數(shù)據(jù)映射到均值為 0,標(biāo)準(zhǔn)差為 1 的分布上。假設(shè)原始特征的均值是、標(biāo)準(zhǔn)差是,則公式如下:
3.2.2 正則化
假設(shè)數(shù)據(jù)集為:
對(duì)樣本首先計(jì)算 Lp 范數(shù),得到:
正則化后的結(jié)果是:每個(gè)屬性值除以其 Lp 范數(shù)
歸一化是針對(duì)單個(gè)屬性的,需要用到所有樣本在該屬性上的值。
3.3 特征編碼
3.3.1 序號(hào)編碼(Ordinal Encoding)
定義:序號(hào)編碼一般用于處理類別間具有大小關(guān)系的數(shù)據(jù)。
比如成績,可以分為高、中、低三個(gè)檔次,并且存在“高>中>低”的大小關(guān)系,那么序號(hào)編碼可以對(duì)這三個(gè)檔次進(jìn)行如下編碼:高表示為 3,中表示為 2,低表示為 1,這樣轉(zhuǎn)換后依然保留了大小關(guān)系。
3.3.2 獨(dú)熱編碼(One-hot Encoding)
定義:獨(dú)熱編碼通常用于處理類別間不具有大小關(guān)系的特征。
獨(dú)熱編碼是采用 N 位狀態(tài)位來對(duì) N 個(gè)可能的取值進(jìn)行編碼。比如血型,一共有 4 個(gè)取值(A、B、AB 以及 O 型),那么獨(dú)熱編碼會(huì)將血型轉(zhuǎn)換為一個(gè) 4 維稀疏向量,分別表示上述四種血型為:
- A型:(1,0,0,0)
- B型:(0,1,0,0)
- AB型:(0,0,1,0)
- O型:(0,0,0,1)
獨(dú)熱編碼的優(yōu)點(diǎn)有以下幾個(gè):
- 能夠處理非數(shù)值屬性。比如血型、性別等
- 一定程度上擴(kuò)充了特征。
- 編碼后的向量是稀疏向量,只有一位是 1,其他都是 0,可以利用向量的稀疏來節(jié)省存儲(chǔ)空間。
- 能夠處理缺失值。當(dāng)所有位都是 0,表示發(fā)生了缺失。此時(shí)可以采用處理缺失值提到的高維映射方法,用第 N+1 位來表示缺失值。
當(dāng)然,獨(dú)熱編碼也存在一些缺點(diǎn):
1.高維度特征會(huì)帶來以下幾個(gè)方面問題:
- KNN 算法中,高維空間下兩點(diǎn)之間的距離很難得到有效的衡量;
- 邏輯回歸模型中,參數(shù)的數(shù)量會(huì)隨著維度的增高而增加,導(dǎo)致模型復(fù)雜,出現(xiàn)過擬合問題;
- 通常只有部分維度是對(duì)分類、預(yù)測有幫助,需要借助特征選擇來降低維度。
2.決策樹模型不推薦對(duì)離散特征進(jìn)行獨(dú)熱編碼,有以下兩個(gè)主要原因:
- 產(chǎn)生樣本切分不平衡問題,此時(shí)切分增益會(huì)非常小。
比如對(duì)血型做獨(dú)熱編碼操作,那么對(duì)每個(gè)特征是否 A 型、是否 B 型、是否 AB 型、是否 O 型,會(huì)有少量樣本是 1 ,大量樣本是 0。
這種劃分的增益非常小,因?yàn)椴鸱种?#xff1a;- 較小的那個(gè)拆分樣本集,它占總樣本的比例太小。無論增益多大,乘以該比例之后幾乎可以忽略。
- 較大的那個(gè)拆分樣本集,它幾乎就是原始的樣本集,增益幾乎為零。
- 影響決策樹的學(xué)習(xí)。
決策樹依賴的是數(shù)據(jù)的統(tǒng)計(jì)信息。而獨(dú)熱碼編碼會(huì)把數(shù)據(jù)切分到零散的小空間上。在這些零散的小空間上,統(tǒng)計(jì)信息是不準(zhǔn)確的,學(xué)習(xí)效果變差。
本質(zhì)是因?yàn)楠?dú)熱編碼之后的特征的表達(dá)能力較差。該特征的預(yù)測能力被人為的拆分成多份,每一份與其他特征競爭最優(yōu)劃分點(diǎn)都失敗。最終該特征得到的重要性會(huì)比實(shí)際值低。
3.3.3 二進(jìn)制編碼(Binary Encoding)
二進(jìn)制編碼主要分為兩步:
繼續(xù)以血型為例子,如下表所示:
血型類別 ID二進(jìn)制表示獨(dú)熱編碼A10 0 11 0 0 0B20 1 00 1 0 0AB30 1 10 0 1 0O41 0 00 0 0 1
從上表可以知道,二進(jìn)制編碼本質(zhì)上是利用二進(jìn)制對(duì)類別 ID 進(jìn)行哈希映射,最終得到 0/1 特征向量,并且特征維度小于獨(dú)熱編碼,更加節(jié)省存儲(chǔ)空間。
3.3.4 二元化
定義:特征二元化就是將數(shù)值型的屬性轉(zhuǎn)換為布爾型的屬性。通常用于假設(shè)屬性取值分布是伯努利分布的情形。
特征二元化的算法比較簡單。對(duì)屬性 j 指定一個(gè)閾值 m。
- 如果樣本在屬性 j 上的值大于等于 m, 則二元化后為 1;
- 如果樣本在屬性 j 上的值小于 m,則二元化為 0
根據(jù)上述定義,m 是一個(gè)關(guān)鍵的超參數(shù),它的取值需要結(jié)合模型和具體的任務(wù)來選擇。
3.3.5 離散化
定義:顧名思義,離散化就是將連續(xù)的數(shù)值屬性轉(zhuǎn)換為離散的數(shù)值屬性。
那么什么時(shí)候需要采用特征離散化呢?
這背后就是需要采用“海量離散特征+簡單模型”,還是“少量連續(xù)特征+復(fù)雜模型”的做法了。
- 對(duì)于線性模型,通常使用“海量離散特征+簡單模型”。
- 優(yōu)點(diǎn):模型簡單
- 缺點(diǎn):特征工程比較困難,但一旦有成功的經(jīng)驗(yàn)就可以推廣,并且可以很多人并行研究。
- 對(duì)于非線性模型(比如深度學(xué)習(xí)),通常使用“少量連續(xù)特征+復(fù)雜模型”。
- 優(yōu)點(diǎn):不需要復(fù)雜的特征工程
- 缺點(diǎn):模型復(fù)雜
分桶
1.離散化的常用方法是分桶:
- 將所有樣本在連續(xù)的數(shù)值屬性 j 的取值從小到大排列 。
- 然后從小到大依次選擇分桶邊界 。其中:
- M 為分桶的數(shù)量,它是一個(gè)超參數(shù),需要人工指定。
- 每個(gè)桶的大小 也是一個(gè)超參數(shù),需要人工指定。
- 給定屬性 j 的取值,對(duì)其進(jìn)行分桶:
- 如果,則分桶編號(hào)是 0。分桶后的屬性的取值為 0;
- 如果,則分桶編號(hào)是 k。分桶后的屬性取值是 k;
- 如果 , 則分桶編號(hào)是 M。分桶后的屬性取值是 M。
2.分桶的數(shù)量和邊界通常需要人工指定。一般有兩種方法:
- 根據(jù)業(yè)務(wù)領(lǐng)域的經(jīng)驗(yàn)來指定。如:對(duì)年收入進(jìn)行分桶時(shí),根據(jù) 2017 年全國居民人均可支配收入約為 2.6 萬元,可以選擇桶的數(shù)量為5。其中:
- 收入小于 1.3 萬元(人均的 0.5 倍),則為分桶 0 。
- 年收入在 1.3 萬元 ~5.2 萬元(人均的 0.5~2 倍),則為分桶 1 。
- 年收入在 5.3 萬元~26 萬元(人均的 2 倍~10 倍),則為分桶 2 。
- 年收入在 26 萬元~260 萬元(人均的 10 倍~100 倍),則為分桶 3 。
- 年收入超過 260 萬元,則為分桶 4 。
- 根據(jù)模型指定。根據(jù)具體任務(wù)來訓(xùn)練分桶之后的數(shù)據(jù)集,通過超參數(shù)搜索來確定最優(yōu)的分桶數(shù)量和分桶邊界。
3.選擇分桶大小時(shí),有一些經(jīng)驗(yàn)指導(dǎo):
- 分桶大小必須足夠小,使得桶內(nèi)的屬性取值變化對(duì)樣本標(biāo)記的影響基本在一個(gè)不大的范圍。
即不能出現(xiàn)這樣的情況:單個(gè)分桶的內(nèi)部,樣本標(biāo)記輸出變化很大。 - 分桶大小必須足夠大,使每個(gè)桶內(nèi)都有足夠的樣本。
如果桶內(nèi)樣本太少,則隨機(jī)性太大,不具有統(tǒng)計(jì)意義上的說服力。 - 每個(gè)桶內(nèi)的樣本盡量分布均勻。
特性
1.在工業(yè)界很少直接將連續(xù)值作為邏輯回歸模型的特征輸入,而是將連續(xù)特征離散化為一系列 0/1 的離散特征。
其優(yōu)勢有:
- 離散化之后得到的稀疏向量,內(nèi)積乘法運(yùn)算速度更快,計(jì)算結(jié)果方便存儲(chǔ)。
- 離散化之后的特征對(duì)于異常數(shù)據(jù)具有很強(qiáng)的魯棒性。
如:銷售額作為特征,當(dāng)銷售額在 [30,100) 之間時(shí),為1,否則為 0。如果未離散化,則一個(gè)異常值 10000 會(huì)給模型造成很大的干擾。由于其數(shù)值較大,它對(duì)權(quán)重的學(xué)習(xí)影響較大。 - 邏輯回歸屬于廣義線性模型,表達(dá)能力受限,只能描述線性關(guān)系。特征離散化之后,相當(dāng)于引入了非線性,提升模型的表達(dá)能力,增強(qiáng)擬合能力。
假設(shè)某個(gè)連續(xù)特征 j ,它離散化為 M 個(gè) 0/1 特征 。則:$w_j * x_j -> w_{j1} * x_{j1}^+ w_{j2} * x_{j2}^ + ...+w_{jM} * x_{jM}^` $
。其中 是離散化之后的新的特征,它們的取值空間都是 {0, 1}。
上式右側(cè)是一個(gè)分段線性映射,其表達(dá)能力更強(qiáng)。 - 離散化之后可以進(jìn)行特征交叉。假設(shè)有連續(xù)特征j ,離散化為 N 個(gè) 0/1 特征;連續(xù)特征 k,離散化為 M 個(gè) 0/1 特征,則分別進(jìn)行離散化之后引入了 N+M 個(gè)特征。
假設(shè)離散化時(shí),并不是獨(dú)立進(jìn)行離散化,而是特征 j,k 聯(lián)合進(jìn)行離散化,則可以得到 N*M 個(gè)組合特征。這會(huì)進(jìn)一步引入非線性,提高模型表達(dá)能力。 - 離散化之后,模型會(huì)更穩(wěn)定。
如對(duì)銷售額進(jìn)行離散化,[30,100) 作為一個(gè)區(qū)間。當(dāng)銷售額在40左右浮動(dòng)時(shí),并不會(huì)影響它離散化后的特征的值。
但是處于區(qū)間連接處的值要小心處理,另外如何劃分區(qū)間也是需要仔細(xì)處理。
2.特征離散化簡化了邏輯回歸模型,同時(shí)降低模型過擬合的風(fēng)險(xiǎn)。
能夠?qū)惯^擬合的原因:經(jīng)過特征離散化之后,模型不再擬合特征的具體值,而是擬合特征的某個(gè)概念。因此能夠?qū)箶?shù)據(jù)的擾動(dòng),更具有魯棒性。
另外它使得模型要擬合的值大幅度降低,也降低了模型的復(fù)雜度。
小結(jié)
特征縮放是非常常用的方法,特別是歸一化處理特征數(shù)據(jù),對(duì)于利用梯度下降來訓(xùn)練學(xué)習(xí)模型參數(shù)的算法,有助于提高訓(xùn)練收斂的速度;而特征編碼,特別是獨(dú)熱編碼,也常用于對(duì)結(jié)構(gòu)化數(shù)據(jù)的數(shù)據(jù)預(yù)處理。
參考:
- 《百面機(jī)器學(xué)習(xí)》第一章 特征工程
- https://blog.csdn.net/dream_angel_z/article/details/49388733#commentBox
- https://www.cnblogs.com/sherial/archive/2018/03/07/8522405.html
- https://gofisher.github.io/2018/06/22/%E6%95%B0%E6%8D%AE%E9%A2%84%E5%A4%84%E7%90%86/
- https://gofisher.github.io/2018/06/20/%E6%95%B0%E6%8D%AE%E6%8E%A2%E7%B4%A2/
- https://juejin.im/post/5b6a44f55188251aa8294b8c
- https://www.zhihu.com/question/47716840
- http://www.huaxiaozhuan.com/%E7%BB%9F%E8%AE%A1%E5%AD%A6%E4%B9%A0/chapters/8_feature_selection.html
總結(jié)
以上是生活随笔為你收集整理的线性稀疏自编码机_特征工程之特征缩放amp;特征编码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 主从同步不一致_涨知识!My
- 下一篇: 建国前盐城市滨海县教育、卫生、医疗、水利