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