在机器学习中,可以使用多种算法模型解决同一个问题,那么如何从中选择出最佳的算法模型呢?
当然,这个问题没有一种固定的答案,需要根据不同的问题,尝试使用多种机器学习方法,比较各种算法模型在该问题上的效果,最终才能决定究竟选择哪一种模型。
本文将会介绍六种常见的机器学习分类算法及其scikit-learn实现,当你在处理分类问题时,可以尝试使用这些算法。比较不同算法在具体问题上的效果,然后选择一种最佳算法。
引言
本教程分为三部分,分别如下所示。本文将会介绍前二部分,第三部分将会在后面的文章中介绍。
1、模型选择概述
2、二种线性分类算法:
Logistic回归线性判别分析3、四种非线性分类算法:
K-Nearest Neighbors朴素贝叶斯决策树支持向量机每种算法都在同一个数据集上进行演示 。本文使用的数据集是一个二分类问题的数据集,该数据集的所有特征都是数值型。
每种算法都是完整、独立的,这意味着可以将对应算法的实现代码运用到自己的项目中。本文使用10倍交叉验证检查每种机器学习算法的平均准确度,以此来衡量算法性能。
模型选择概述
通常,你无法预先知道哪种算法最适合你当前的数据集。你必须反复试验来找出在该数据集上效果较好的算法,然后进一步调整对应算法模型参数。
首先,可以大概猜测哪些算法可能对当前数据集会有较好的效果,再选定了几个待测试算法后,就可以开始在该数据集上实验这些算法了。
选择的待测试算法之间最好能够有所不同,例如:选取线性模型和非线性模型,然后观察不同类型的模型对数据集的学习能力。
下面,将以分类问题为例,介绍如何从六种分类模型中选择最佳模型。
二种线性分类模型
1、 逻辑回归
Logistic Regression,也称逻辑回归,是在假定训练数据符合高斯分布的前提下,用于二分类问题。可以使用scikit-learn中的LogisticRegression类构建逻辑回归模型。
下面代码演示了如何进行训练逻辑回归模型。
2、线性判别分析
Linear Discriminant Analysis,也称线性判别分析,是在假定训练数据符合高斯分布的前提下,用于二分类问题。
基本原理是将高维的模式样本投影到最佳可区分的矢量空间,利用线性关系去拟合数据特征。可以使用scikit-learn中的LinearDiscriminantAnalysis类构建LDA模型。(注意,这里的LDA并非指潜在语义主题模型)
后面的4种非线性模型将在下一篇文章中介绍,敬请期待。