1. 程式人生 > >在分類及預測任務中對高維類別(category)變數的預處理方法

在分類及預測任務中對高維類別(category)變數的預處理方法

引言

眾所周知,資料探勘中大約有80%的時間被用來做資料預處理。其中高維類別資料是資料探勘演算法(比如神經網路、線性or邏輯迴歸、SVM)最具挑戰性的資料型別。事實上,在一些像決策樹或者一些規則歸納的學習演算法中,對類別資料並不需要額外的處理。但是一些迴歸演算法卻需要將每一個輸入特徵都轉變成數值型別的特徵。而且在現實生活中,我們需要解決的分類或者預測問題的資料集中,充滿了類別屬性,比如:ZIP碼,SIC,IP,區號,域名等等。這就需要有種系統的方法能夠將高維類別資料對映到可供迴歸任務學習的準連續標量屬性上。我讀了篇SIGKDD上的解決上述問題的文章:A Preprocessing Scheme for High-Cardinality Categorical
Attributes in Classification and Prediction Problems

,並總結了文章的方法,特分享如下。

文章方法綜述

該論文提出了一種將高維類別屬性的資料對映到可供迴歸任務學習的準連續標量屬性上。轉換的關鍵之處在於將高維類別屬性的每個值對映成基於目標屬性的概率估計

  • 在分類場景下,被對映成,給定類別屬性值的條件下,目標屬性的後驗概率。
  • 在預測場景下,被對映成,給定類別屬性值的條件下,目標的期望值。

該方法聽起來是統計相關的,而且可以應用於分類與迴歸的任務場景中,它還優雅地處理了類別屬性是缺失值的情況。這種方法聽起來是不是牛掰爆了,大家會擔心,這種方法是不是很難呀。在這裡我要說的是:很簡單~。論文的組織結構如下:第二節講述了處理類別屬性的最通用的方法;第三節講述了本文要重點分析的方法;第四節描述了該方法在層次化資料上的應用拓展;第五節就總結了文章。接下來,本文也會按照論文的組織結構,給大家分析下這篇論文的。

處理類別屬性的通用方法

這裡處理類別屬性的通用方法有兩大類,這兩大類按照資料的維度劃分。因此可以分為低維類別資料及高維類別資料。

低維類別資料預處理方法

對於低維度的類別資料最普遍的做法就是二值化。我們簡單舉個例子:

ID Gender Color of cloth
1 male blue
2 female white
3 male red

上面的表格中存放了我們構造的三個樣本資料,其中屬性欄,有三個屬性,ID,Gender,Color of cloth,其中很明顯,Gender與Color of cloth是類別屬性。我們將其二值化,從而將二值化後的新表格如下圖所示:

ID male female blue white red
1 1 0 1 0 0
2 0 1 0 1 0
3 1 0 0 0 1

二值化編碼的核心思想就是將第i個組成標記為1,其餘標記為0。這是一種1到N的對映關係,當面對高維類別資料即N很大的時候,這種方法就不太適用(矩陣很稀疏)。那麼為了解決高維類別屬性,又該採用何種方法呢?

高維類別資料

現如今,處理高維類別資料的最常用方法就是聚類。核心思想就是將1到N的對映問題降維到1到K的對映問題上來(kN)。
因此該方法的工作流程就是:

*先採用諸如層次聚類的聚類演算法,有效地將N個原始資料聚類成K個簇
*再將K個簇二值化
然後論文就說了下這些通用方法的缺點啊,不足啊,又吹捧了下自己提出的方法。

使用目標統計方法來對類別屬性進行編碼

終於來到正文了,首先說下,接下來提到的方法,就如我們章節標題所寫,是個典型的統計學方法,而且歷史悠久,應用領域頗多,但是,在類似這些分類預測任務中作為預處理方法的應用,其他文獻沒有提到過,所以文章還是有一定創新性的。
這一章節將按照目標變數的型別分成三個小節:二值型變數、連續型變數、多類別變數

二值型變數

當目標屬性Y是二值的,Y{01},將高維類別屬性X的一個值Xi對映成一個標量Si,其中Si就代表給定X=Xi的條件下Y=1的概率估計:

XiSiP(Y|X=Xi)(1)
有了這個對映關係,接下來就需要來算出這個“概率估計”了。這裡我們假設訓練集有nTR個樣本,測試集有nTS個樣本。既然概率估計是在訓練模型過程中的一部分(即概率估計是發生在模型訓練的過程中,而不是測試模型時),那麼概率估計只與訓練資料的nTR個樣本有關。
假如訓練樣本足夠大,那麼概率估計直接可以用下面的公式計算:
Si=niYni(2)
其中niXi的數量,niYY=1的數量。
但是在實際場景中,ni的數量很小,因此公式(2)來計算後驗概率並不是很可信。為了削弱某些樣本個數較小帶來的影響,文章提出了一種計算混合概率的方法:將公式(2)的後驗概率與Y的先驗概率同時利用起來。方法如下:
Si=λ(ni)niYni+(1λ(ni))nYnTR(3)
其中nYY=1的訓練樣本數,權重因子λ(ni)是邊界為0,1的單調遞增函式。
ni的數量很大的時候,λ1,我們給後驗概率分配更多的權重,此時等價於公式(2);但是如果ni的數量很小,λ0,我們直接採用先驗概率。
其中可以給權重因子指定一個函式,例如:
λ(n)=11+enkf(4)
很顯然,該函式是個sigmoid函式變種。當n=k時,函式大小為0.5,此處為S型曲線的拐點。引數f控制該函式在拐點處的斜率。
公式(3)在統計與精算學中有著很長的一段歷史。事實上公式(3)是貝葉斯概率的分支之一被稱作經驗貝葉斯(Empirical Bayesian)。
公式如下:Pi=Biyi+(1Bi)y¯(5)
其中y¯指先驗概率,yi指後驗概率。Bi稱作shrinkage因子(0<B<1)。假設資料及後驗估計的概率分佈均滿足高斯分佈,那麼