[英]How to improve accuracy of random forest multiclass classification model?
我正在研究多類分類,根據客戶的購買行為和人口統計將客戶分為 3 個不同的類。 我不能完全公開數據集,但總的來說它包含大約 300 個特征和 50000 行。 我嘗試了以下方法,但無法達到 50% 以上的准確度:
還有什么我可以嘗試提高我的准確度的嗎(准確度是指 f-score、precision 和 recall )。
任何幫助將不勝感激。
嘗試調整以下參數
這是在進行最大投票或預測平均值之前要構建的樹的數量。 樹的數量越多,性能越好,但會使代碼變慢。 您應該選擇處理器可以處理的盡可能高的值,因為這會使您的預測更強大、更穩定。 由於您的數據量較大,因此每次迭代需要更多時間,但請嘗試這樣做。
這些是隨機森林允許在單個樹中嘗試的最大特征數。 Python 中有多個選項可用於分配最大功能。 其中很少有:
Auto/None :這將簡單地采用所有有意義的功能
在每棵樹中。這里我們只是不對單個樹設置任何限制。
sqrt :此選項將對單個運行中的特征總數取平方根。 例如,如果變量總數為 100,我們只能在單個樹中取 10 個。“log2”是 max_features 的另一種類似選項。
0.2 :此選項允許隨機森林在單個運行中采用 20% 的變量。 我們可以以“0.x”格式分配和賦值,其中我們希望考慮 x% 的特征。
葉子是決策樹的末端節點。 較小的葉子使模型更容易捕獲訓練數據中的噪聲。 你可以從一些最小值開始,比如 75,然后逐漸增加它。 看看你的准確度哪個值高。
您的培訓情況如何? 我假設您的 acc 是您的驗證。 如果您的訓練 acc 過高,則可能是正常的過度擬合。 隨機森林通常可以很好地處理過擬合。
您可以嘗試對數據進行 PCA,然后嘗試對其進行分類。 這為您提供了占數據中大部分變化的特征,因此如果您無法對原始數據進行分類(並且它也減少了您的特征),那么嘗試是一個好主意。
旁注:請記住,SVM 的擬合在點數上是二次的,因此將您的數據減少到 10-20000 左右以調整參數,然后使用子集的最佳參數在完整數據集上擬合 SVM,也可能加快進程。 還要記住考慮為 SVM 嘗試不同的內核。
嘗試首先使用 PCA 或隨機森林進行特征選擇,然后擬合鏈式分類器,首先進行 oneversesall,然后是隨機森林或決策樹。 你應該得到一個稍微好一點的准確度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.