機器學習常見的編碼方法簡介
在實際的問題中,經常會遇到自變數是分類變數的問題,比如血型、學歷、職稱級別、衣服型號等。在處理這些變數的時候,通常會對變數進行編碼處理,使得原來的變數取值變成數學上的數字,比如0,1等數值,這樣可以方便代入模型來進行實際**和分析。在本文中,我們將介紹幾種常見的編碼方法,通過學習編碼方法來加深機器學習中對分類變數處理的認識。
常見的結構型資料可以分為四種:定比資料、定距資料、定序資料、定類資料,在之前的文章已經提到過了,此處不再贅述。對於分類變數的處理,其實要分有順序的分類變數和無順序的分類變數,即定序資料和定類資料。下面通過案例來分別介紹。
首先是有順序的分類變數,這種變數的處理我們通常進行順序編碼,即在編碼後依舊保持了原有變數取值的順序關係。比如學歷可能劃分為:中專以及中專以下、大專、本科、研究生、博士生等,在這個時候我們發現,這些學歷其實有順序的,所以這個時候我們使用序號編碼進行處理,按順序編碼得到:中專以及中專以下編碼為1,大專編碼為2,本科編碼為3,研究生編碼為4,博士生編碼為5。在編碼後,原有的變數(學歷)順序沒有被改變,編碼後的值從1,2,3,4,5為遞增的關係。其實前面提到的衣服型號編碼也是可以進行順序編碼的,衣服型號通常有:s,m,l,xl,xxl等,對應的型號是小型、中型、大型、特大型、特特大型。按順序編碼,我們把s型編碼為1、m型編碼為2、l型編碼為3、xl型編碼為4、xxl型編碼為5。在編碼後,原有的變數(衣服型號)順序也沒有被改變,編碼後的值從1,2,3,4,5為衣服型號遞增的關係。
其次我們來看下無順序的分類變數,這種變數的處理我們通常是有兩種,啞變數編碼(dummy)和獨熱編碼(one-hot)。這兩種編碼形式都可以保留原有的變數資訊,並且不會在編碼後增加新的順序關係等,較好地使得變數的類別資訊保持不變。我們在此處拿高中的學科分班來舉例,假設某地高考有理科、文科、體育、藝術這四種方向,那麼高中的學科分班也會根據這個來分類,我們觀察這四種方向是沒有順序關係的,所以使用啞變數或獨熱編碼進行編碼處理。具體的編碼形式見下表。
學科分班
啞變數編碼
獨熱編碼
理科0 0 0
1 0 0 0
文科1 0 0
0 1 0 0
體育0 1 0
0 0 1 0
藝術0 0 1
0 0 0 1
根據上表我們發現,獨熱編碼和啞變數都可以對無順序的分類變數進行處理,但是啞變數編碼比獨熱編碼有細微的區別,即啞變數其中有乙個變數的編碼都是0,並且比獨熱編碼要少1個維度的取值,只有3個維度即可反映原有的分類變數,而獨熱編碼需要4個維度的取值。與此同時,獨熱編碼是把某個變數的某個狀態值為1,其他都是0。其實從實用角度來說,兩種編碼的形式都是比較好的,可以把無順序的分類特徵進行很好的處理並且不丟失變數資訊。但是對於類別較多的問題,使用這兩種編碼都會使得自變數的數量大大增加,所以可以結合主成分分析方法或因子分析方法來進行降維。
總的來說,對於初學者來說,學習編碼方法是有必要的,因為在實際比賽或是研究中,會遇到很多的分類變數,根據實際情況我們可以使用不同的編碼方法,但是使用編碼後不能使得原有變數的資訊進行增加或是減少,否則編碼會引起很大的問題。
泛統計理論初探 初探XGBoost方法
初探xgboost方法 在本文中將會繼續介紹整合學習裡的boosting思路,並且會選用xgboost方法來介紹。xgboost是一種優化過的提公升學習方法,該方法在一些競賽或者專案中經常被使用,它的 正確率是比較高的,總體來說效能不錯。其實從該方法的名字我們可以發現,這是一種在gbdt方法的基礎上...
泛統計理論初探 孤立森林簡介
孤立森林演算法簡介 孤立森林是一種用於異常檢測的演算法,本文將對該演算法進行簡介,包括演算法的理念 步驟 以及使用場景。常見的異常檢測方法主要是統計學課本上學到一些方法,比如六西格瑪方法 線性回歸檢測方法 箱線圖檢測方法 主成分分析方法等。上述的這些方法是比較常見的,比如六西格瑪方法就是根據資料分布...
泛統計理論初探 梯度下降新方法簡介
梯度下降新方法簡介 在之前的兩篇文章裡,我們介紹了梯度下降方法的歷史和演變,從批量梯度下降 隨機梯度下降方法到後續的新方法如動量加速法 adagrad rmsprop adadelta方法等,本文再介紹幾種比較新的梯度下降方法,即adam方法 以及在這個基礎上的adamax amsgrad等優化方法...