如何根据数据的分布来选择ML算法? - Reddit


问题:根据基础理论/数据分布,何时使用决策树而不是 SVM 或 KNN 更好?

答案:
1. xgboost在结构化数据和监督学习问题上很难被击败。
相对特征规模不是问题,类不平衡不是问题,它可以处理空数据,而且由于决策树的性质,它在非线性数据上表现得非常好。它缺乏线性回归的可解释性,但通过SHAP值等技术,你仍然可以在模型或单一预测层面获得特征重要性。
 
2. 我认为模型架构更多的是取决于你要解决的问题和相关的约束。

如果我想要一些简单或可解释的东西,我可能会选择一个决策树。如果我想要一些高性能的分割,我可能会使用像UNet或MaskRCNN这样的成熟方法。为什么这些方法都能很好地工作,在文献中都有简洁的记录。

最终,我认为选择ML算法的很大一部分要归结为了解两者的利弊,以及被建模的非线性函数的种类(也就是对基础数据进行的假设,如果有的话)。例如,Naive Bayes或GDA都对你的数据做出不同的关键假设。
 
3. 所有的机器学习模型都会在特征空间中创建超平面,选择一个模型而不是其他模型的更好方法是了解这些超平面是如何被模型创建的,以及你的特征在空间中是如何表示的(用一些 dimensonality reduction 技术进行可视化,如 UMAP 或 t-SNE)。