通常希望對任何測量進行最精確的測量。從理論上講,這很好,但出於數據分析的目的,更高的精度並不總是更好。
通常最好檢查任何連續變量並確定記錄值的合理精度。例如,假設我有一個變量X,X的值如下表所示:

數據記錄到10位小數。但是如果我們分析這些數據,我們真的需要小數點右邊的那麼多位數嗎?檢查這一點的一種方法是查看該數據的平均值和標準偏差估計值的圖,作為所用舍入水平的函數。一個很好的問題是“匯總統計對精確度的敏感程度如何?”


經驗法則
表格和圖表顯示,即使我們一直到小數點後一位,我們也不會在均值估計中丟失很多信息。關於變量所需精度的一個好的經驗法則是將未接地數據的標準偏差除以3,並使用小數位數的前導有效位作為捨入水平。在此處顯示的示例中,未接地數據的標準偏差為0.3612,因此其中1/3為0.12,表示一個小數位就足夠了。
建模時這有關係嗎?
最近,我遇到了一個預測建模問題,其中擬合決策樹模型所花費的時間比期望的長(計算時間長)。使用的數據集相當大(數百萬行)。調查問題後,我發現許多連續預測變量(X或因子)被記錄到許多小數位。使用舍入經驗法則,用於擬合決策樹模型的計算時間減少到幾分鐘。為什麼會這樣?該遞歸分區算法構建決策樹使用每個連續預測器的唯一級別,並根據每個唯一級別構建二進制分割,以便找到最佳分割。如果模型中的因素過於精確,則會增加大量的計算開銷,並且通常在提高模型精度方面幾乎沒有什麼好處。舍入因子減少了獨特水平的數量,並使模型擬合算法的執行速度更快。
分檔數據
在實踐中,還已知甚至不太精確的連續變量水平指標可能是有用的並且導致更好的模型。降低預測變量精度的一種方法是採用分級 。分箱只是將每個連續變量分配到分類級別。舍入是分箱的一個示例。分箱的另一個例子是建立數據的直方圖並使用直方圖中的區間作為預測器。一個之前的博文描述了一個交互式分級工具你可以用來手動進行這種分級。一個分箱的第三個例子是使用監督方法 ,其中預測器中的區間以最大化分箱變量的預測能力的方式被選擇。
對於我所面臨的數據分析問題,由於過於精確的數據導致計算時間長,我有100個預測變量需要應用某種程度的分級。交互式分箱方法花費的時間太長,而有監督的分箱方法本身就是計算密集型的,因此需要花費相當多的時間。我決定採用無監督的分箱方法,只需在預測變量中查找分組或聚類,一次查找一個變量。
使用正態混合分佈進行分箱數據
考慮下面直方圖中顯示的略微“塊狀”變量。使用3個正態分佈的正態混合物分佈適合於數據(熱點>連續擬合>正常混合>正常3混合)。記錄來自混合物分佈的參數估計,並且創建合併公式,其基於混合物中具有最高關聯概率的混合物中的哪個分佈將行分配給組。


binned變量是一個整數,它保留數據中的排序,因此它可以用作連續,序數或名義變量。

點擊圖片查看動畫版
為了自動化使用普通混合分佈進行無監督分箱的過程,我創建了一個JMP加載項( 可供下載在JMP文件交換 - 需要免費的SAS配置文件)。
作為建模數據準備的一部分,請考慮預測變量的數據精度,並在進行分析時查看較低的精度是否有用。 我希望在您撰寫更好的模型時,本文中分享的想法對您有用。
山姆加德納中寫道:
腳本的鏈接不再有效。binning腳本的新鏈接位於 https://community.jmp.com/docs/DOC-7584
山姆加德納中寫道:
提及分箱有用性的一個參考是Berry&Linhoff,Data Mining Techniques,2nd Ed,p 237和p351。特別是,他們表示“也許意外地,分級值可以提高數據挖掘算法的性能。”
克里斯·多格爾中寫道:
山姆,
有趣的經驗法則,易於記憶。你有資料來源嗎?它為什麼有效?