一、離散化原因
數據離散化是指將連續的數據進行分段,使其變為一段段離散化的區間。分段的原則有基於等距離、等頻率或優化的方法。數據離散化的原因主要有以下幾點:
- 算法需要
比如決策樹、朴素貝葉斯等算法,都是基於離散型的數據展開的。如果要使用該類算法,必須將離散型的數據進行。有效的離散化能減小算法的時間和空間開銷,提高系統對樣本的分類聚類能力和抗噪聲能力。
- 離散化的特征相對於連續型特征更易理解,更接近知識層面的表達
比如工資收入,月薪2000和月薪20000,從連續型特征來看高低薪的差異還要通過數值層面才能理解,但將其轉換為離散型數據(底薪、高薪),則可以更加直觀的表達出了我們心中所想的高薪和底薪。
- 可以有效的克服數據中隱藏的缺陷,使模型結果更加穩定
二、離散化的優勢
在工業界,很少直接將連續值作為邏輯回歸模型的特征輸入,而是將連續特征離散化為一系列0、1特征交給邏輯回歸模型,這樣做的優勢有以下幾點:
- 離散特征的增加和減少都很容易,易於模型的快速迭代;
- 稀疏向量內積乘法運算速度快,計算結果方便存儲,容易擴展;
- 離散化后的特征對異常數據有很強的魯棒性:比如一個特征是年齡>30是1,否則0。如果特征沒有離散化,一個異常數據“年齡300歲”會給模型造成很大的干擾;
- 邏輯回歸屬於廣義線性模型,表達能力受限;單變量離散化為N個后,每個變量有單獨的權重,相當於為模型引入了非線性,能夠提升模型表達能力,加大擬合;
- 離散化后可以進行特征交叉,由M+N個變量變為M*N個變量,進一步引入非線性,提升表達能力;
- 特征離散化后,模型會更穩定,比如如果對用戶年齡離散化,20-30作為一個區間,不會因為一個用戶年齡長了一歲就變成一個完全不同的人。當然處於區間相鄰處的樣本會剛好相反,所以怎么划分區間是門學問;
- 特征離散化以后,起到了簡化了邏輯回歸模型的作用,降低了模型過擬合的風險。
三、離散化的方法
1、無監督學習方法
- 1.1等寬法
等寬法即是將屬性值分為具有相同寬度的區間,區間的個數k根據實際情況來決定。比如屬性值在[0,60]之間,最小值為0,最大值為60,我們要將其分為3等分,則區間被划分為[0,20] 、[21,40] 、[41,60],每個屬性值對應屬於它的那個區間
- 1.2等頻法
等寬法即是將屬性值分為具有相同寬度的區間,區間的個數k根據實際情況來決定。比如有60個樣本,我們要將其分為k=3部分,則每部分的長度為20個樣本。
- 1.3基於聚類的方法
基於聚類的方法分為兩個步驟,即:
選定聚類算法將其進行聚類
將在同一個簇內的屬性值做為統一標記。
注:基於聚類的方法,簇的個數要根據聚類算法的實際情況來決定,比如對於k-means算法,簇的個數可以自己決定,但對於DBSCAN,則是算法找尋簇的個數。
2、有監督學習方法:
- 1R方法
- 基於信息熵的方法
- 基於卡方的方法
四、總結
模型是使用離散特征還是連續特征,其實是一個“海量離散特征+簡單模型” 同 “少量連續特征+復雜模型”的權衡。既可以離散化用線性模型,也可以用連續特征加深度學習。就看是喜歡折騰特征還是折騰模型了。通常來說,前者容易,而且可以n個人一起並行做,有成功經驗;后者目前看很贊,能走多遠還須拭目以待。