簡體   English   中英

如何提高隨機森林多類分類模型的准確率?

[英]How to improve accuracy of random forest multiclass classification model?

我正在研究多類分類,根據客戶的購買行為和人口統計將客戶分為 3 個不同的類。 我不能完全公開數據集,但總的來說它包含大約 300 個特征和 50000 行。 我嘗試了以下方法,但無法達到 50% 以上的准確度:

  1. 調整超參數(我在執行 GridSearchCV 后使用調整后的超參數)
  2. 規范化數據集,然后運行我的模型
  3. 嘗試了不同的分類方法:OneVsRestClassifier、RandomForestClassification、SVM、KNN 和 LDA
  4. 我還刪除了不相關的功能並嘗試運行我的模型
  5. 我的班級不平衡,所以我也嘗試使用 class_weight =balanced,使用 SMOTE 進行過采樣,下采樣和重采樣。

還有什么我可以嘗試提高我的准確度的嗎(准確度是指 f-score、precision 和 recall )。

任何幫助將不勝感激。

嘗試調整以下參數

n_estimators

這是在進行最大投票或預測平均值之前要構建的樹的數量。 樹的數量越多,性能越好,但會使代碼變慢。 您應該選擇處理器可以處理的盡可能高的值,因為這會使您的預測更強大、更穩定。 由於您的數據量較大,因此每次迭代需要更多時間,但請嘗試這樣做。

最大特征

這些是隨機森林允許在單個樹中嘗試的最大特征數。 Python 中有多個選項可用於分配最大功能。 其中很少有:

  • Auto/None :這將簡單地采用所有有意義的功能
    在每棵樹中。這里我們只是不對單個樹設置任何限制。

    sqrt :此選項將對單個運行中的特征總數取平方根。 例如,如果變量總數為 100,我們只能在單個樹中取 10 個。“log2”是 max_features 的另一種類似選項。

    0.2 :此選項允許隨機森林在單個運行中采用 20% 的變量。 我們可以以“0.x”格式分配和賦值,其中我們希望考慮 x% 的特征。

min_sample_leaf

葉子是決策樹的末端節點。 較小的葉子使模型更容易捕獲訓練數據中的噪聲。 你可以從一些最小值開始,比如 75,然后逐漸增加它。 看看你的准確度哪個值高。

您的培訓情況如何? 我假設您的 acc 是您的驗證。 如果您的訓練 acc 過高,則可能是正常的過度擬合。 隨機森林通常可以很好地處理過擬合。

您可以嘗試對數據進行 PCA,然后嘗試對其進行分類。 這為您提供了占數據中大部分變化的特征,因此如果您無法對原始數據進行分類(並且它也減少了您的特征),那么嘗試是一個好主意。

旁注:請記住,SVM 的擬合在點數上是二次的,因此將您的數據減少到 10-20000 左右以調整參數,然后使用子集的最佳參數在完整數據集上擬合 SVM,也可能加快進程。 還要記住考慮為 SVM 嘗試不同的內核。

嘗試首先使用 PCA 或隨機森林進行特征選擇,然后擬合鏈式分類器,首先進行 oneversesall,然后是隨機森林或決策樹。 你應該得到一個稍微好一點的准確度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM