one-hot編碼
來自專欄機器學習養成記
原文鏈接:one-hot編碼
微信公眾號:機器學習養成記 搜索添加微信公眾號:chenchenwings
與上一篇文章隔得有點久,粉快掉沒了,哈哈。這次講講one-hot編碼,也是第四範式很喜歡用的一個方法,有要去他家面試的,可以好好了解一下。
one-hot編碼
分類變數(定量特徵)與連續變數(定性特徵)。我們訓練模型的變數,一般分為兩種形式。以年收入增長率為例,如果取值為0-1之間任意數,則此時變數為連續變數。如果把增長率進行分段處理,表示成如下形式:[0,0.3],(0.3,0.6],(0.6,1],那麼此時變數為分類變數。
特徵轉換。對於分類變數,建模時要進行轉換,通常直接轉換為數字。比如將[0,0.3],(0.3,0.6],(0.6,1]表示為0,1,2。原因主要有兩點:
1,轉換後可以提高模型運算效率。
2,對於一些模型,比如邏輯回歸或計算距離時,無法對分類值直接進行計算。
直接轉換為數字,也會帶來一些問題:
1,轉換為數字後,默認為連續變數,違背最初設計,影響效率。
2,轉換後的值會影響同一特徵在樣本中的權重。比如轉換為1000和轉換為1對模型影響明顯不同。
因此,需要更好的編碼方式對特徵進行轉換。
one-hot編碼。one-hot編碼的定義是用N位狀態寄存器來對N個狀態進行編碼。比如上面的例子[0,0.3],(0.3,0.6],(0.6,1],有3個分類值,因此N為3,對應的one-hot編碼可以表示為100,010,001。
使用步驟。比如用LR演算法做模型,在數據處理過程中,可以先對連續變數進行離散化處理,然後對離散化後數據進行one-hot編碼,最後放入LR模型中。這樣可以增強模型的非線性能力。
R語言舉例。使用R中的默認數據集CO2,查看數據,發現Type,Treatment等為分類變數。
以Type變數為例,進行one-hot編碼。為了觀察結果方便,把順序打亂,觀察編碼後結果。
優缺點
1,通過one-hot編碼,可以對特徵進行了擴充。
2,連續變數經過編碼後,從一個權重變為多個權重,提升了模型的非線性能力。
3,不需要多參數進行歸一化處理。
4,隨著將大權重拆分成幾個小權重管理特徵,降低了異常值對模型的影響,增加了模型穩定性。
5,生成了較大的稀疏矩陣。
推薦文章
· Bagging演算法(R語言)
·靜態爬蟲與地址經緯度轉換(python)
·特徵工程(一):前向逐步回歸(R語言)
·聚類(三):KNN演算法(R語言)
·小案例(六):預測小偷行為(python)
·ggplot2:正負區分條形圖及美化
http://weixin.qq.com/r/CEjawvrE_aeGrb6h9x0a (二維碼自動識別)
掃描二維碼,關注我們。
如需轉載,請在開篇顯著位置註明作者和出處,並在文末放置機器學習養成記二維碼和添加原文鏈接。
快來關注我們吧!
推薦閱讀:
※清單|小白轉行數據分析
※利用Pandas進行醫院銷售數據分析
※泰坦尼克
※PowerBI實現全動態ABC分析幫助找出業務中的主要因素
※回顧|滴滴數據專家:數據分析師求職指導與職業規劃