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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

线性稀疏自编码机_特征工程之特征缩放amp;特征编码

發布時間:2025/4/5 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 线性稀疏自编码机_特征工程之特征缩放amp;特征编码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

機器學習入門系列(2)--如何構建一個完整的機器學習項目,第五篇!

本篇文章會繼續介紹特征工程的內容,這次會介紹特征縮放和特征編碼,前者主要是歸一化和正則化,用于消除量綱關系的影響,后者包括了序號編碼、獨熱編碼等,主要是處理類別型、文本型以及連續型特征。


3.2 特征縮放

特征縮放主要分為兩種方法,歸一化和正則化。

3.2.1 歸一化

  • 歸一化(Normalization),也稱為標準化,這里不僅僅是對特征,實際上對于原始數據也可以進行歸一化處理,它是將特征(或者數據)都縮放到一個指定的大致相同的數值區間內。
  • 歸一化的兩個原因:
    • 某些算法要求樣本數據或特征的數值具有零均值和單位方差;
    • 為了消除樣本數據或者特征之間的量綱影響,即消除數量級的影響。如下圖所示是包含兩個屬性的目標函數的等高線
      • 數量級的差異將導致量級較大的屬性占據主導地位。從下圖左看到量級較大的屬性會讓橢圓的等高線壓縮為直線,使得目標函數僅依賴于該屬性。
      • 數量級的差異會導致迭代收斂速度減慢。原始的特征進行梯度下降時,每一步梯度的方向會偏離最小值(等高線中心點)的方向,迭代次數較多,且學習率必須非常小,否則非常容易引起寬幅震蕩。但經過標準化后,每一步梯度的方向都幾乎指向最小值(等高線中心點)的方向,迭代次數較少。
      • 所有依賴于樣本距離的算法對于數據的數量級都非常敏感。比如 KNN 算法需要計算距離當前樣本最近的 k 個樣本,當屬性的量級不同,選擇的最近的 k 個樣本也會不同。

  • 常用的兩種歸一化方法:
    • 線性函數歸一化(Min-Max Scaling)。它對原始數據進行線性變換,使得結果映射到[0,1]的范圍,實現對原始數據的等比縮放,公式如下:

    其中 X 是原始數據,

    分別表示數據最大值和最小值。
    • 零均值歸一化(Z-Score Normalization)。它會將原始數據映射到均值為 0,標準差為 1 的分布上。假設原始特征的均值是、標準差是,則公式如下:

  • 如果數據集分為訓練集、驗證集、測試集,那么三個數據集都采用相同的歸一化參數,數值都是通過訓練集計算得到,即上述兩種方法中分別需要的數據最大值、最小值,方差和均值都是通過訓練集計算得到(這個做法類似于深度學習中批歸一化,BN的實現做法)。
  • 歸一化不是萬能的,實際應用中,通過梯度下降法求解的模型是需要歸一化的,這包括線性回歸、邏輯回歸、支持向量機、神經網絡等模型。但決策樹模型不需要,以 C4.5 算法為例,決策樹在分裂結點時候主要依據數據集 D 關于特征 x 的信息增益比,而信息增益比和特征是否經過歸一化是無關的,歸一化不會改變樣本在特征 x 上的信息增益。
  • 3.2.2 正則化

  • 正則化是將樣本或者特征的某個范數(如 L1、L2 范數)縮放到單位 1。
  • 假設數據集為:

    對樣本首先計算 Lp 范數,得到:

    正則化后的結果是:每個屬性值除以其 Lp 范數

  • 正則化的過程是針對單個樣本的,對每個樣本將它縮放到單位范數。
    歸一化是針對單個屬性的,需要用到所有樣本在該屬性上的值。
  • 通常如果使用二次型(如點積)或者其他核方法計算兩個樣本之間的相似性時,該方法會很有用。
  • 3.3 特征編碼

    3.3.1 序號編碼(Ordinal Encoding)

    定義:序號編碼一般用于處理類別間具有大小關系的數據。

    比如成績,可以分為高、中、低三個檔次,并且存在“高>中>低”的大小關系,那么序號編碼可以對這三個檔次進行如下編碼:高表示為 3,中表示為 2,低表示為 1,這樣轉換后依然保留了大小關系。

    3.3.2 獨熱編碼(One-hot Encoding)

    定義:獨熱編碼通常用于處理類別間不具有大小關系的特征。

    獨熱編碼是采用 N 位狀態位來對 N 個可能的取值進行編碼。比如血型,一共有 4 個取值(A、B、AB 以及 O 型),那么獨熱編碼會將血型轉換為一個 4 維稀疏向量,分別表示上述四種血型為:

    • A型:(1,0,0,0)
    • B型:(0,1,0,0)
    • AB型:(0,0,1,0)
    • O型:(0,0,0,1)

    獨熱編碼的優點有以下幾個:

    • 能夠處理非數值屬性。比如血型、性別等
    • 一定程度上擴充了特征。
    • 編碼后的向量是稀疏向量,只有一位是 1,其他都是 0,可以利用向量的稀疏來節省存儲空間。
    • 能夠處理缺失值。當所有位都是 0,表示發生了缺失。此時可以采用處理缺失值提到的高維映射方法,用第 N+1 位來表示缺失值。

    當然,獨熱編碼也存在一些缺點:

    1.高維度特征會帶來以下幾個方面問題:

    • KNN 算法中,高維空間下兩點之間的距離很難得到有效的衡量;
    • 邏輯回歸模型中,參數的數量會隨著維度的增高而增加,導致模型復雜,出現過擬合問題;
    • 通常只有部分維度是對分類、預測有幫助,需要借助特征選擇來降低維度。

    2.決策樹模型不推薦對離散特征進行獨熱編碼,有以下兩個主要原因:

    • 產生樣本切分不平衡問題,此時切分增益會非常小。
      比如對血型做獨熱編碼操作,那么對每個特征是否 A 型、是否 B 型、是否 AB 型、是否 O 型,會有少量樣本是 1 ,大量樣本是 0。
      這種劃分的增益非常小,因為拆分之后:
      • 較小的那個拆分樣本集,它占總樣本的比例太小。無論增益多大,乘以該比例之后幾乎可以忽略。
      • 較大的那個拆分樣本集,它幾乎就是原始的樣本集,增益幾乎為零。
    • 影響決策樹的學習。
      決策樹依賴的是數據的統計信息。而獨熱碼編碼會把數據切分到零散的小空間上。在這些零散的小空間上,統計信息是不準確的,學習效果變差。
      本質是因為獨熱編碼之后的特征的表達能力較差。該特征的預測能力被人為的拆分成多份,每一份與其他特征競爭最優劃分點都失敗。最終該特征得到的重要性會比實際值低。

    3.3.3 二進制編碼(Binary Encoding)

    二進制編碼主要分為兩步:

  • 先采用序號編碼給每個類別賦予一個類別 ID;
  • 接著將類別 ID 對應的二進制編碼作為結果。
  • 繼續以血型為例子,如下表所示:

    血型類別 ID二進制表示獨熱編碼A10 0 11 0 0 0B20 1 00 1 0 0AB30 1 10 0 1 0O41 0 00 0 0 1

    從上表可以知道,二進制編碼本質上是利用二進制對類別 ID 進行哈希映射,最終得到 0/1 特征向量,并且特征維度小于獨熱編碼,更加節省存儲空間。

    3.3.4 二元化

    定義:特征二元化就是將數值型的屬性轉換為布爾型的屬性。通常用于假設屬性取值分布是伯努利分布的情形。

    特征二元化的算法比較簡單。對屬性 j 指定一個閾值 m。

    • 如果樣本在屬性 j 上的值大于等于 m, 則二元化后為 1;
    • 如果樣本在屬性 j 上的值小于 m,則二元化為 0

    根據上述定義,m 是一個關鍵的超參數,它的取值需要結合模型和具體的任務來選擇。

    3.3.5 離散化

    定義:顧名思義,離散化就是將連續的數值屬性轉換為離散的數值屬性。

    那么什么時候需要采用特征離散化呢?

    這背后就是需要采用“海量離散特征+簡單模型”,還是“少量連續特征+復雜模型”的做法了。

    • 對于線性模型,通常使用“海量離散特征+簡單模型”。
      • 優點:模型簡單
      • 缺點:特征工程比較困難,但一旦有成功的經驗就可以推廣,并且可以很多人并行研究。
    • 對于非線性模型(比如深度學習),通常使用“少量連續特征+復雜模型”。
      • 優點:不需要復雜的特征工程
      • 缺點:模型復雜

    分桶

    1.離散化的常用方法是分桶:

    • 將所有樣本在連續的數值屬性 j 的取值從小到大排列 。
    • 然后從小到大依次選擇分桶邊界 。其中:
      • M 為分桶的數量,它是一個超參數,需要人工指定。
      • 每個桶的大小 也是一個超參數,需要人工指定。
    • 給定屬性 j 的取值,對其進行分桶:
      • 如果,則分桶編號是 0。分桶后的屬性的取值為 0;
      • 如果,則分桶編號是 k。分桶后的屬性取值是 k;
      • 如果 , 則分桶編號是 M。分桶后的屬性取值是 M。

    2.分桶的數量和邊界通常需要人工指定。一般有兩種方法:

    • 根據業務領域的經驗來指定。如:對年收入進行分桶時,根據 2017 年全國居民人均可支配收入約為 2.6 萬元,可以選擇桶的數量為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 。
    • 根據模型指定。根據具體任務來訓練分桶之后的數據集,通過超參數搜索來確定最優的分桶數量和分桶邊界。

    3.選擇分桶大小時,有一些經驗指導:

    • 分桶大小必須足夠小,使得桶內的屬性取值變化對樣本標記的影響基本在一個不大的范圍。
      即不能出現這樣的情況:單個分桶的內部,樣本標記輸出變化很大。
    • 分桶大小必須足夠大,使每個桶內都有足夠的樣本。
      如果桶內樣本太少,則隨機性太大,不具有統計意義上的說服力。
    • 每個桶內的樣本盡量分布均勻。

    特性

    1.在工業界很少直接將連續值作為邏輯回歸模型的特征輸入,而是將連續特征離散化為一系列 0/1 的離散特征。

    其優勢有:

    • 離散化之后得到的稀疏向量,內積乘法運算速度更快,計算結果方便存儲。
    • 離散化之后的特征對于異常數據具有很強的魯棒性。
      如:銷售額作為特征,當銷售額在 [30,100) 之間時,為1,否則為 0。如果未離散化,則一個異常值 10000 會給模型造成很大的干擾。由于其數值較大,它對權重的學習影響較大。
    • 邏輯回歸屬于廣義線性模型,表達能力受限,只能描述線性關系。特征離散化之后,相當于引入了非線性,提升模型的表達能力,增強擬合能力。
      假設某個連續特征 j ,它離散化為 M 個 0/1 特征 。則:$w_j * x_j -> w_{j1} * x_{j1}^+ w_{j2} * x_{j2}^ + ...+w_{jM} * x_{jM}^` $
      。其中 是離散化之后的新的特征,它們的取值空間都是 {0, 1}。
      上式右側是一個分段線性映射,其表達能力更強。
    • 離散化之后可以進行特征交叉。假設有連續特征j ,離散化為 N 個 0/1 特征;連續特征 k,離散化為 M 個 0/1 特征,則分別進行離散化之后引入了 N+M 個特征。
      假設離散化時,并不是獨立進行離散化,而是特征 j,k 聯合進行離散化,則可以得到 N*M 個組合特征。這會進一步引入非線性,提高模型表達能力。
    • 離散化之后,模型會更穩定。
      如對銷售額進行離散化,[30,100) 作為一個區間。當銷售額在40左右浮動時,并不會影響它離散化后的特征的值。
      但是處于區間連接處的值要小心處理,另外如何劃分區間也是需要仔細處理。

    2.特征離散化簡化了邏輯回歸模型,同時降低模型過擬合的風險。

    能夠對抗過擬合的原因:經過特征離散化之后,模型不再擬合特征的具體值,而是擬合特征的某個概念。因此能夠對抗數據的擾動,更具有魯棒性。

    另外它使得模型要擬合的值大幅度降低,也降低了模型的復雜度。


    小結

    特征縮放是非常常用的方法,特別是歸一化處理特征數據,對于利用梯度下降來訓練學習模型參數的算法,有助于提高訓練收斂的速度;而特征編碼,特別是獨熱編碼,也常用于對結構化數據的數據預處理。


    參考:

    • 《百面機器學習》第一章 特征工程
    • 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

    總結

    以上是生活随笔為你收集整理的线性稀疏自编码机_特征工程之特征缩放amp;特征编码的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。