連續變量離散化的原因

連續變量爲啥要進行離散化

參考:https://www.cnblogs.com/wqbin/p/11087162.html

一、離散化原因
數據離散化是指將連續的數據進行分段,使其變爲一段段離散化的區間。分段的原則有基於等距離、等頻率或優化的方法。數據離散化的原因主要有以下幾點:

算法需要
比如決策樹、樸素貝葉斯等算法,都是基於離散型的數據展開的。如果要使用該類算法,必須將離散型的數據進行。有效的離散化能減小算法的時間和空間開銷,提高系統對樣本的分類聚類能力和抗噪聲能力。

離散化的特徵相對於連續型特徵更易理解,更接近知識層面的表達
比如工資收入,月薪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個人一起並行做,有成功經驗;後者目前看很贊,能走多遠還須拭目以待。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章