KNN
第一个分类器是KNN。k近邻应该是解决分类问题最简单的方法。其思路是把所有的数据看成高维空间中的一些点,当拿到一个需要分类的新数据时,把新数据也放到这个高维空间中,找到离它最近的K个点,统计这K个点中出现次数最多的类别,做为结果输出。
KNN中主要有两个能动的参数:K和计算距离的方法。因为选择不是很多所以可以直接尝试所有的方法选择一个效果最好的组合。KNN没有训练的过程。决策树,深度学习之类的方法在拿到训练数据之后会进行比较长时间的训练,之后在预测的时候花比较短的时间,但是KNN正相反,在预测的时候需要比对所有训练数据。
优点:精度高、对异常值不敏感 缺点:计算复杂度高、空间复杂度高
决策树
第二个分类器是决策树,决策树的原理很简单,核心思路是找到一个树形的决策序列将数据分组,尽量让每个组内的数据标签都相同。决策树是一种可以用于回归和分类两种问题的监督学习方法,其内部的决策逻辑是可见的,有很好的可解释性。
可以看出决策树包含节点和分支,节点分三种:
- 根节点:所有的数据都会经过这个节点,在根节点做第一次决策
- 中间节点:数据经过每一个中间节点都需要做一次决策
- 叶节点:一个叶节点对应一个分类,预测的时候走到一个叶节点就是预测结束了,结果是这个叶节点对应的分类
最后,分支代表满足一定条件的数据去往哪个节点
决策树构建的方法概括起来如下:
- 选出一个最适合划分当前记录集合的属性
- 用这个属性将当前记录集合划分成几个更小的子集
- 重复上述步骤直到:
- 所有的剩下的记录都是一类的
- 没有更多的属性
- 没有更多的记录
优点:
- 计算复杂度低
- 推理过程快
- 决策步骤可以可视化,容易理解
缺点:
- 对于连续的特征,决策会比较复杂,不容易理解
- 容易过拟合训练数据
- 数据不均衡会影响表现
SVM
支持向量机是分类中比较复杂的一个方法,但是通常效果比较好,而且通常是开箱即用的,不需要调整很多参数。其基本原理是寻找一个决策边界来把数据集划分成两个部分。寻找决策边界是有依据的,为了更好的鲁棒性和泛化能力,希望决策边界能离最近的数据点尽可能远,这些最近的数据点就是支持向量。通过核函数能够将高维空间中的非线性问题转化为低维空间中的线性分类问题,从而拓展SVM的使用场景。
优点:泛化错误率低,计算开销小,结果容易解释
缺点:原始分类器仅适用二分,对参数和核函数的选择敏感