生活随笔
收集整理的這篇文章主要介紹了
CatBoost 模型中标称型特征转换成数字型特征
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
接上一篇文章 CatBoost 模型中標稱特征的處理 ,這篇說一下CatBoot中實現的標稱特征處理方法。
可以查看官網原文 Transforming categorical features to numerical features。
CatBoost 支持兩種類型的特征。一種是數值型,例如高度(182, 173)和任何人的二值特征(0, 1)。另外一種是標稱型特征。只能取有限個可能的值,通常這些值是固定的,例如歌曲風格(“rock”, “indie”, “pop”)。
標稱型特征處理流程
隨機排列輸入樣例。將標簽轉換成整型。根據機器學習問題,做不同的處理。 回歸問題:離散化目標值。CatBoost 中有一個 Binarization 過程。開始是有一個參數 K, 目標值會離散到K+1 個桶中,每個值只在其中一個桶。這樣,重新得到一個標簽,取值從0到K。分類問題:可能的目標值只有0和1。多分類問題:標簽的值應該是整型的,并且從0開始。 使用下面的方法將類別特征轉換成數值型特征。CatBoost中根據開始設置的參數選擇使用何種方法。回顧一下上一篇說的,有一個觀察數據集D=(Xi,Yi)i=1…n\mathcal{D} = {(X_i ,Y_i )}_{i=1 \dots n}D=(Xi?,Yi?)i=1…n?,隨機排雷后得到序列σ=(σ1,…,σn)\sigma=(\sigma_1, \dots, \sigma_n)σ=(σ1?,…,σn?)。依次從σ1\sigma_1σ1?到σn\sigma_nσn?遍歷該隨機序列。 Borders。使用這個公式將標稱值的轉換成數值,按標簽所屬的桶分別計算i∈[0,k?1]i\in[0,k-1]i∈[0,k?1]。ctri=countInClass+priortotalCount+1ctr_i=\frac{countInClass + prior }{totalCount + 1}ctri?=totalCount+1countInClass+prior?假設當前遍歷到σk\sigma_kσk? (k<n)(k<n)(k<n),對應的標稱特征的值是α\alphaα,類別值是β\betaβ(β∈[0,k?1]\beta\in[0,k-1]β∈[0,k?1])。totalCount是σ1\sigma_1σ1?到σk?1\sigma_{k-1}σk?1?中標稱特征都是α\alphaα的個數。countInClass是σ1\sigma_1σ1?到σk?1\sigma_{k-1}σk?1?中標簽值大于β\betaβ的個數。prior是一個給定的常量。Buckets。使用的公式與Borders相同,按標簽所屬的桶分別計算i∈[0,k]i\in[0,k]i∈[0,k](創建了K+1個桶),但是參數表示的意義不同。ctr1=countInClass+priortotalCount+1ctr_1=\frac{countInClass + prior }{totalCount + 1}ctr1?=totalCount+1countInClass+prior?其中,totalCount和prior表示的意義想同。countInClass是σ1\sigma_1σ1?到σk\sigma_kσk?中標簽值等于β\betaβ(β∈[0,k]\beta\in[0,k]β∈[0,k])的個數。BinarizedTargetMeanValue。使用的公式與Borders相同,但是不區分標簽所屬的桶。ctr=countInClass+priortotalCount+1ctr=\frac{countInClass + prior }{totalCount + 1}ctr=totalCount+1countInClass+prior?其中totalCount和prior表示的意義想同。countInClass一個比值,σ1\sigma_1σ1?到σk?1\sigma_{k-1}σk?1?中標稱特征都是α\alphaα的樣例的轉換后類別值的和,除以轉換后最大的標簽值kkk。Counter。這種計算方法不依賴標簽值。訓練集和驗證集的標稱值分別計算。使用下面這個公式計算類別屬性值對應的數值。ctr=curCount+priormaxCount+1ctr=\frac{curCount + prior }{maxCount + 1}ctr=maxCount+1curCount+prior?假設當前計算的類別特征的屬性值是α\alphaα 訓練集中。curCount是類別特征是α\alphaα的個數。maxCount是訓練集中類別特征出現最多的次數。prior是一個給定的常量。測試集中。prior是一個給定的常量。其他兩個參數的計算方法又分三種情況: PrefixTest,curCount等于訓練集中的curCount加上截止當前測試樣例同類別特征值的樣例個數。maxCount是訓練集和截止當前測試樣例組成的新集合中類別特征出現最多的次數。FullTest ,取整個數據集(訓練數據集加是測試數據集),curCount是類別特征是α\alphaα的個數。maxCount是訓練集中類別特征出現最多的次數。SkipTest,不考慮測試集,使用訓練集情況中計算的curCount和maxCount。
處理樣本中有多個標稱例子
假設訓練集中每個樣例都有兩個類別特征:音樂流派(“rock”, “indie”)和音樂風格(“dance”, “classical”)。這些特征可以有不同的組合。CatBoost 創建一個新的組合特征,這個特征包含這些值(“dance rock”, “classic rock”, “dance indie”, or “indie classical”)。任何多的類別特征都可以組合。
標稱特征轉成數值的例子
首先由一個如下樣例的數據集
Object #f1f_1f1?f2f_2f2?…fnf_nfn?Function value
| 1 | 2 | 40 | … | rock | 1 |
| 2 | 3 | 55 | … | indie | 0 |
| 3 | 5 | 34 | … | pop | 1 |
| 4 | 2 | 45 | … | rock | 0 |
| 5 | 4 | 53 | … | rock | 0 |
| 6 | 2 | 48 | … | indie | 1 |
| 7 | 5 | 42 | … | rock | 1 |
| … | | | | | |
對樣本多次隨機排序,得到多個隨機排序。其中一個隨機排序如下:
Object #f1f_1f1?f2f_2f2?…fnf_nfn?Function value
| 1 | 4 | 53 | … | rock | 0 |
| 2 | 3 | 55 | … | indie | 0 |
| 3 | 2 | 40 | … | rock | 1 |
| 4 | 5 | 42 | … | rock | 1 |
| 5 | 5 | 34 | … | pop | 1 |
| 6 | 2 | 48 | … | indie | 1 |
| 7 | 2 | 45 | … | rock | 0 |
| … | | | | | |
使用如下公式計算標稱值的數值。公式類似于Buckets,由于是二分類問題,不對標簽分桶(分組)。avg_target=countInClass+priortotalCount+1avg\_target=\frac{countInClass + prior }{totalCount + 1}avg_target=totalCount+1countInClass+prior?countInClass是σ1\sigma_1σ1?到σk?1\sigma_{k-1}σk?1?中,特征值都是α\alphaα的樣例且標簽值等于111的個數。prior設為0.05。
對于第1個樣例:countInClass=0countInClass=0countInClass=0,totalCount=0totalCount=0totalCount=0, 所以avg_target=0+0.050+1=0.05avg\_target=\frac{0+ 0.05}{0+ 1}=0.05avg_target=0+10+0.05?=0.05
對于第2個樣例:countInClass=0countInClass=0countInClass=0,totalCount=0totalCount=0totalCount=0, 所以avg_target=0+0.050+1=0.05avg\_target=\frac{0+ 0.05}{0+ 1}=0.05avg_target=0+10+0.05?=0.05
對于第3個樣例:countInClass=0countInClass=0countInClass=0,totalCount=1totalCount=1totalCount=1, 所以avg_target=0+0.051+1=0.025avg\_target=\frac{0+ 0.05}{1+ 1}=0.025avg_target=1+10+0.05?=0.025
如此計算,得到如下數值:
Object #f1f_1f1?f2f_2f2?…fnf_nfn?Function value
| 1 | 4 | 53 | … | 0.05 | 0 |
| 2 | 3 | 55 | … | 0.05 | 0 |
| 3 | 2 | 40 | … | 0.025 | 1 |
| 4 | 5 | 42 | … | 0.35 | 1 |
| 5 | 5 | 34 | … | 0.05 | 1 |
| 6 | 2 | 48 | … | 0.025 | 1 |
| 7 | 2 | 45 | … | 0.5125 | 0 |
| … | | | | | |
總結
這寫方式轉換方式看起來有些隨機。不知道論文上是否有證明,有機會以后再補上。
總結
以上是生活随笔為你收集整理的CatBoost 模型中标称型特征转换成数字型特征的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。