Prediction

RidgeLasso – 虛擬指標的標準化

  • July 25, 2018

假設我有一個數據集,其中包含 5000 行和大約 150 列(5000 個樣本,150 個預測變量/特徵),我對應用嶺回歸或套索回歸感興趣。(讓我們假設使用 logit 鏈接函數——如果重要的話)。同樣,如果重要的話,我們會說一些特徵是高度相關的——例如,其中一半以上實際上是虛擬變量指標。讓我們也說我們更關心預測的準確性而不是模型的可解釋性(如果我們想要一個清晰的解釋,我們不會使用懲罰回歸!)

現在,懲罰線性模型的標準建議是對數據進行標準化(我相信 Tibshirani 總是建議這樣做。通過標準化,我的意思是中心和尺度均值和標準差)。但是,這會破壞數據集中固有的很多結構。我認為這樣做沒有意義 - 因為這將導致模型中始終存在二進制指標,除非 Lasso 將它們歸零。

有沒有更好的方法來處理這個問題?可以規範化將保留結構的行(例如,Normalizer()在 sklearn 中),但實際上這給了我截然不同的結果。

是否應該標準化所有輸入?只有非二進制的?那麼序數類別呢(比如說一個列有 1,2,3,… 衡量,比如說,教育年限)。標準化或最小/最大縮放?

澄清:通過標準化二進制輸入,您可以消除數據集中的稀疏性,因為您必須首先減去平均值。這就是我所說的“破壞結構”。

您已經確定了一個重要但可能未被充分重視的問題:在懲罰回歸中沒有一種萬能的方法來規範化分類變量。

歸一化試圖確保對所有預測變量公平地應用懲罰,而不管測量的規模如何。您不希望基於長度的預測變量的懲罰取決於您是以毫米還是英里為單位測量長度。因此,在懲罰之前以均值為中心並以標準差進行縮放對於連續預測器是有意義的。

但是,分類預測變量的“測量尺度”是什麼意思?對於具有 50% 流行率的二元預測變量,歸一化將原始值 0 和 1 分別轉換為 -1 和 +1,在歸一化尺度上的總體差異為 2 個單位。對於具有 1% 流行率的二元預測變量,原始值 0 和 1 轉換為大約 -0.1 和 +9.9,在歸一化尺度上的總體差異為 10 個單位。

在具有這些屬性的二元預測變量之間,歸一化因此在它們的相對變換尺度中引入了一個因子 5,從而在它們對懲罰的敏感性中引入了與原始 0/1 編碼的情況相比。那是你要的嗎?並且歸一化的分類預測變量是否更“無標度”,以便二元和連續預測變量在某種意義上相對於彼此受到公平懲罰?您必鬚根據對主題的了解和您的預測目標自己做出決定。

Harrell 的回歸建模策略在第 9.10 節“懲罰最大似然估計”中對此進行了介紹。正如他所指出的,多類別預測變量還有一個問題,因為歸一化的結果可能會因參考值的選擇而異。在這種情況下,請嘗試將同一分類預測變量的所有係數與其均值的差異一起懲罰,而不是單獨懲罰每個係數。

您在選擇如何處罰方面確實有一定的靈活性。一些標準軟件,如glmnet()R 中的,允許在預測變量之間進行差異懲罰,Harrell 討論了它作為對預測變量值本身進行預歸一化的替代方法,以便最終結果是無標度的。但是您仍然必須解決您希望將什麼視為分類預測變量的“規模”的問題。

如果您沒有關於如何最好(如果有的話)擴展分類預測變量的主題知識中沒有有用的信息,為什麼不在構建模型時比較不同的方法來擴展它們呢?您當然應該驗證這種方法,例如通過對數據的多個自舉重採樣重複整個模型構建過程並在原始數據上測試模型預測。由於您有興趣做出有用的預測,這提供了一種原則性的方法來查看哪種預測方法最適合您。


我很欣賞破壞二進制/虛擬編碼提供的稀疏結構的問題,這可能是處理編碼為稀疏矩陣的非常大的數據集的效率問題。對於您的問題的規模,只有幾千個案例和幾百個預測變量,這不是一個實際問題,並且不會影響回歸的處理方式:但是您可能已經對分類變量進行了標準化,每個仍將具有與以前相同數量的類別,只是具有不同的數值(因此對懲罰的敏感性不同)。

請注意,按行歸一化並不能解決此處討論的問題,並且可能會加劇這些問題。在基因表達研究等情況下,按行歸一化可能是一個有用的步驟,在這些情況下,所有測量基本上都在相同的規模上,但樣本之間的整體表達可能存在系統差異。然而,將不同尺度上測量的連續預測變量與分類預測變量混合在一起,行歸一化將無濟於事。

引用自:https://stats.stackexchange.com/questions/359015

comments powered by Disqus