預處理具有許多值的分類變量
我有一個僅包含分類變量和目標變量的數據集。我想用分類變量預測(二元)目標變量。
我正在嘗試在 Python 和 sklearn 中執行此操作。
分類變量有許多不同的值。我正在考慮為所有分類變量中的每個值創建虛擬變量。但是,最終這會導致包含數千個變量的稀疏數據集。
您將如何減少虛擬變量的數量?您會使用 Chi2 來選擇有用的功能嗎?
或者您根本不會製作虛擬變量?
這裡有多個問題,其中一些問題較早提出和回答。首先,關於計算需要很長時間的問題。有多種方法可以解決這個問題,請參閱https://stackoverflow.com/questions/3169371/large-scale-regression-in-r-with-a-sparse-feature-matrix 以及Maechler 和 Bates的論文。
但是很可能問題出在建模上,我不太確定在具有非常多級別的分類變量時,處理分類預測變量的常用方法是否真的能提供足夠的指導,請參閱此站點的標籤
[many-categories]
。當然有很多方法可以嘗試,一種可能是(如果這對你的例子來說是個好主意,我不知道,你沒有告訴我們你的具體應用程序)一種分層分類變量,即啟發通過生物分類中使用的系統,請參閱https://en.wikipedia.org/wiki/Taxonomy_(biology). 在那裡,個體(植物或動物)首先被分類為領域,然後是王國、門、類、目、科、屬,最後是物種。因此,對於分類中的每個級別,您都可以創建一個因子變量。如果您的級別是超市銷售的產品,您可以創建一個以 [foodstuff, kitchenware, other] 開頭的層次分類,然後 foodstuff 可以分類為 [meat, fish, vegetables, grains, …] 和很快。只是一種可能。與最後一個想法正交,您可以嘗試融合套索,請參閱Principled way of collapsing categorical variables with many categories 這可以被視為一種將級別折疊成更大組的方法,完全基於數據,而不是級別的先前組織正如我提出的層次結構組織的建議所暗示的那樣。