0

我對隨機森林有疑問。想象一下,我有關於用戶與物品交互的數據。項目數量很大,大約爲10 000個。我的隨機森林輸出應該是用戶可能與之交互的項目(如推薦系統)。對於任何用戶,我想使用描述用戶過去已與之進行交互的項目的功能。但是,將分類產品功能映射爲單熱編碼看起來效率非常低,因爲用戶最多隻能與幾百個項目進行交互,有時甚至可能只有5個。XGBoost/CatBoost中含有大量類別的分類變量

您將如何去關於構建一個隨機森林時,其中一個輸入要素是一個具有〜10000個可能值的分類變量,輸出是一個具有〜10000個可能值的分類變量?我應該使用CatBoost作爲分類的功能嗎?或者我應該使用單熱編碼,如果是的話,您認爲XGBoost或CatBoost更好嗎?

+0

在https://datascience.stackexchange.com/上查詢可能會更好 - 它似乎比關於代碼更理論一些? – josh

+0

好的,那就試試,謝謝 –

回答

0

假設您有足夠的專業知識,您可以從現有列創建新的分類列。 例如: - 如果列有以下值

A,B,C,D,E,F,G,H 

,如果你知道A,B,C都差不多d,E,F都差不多,G,H類似 新列將

Z,Z,Z,Y,Y,Y,X,X. 

在你的隨機森林模型中,你應該刪除前一列,並且只包含這個新列。通過改變你的功能,你會失去你的模式的可解釋性。

0

XGBoost不直接支持分類特徵,您需要執行預處理以將其與c​​atfeatures一起使用。例如,你可以做一個熱門的編碼。如果您的貓功能有一些頻繁的值,則單熱編碼通常效果很好。

CatBoost確實具有分類特徵支持 - 無論是單熱編碼還是對分類特徵的不同統計信息的計算。要使用單熱編碼,您需要使用one_hot_max_size參數啓用它,默認情況下,會計算統計信息。對於具有許多值的分類特徵,統計通常更好。