【发布时间】:2019-05-07 04:05:29
【问题描述】:
我正在研究多类别分类,以便根据客户的购买行为和人口统计数据将客户分为 3 个不同的类别。我无法完全披露数据集,但总的来说它包含大约 300 个特征和 50000 行。我尝试了以下方法,但无法达到 50% 以上的准确率:
- 调整超参数(我在执行 GridSearchCV 后使用调整后的超参数)
- 规范化数据集,然后运行我的模型
- 尝试了不同的分类方法:OneVsRestClassifier、RandomForestClassification、SVM、KNN 和 LDA
- 我还删除了不相关的功能并尝试运行我的模型
- 我的类不平衡,因此我也尝试使用 class_weight = 平衡、使用 SMOTE 进行过采样、下采样和重采样。
还有什么我可以尝试提高我的准确度(准确度是指 f 分数、精度和召回率)。
任何帮助将不胜感激。
【问题讨论】:
-
不同的机器学习算法需要不同的数据预处理。随机森林非常简单,不需要对特征进行缩放或归一化。你玩过
n_estimators、max_features和min_samples_leaf吗? -
是的,我在调整超参数时做过。我还做了一个 GridSearchCV 来确定最佳参数。
-
我不得不承认我更喜欢用困难的方式进行网格搜索(丑陋的 for 循环)并保存我获得的分数。通过这种方式,我可以轻松检查我是否真正收敛到全局最小值,或者是否需要扩展搜索范围。您应该考虑的另一个想法是对您的数据执行 PCA。随机森林不喜欢特征之间的相关性,因为单个树不独立于另一个
-
我也尝试过丑陋的 for 循环。手动检查每个超参数。我会尝试做 PCA 并检查是否有变化。
-
希望解决方案有所帮助
标签: python machine-learning random-forest