知道我应该使用哪种分类器?
决策树SVM贝叶斯神经网络K-最近邻居Q- 学习 </跨度> 遗传算法马尔可夫决策过程卷积神经网络线性……
算法的选择取决于场景以及数据集的类型和大小。 还有很多其他因素。
这是基本机器学习的简要备忘单。
首先,它取决于您处理的是哪种类型的问题,无论是分类还是回归。然后明智地选择你的模型。这取决于特定模型,一个特定模型优于其他模型。假设您正在使用sklearn库中的wine_dataset,首先您尝试使用线性的内核svm训练数据并获得某种准确性,然后您认为它不满意,那么您尝试使用DecisionTreeClassifier()训练您的数据然后你尝试使用RandomForestClassifier()。在那之后,无论哪种准确度会更好,或者你可以说这适合你的数据,你可以得出结论。在继续改变测试模型的同时,你会发现很小的语法差异。所以最好,并很好地理解问题。
正如Andrew Ng教授经常说的那样:总是先实施一个 的 粗糙,脏算法,然后迭代地改进它 强> 。
用于分类, 的 朴素贝叶斯 强> 是一个很好的入门者,因为它具有良好的性能,高度可扩展,几乎可以适应任何类型的分类任务。也 的 1NN 强> (K-Nearest Neighbors只有一个邻居)是一个无麻烦的最佳拟合算法(因为数据将是模型,因此您不必关心决策边界的维度拟合),唯一的问题是计算成本(二次因为你需要计算距离矩阵,所以它可能不适合高维数据)。
另一个好的启动算法是 的 随机森林 强> (由决策树组成),这可以高度扩展到任意数量的维度,并且通常具有完全可接受的性能。最后,有 的 遗传算法 强> ,对数据本身知之甚少,可以很好地扩展到任何维度和任何数据,最简单,最简单的实现是 微生物遗传算法 (只有一行C代码!由Inman Harvey于1996年出版),其中最复杂的是CMA-ES和MOGA / e-MOEA。
请记住,在尝试使用真实算法之前,通常情况下,您无法真正了解哪些内容最适合您的数据。
作为旁注,如果您想要一个理论框架来测试您的假设和算法理论性能的特定问题,您可以使用 PAC(可能大致正确)的学习框架 (要注意:它非常抽象和复杂!),但总而言之,PAC学习的要点是你应该使用不那么复杂但足够复杂(复杂性是算法可以容纳的最大维数)算法,它可以适合你的数据。换句话说,使用奥卡姆剃刀。
你应该始终考虑到 的 推理与预测 强> 交易。
如果您想了解数据中发生的复杂关系,那么您应该使用丰富的推理算法(例如线性回归或套索)。另一方面,如果您只对结果感兴趣,您可以使用高维度和更复杂(但可解释性更低)的算法,如神经网络。
山姆罗威斯 以前说 你应该先尝试朴素的贝叶斯,逻辑回归,k-最近邻和费舍尔的线性判别式。
首先,您需要确定您的问题。这取决于您拥有的数据类型以及您希望的任务。
如果你是 Predicting Category : 你有 Labeled Data 你需要关注 Classification Approach 及其算法 你没有 Labeled Data 你需要去 Clustering Approach 如果你是 Predicting Quantity : 你需要去 Regression Approach 除此以外 你可以去 Dimensionality Reduction Approach
如果你是 Predicting Category :
Predicting Category
Labeled Data
Classification Approach
Clustering Approach
如果你是 Predicting Quantity :
Predicting Quantity
Regression Approach
除此以外
Dimensionality Reduction Approach
在上面提到的每种方法中存在不同的算法。特定算法的选择取决于数据集的大小。
资源: http://scikit-learn.org/stable/tutorial/machine_learning_map/