離散變數的編碼方式

2021-09-29 11:23:42 字數 2016 閱讀 7740

在機器學習問題中,我們通過訓練資料集學習得到的其實就是一組模型的引數,然後通過學習得到的引數確定模型的表示,最後用這個模型再去進行我們後續的**分類等工作。在模型訓練過程中,我們會對訓練資料集進行抽象、抽取大量特徵,這些特徵中有離散型特徵也有連續型特徵。若此時你使用的模型是簡單模型(如lr),那麼通常我們會對連續型特徵進行離散化操作,然後再對離散的特徵,進行one-hot編碼或啞變數編碼或labelencoder,我們來介紹三種編碼方式。

one-hot的基本思想:將離散型特徵的每一種取值都看成一種狀態,若你的這一特徵中有n個不相同的取值,那麼我們就可以將該特徵抽象成n種不同的狀態,one-hot編碼保證了每乙個取值只會使得一種狀態處於「啟用態」,也就是說這n種狀態中只有乙個狀態位值為1,其他狀態位都是0

啞變數編碼直觀的解釋就是任意的將乙個狀態位去除。還是拿上面的例子來說,我們用4個狀態位就足夠反應上述5個類別的資訊,也就是我們僅僅使用前四個狀態位 [0,0,0,0] 就可以表達博士了。只是因為對於乙個我們研究的樣本,他已不是小學生、也不是中學生、也不是大學生、又不是研究生,那麼我們就可以預設他是博士,是不是。(額,當然他現實生活也可能上幼兒園,但是我們統計的樣本中他並不是,-)。所以,我們用啞變數編碼可以將上述5類表示成:

通過上面的例子,我們可以看出它們的「思想路線」是相同的,只是啞變數編碼覺得one-hot編碼太羅嗦了(一些很明顯的事實還說的這麼清楚),所以它就很那麼很明顯的東西省去了。這種簡化不能說到底好不好,這要看使用的場景。下面我們以乙個例子來說明:

假設我們現在獲得了乙個模型,這裡自變數滿足(因為特徵是one-hot獲得的,所有只有乙個狀態位為1,其他都為了0,所以它們加和總是等於1),故我們可以用表示第三個特徵,將其帶入模型中,得到:

這時,我們就驚奇的發現(a

0a_0

a0​,a

1a_1

a1​,a

2a_2

a2​,a

3a_3

a3​)和(a0+

a3a_0+a_3

a0​+a3

​,a1−a

3a_1-a_3

a1​−a3

​,a2−a

3a_2-a_3

a2​−a3

​,0)這兩個引數是等價的!那麼我們模型的穩定性就成了乙個待解決的問題。這個問題這麼解決呢?有三種方法:

(1)使用正則化手段,將引數的選擇上加乙個限制,就是選擇引數元素值小的那個作為最終引數,這樣我們得到的引數就唯一了,模型也就穩定了。

(2)把偏置項去掉,這時我們發現也可以解決同乙個模型引數等價的問題。因為有了bias項,所以和我們去掉bias項的模型是完全不同的模型,不存在引數等價的問題。

(3)再加上bias項的前提下,使用啞變數編碼代替one-hot編碼,這時去除了,也就不存在之前一種特徵可以用其他特徵表示的問題了。

labelencoder是對不連續的數字或文字編號。

labelencoder可以將[中國,美國,日本]轉化為[0,1,2],但這樣會出現乙個問題:中國和日本的平均會等於日

本。 決策樹、隨機森林演算法等可以直接處理這樣的類別型別特徵,並且這種方法使用的特徵空間很少。

1、離散特徵的取值之間沒有大小的意義,比如color:[red,blue],那麼就使用one-hot編碼或啞變數編碼。

我們使用one-hot編碼時,通常我們的模型不加bias項 或者 加上bias項然後使用正則化手段去約束引數;

當 我們使用啞變數編碼時,通常我們的模型都會加bias項,因為不加bias項會導致固有屬性的丟失。

2、離散特徵的取值有大小的意義,比如size:[x,xl,xxl],那麼就使用數值的對映

變數編碼方式

在機器學習問題中,我們通過訓練資料集學習得到的其實就是一組模型的引數,然後通過學習得到的引數確定模型的表示,最後用這個模型再去進行我們後續的 分類等工作。在模型訓練過程中,我們會對訓練資料集進行抽象 抽取大量特徵,這些特徵中有離散型特徵也有連續型特徵。若此時你使用的模型是簡單模型 如lr 那麼通常我...

變數編碼方式

機器學習模型只能處理數字。數值 連續 定量 變數是可以在有限或無限區間內取任何值的變數,它們可以很自然地用數字表示,所以可以在模型中直接使用。原始類別變數通常以字串的形式存在,在傳入模型之前需要變換。類別編碼的兩個基本方法是獨熱編碼 onehot encoding 和標籤編碼 label encod...

離散變數和連續變數

離散變數是指其數值只能用自然數或整數單位計算的則為離散變數.例如,企業個數,職工人數,裝置台數等,只能按計量單位數計數,這種變數的數值一般用計數方法取得.反之,在一定區間內可以任意取值的變數叫連續變數,其數值是連續不斷的,相鄰兩個數值可作無限分割,即可取無限個數值.例如,生產零件的規格尺寸,人體測量...