分类是对特征变量建模和预测的有监督学习方法。其中分类学习的目的是从给定的人工标注的分类训练样本数据集中学习出一个分类函数或者分类模型,也称作分类器(classifier)。当新的样本到来时,可以根据这个分类器进行预测,将新样本映射到特定的类别中。对于分类,输入的训练数据包含信息有特征(Feature)和标签(label)。学习的本质就是找到特征与标签间的关系 。分类预测模型是求取一个从输入变量 (特征) 到离散的输出变量(标签) 之间的映射函数。这样当有特征而无标签的未知样本输入时,可以通过映射函数预测未知数据的标签。分类在消费者行为判断(根据以往用户的特征预测新用户是否会购买商品),信用风险评估(根据以往用户还款信息预测新用户是否会违约),医学诊断(根据CT的特征进行新冠肺炎的检测),电子邮件(根据邮件内容将邮件分为正常邮件/垃圾邮件)等多个领域得到广泛的应用。
那么我们可以总结出分类的定义:对所有的数据进行学习,得到一个目标函数或规则,把每个属性集映射到一个预先定义的类别号。
目标函数就是用设计变量来表示的所追求的目标形式,所以目标函数就是设计变量的函数,是一个标量。从工程意义讲,目标函数是系统的性能标准,比如,一个结构的最轻重量、最低造价、最合理形式;一件产品的最短生产时间、最小能量消耗;一个实验的最佳配方等等,建立目标函数的过程就是寻找设计变量与目标的关系的过程。分类问题预测的是类别,模型的输出应该是概率分布。
常用的分类方法有很多,先简单介绍几种常用的方法,分别是 K近邻算法、朴素贝叶斯分类、支持向量机和决策树。
K Nearest Neighbors(KNN) K近邻算法
这个算法首先贮藏所有的训练样本,然后通过分析(包括选举,计算加权和等方式)一个新样本周围K个最近邻,然后把新样本标记为在K近邻点中频率最高的类。
这种方法有时候被称作“基于样本的学习”,即为了预测,我们对于给定的输入搜索最近的已知其相应的特征向量。
特点:简单有效,但因为需要存储所有的训练集,占用很大内存,速度比较慢。使用该方法前通常需要训练集先聚类来降低数据大小。
Naive Bayesian Mode 朴素贝叶斯分类
最简单的监督学习分类器,这个分类器模型是建立在每一个类别的特征向量服从正态分布的基础上的(据说不满足独立分布,效果也很好),因此也被称为概率分类器。整个分布函数被假设为一个高斯分布,每一类别一组系数。当给定了训练数据,算法将会估计每一个类别的向量均值和方差矩阵,然后根据这些进行预测。
特点:如果没有很多数据,该模型会比很多复杂的模型获得更好的性能,因为复杂的模型用了太多假设,以致产生欠拟合。
Support Vector Machines(SVM) 支持向量机
SVM是一种基于核函数的方法,它通过某些核函数把特征向量映射到高维空间(一般情况下高维空间上比低维空间上更加线性可分),然后建立一个线性判别函数(或者说是一个高维空间中的能够区分训练数据的最优超平面)。最优解在某种意义上是两类中距离分割面最近的特征向量和分割面的距离最大化。离分割面最近的特征向量被称为”支持向量”,意即其它向量不影响分割面(决策函数)。
特点:当数据集 合比较小的时候,支持向量机的效果常常最好。对于核来说,不仅仅只存在于 SVM 内,对于任意的算法,只要计算时出现了内积的,都可以用核函数替代,从而提高在高维数据上的性能。
Decision Trees 决策树
决策树是一个二叉树。当每个叶节点用类别标识(多个叶子可能有相同的标识)时,它可以表示分类树;当每个叶节点被分配了一个常量(所以回归函数是分段常量)时,决策树就成了回归树。决策树是从根结点递归构造的。用所有的训练数据(特征向量和对应的响应)来在根结点处进行分裂。在每个结点处,优化准则(比如最优分裂)是基于一些基本原则来确定的(比如ML中的“纯度purity”原则被用来进行分类,方差之和用来进行回归)。所有的数据根据初始和替代分裂点来划分给左右子结点(就像在预测算法里做的一样)。然后算法回归的继续分裂左右子结点。在以下情况下算法可能会在某个结点停止:
a) 树的深度达到了指定的最大值;
b) 在该结点训练样本的数目少于指定值,比如,没有统计意义上的集 合来进一步进行结点分裂了;
c) 在该结点所有的样本属于同一类(或者,如果是回归的话,变化已经非常小了);
d) 跟随机选择相比,能选择到的最好的分裂已经基本没有什么有意义的改进了。
决策树自身的优点:
a) 计算简单,易于理解;
b) 适应不同的数据类型(包括类别数据,数值数据,未归一化的和混合的数据);
c) 比较适合处理有缺失属性的样本;
d) 通过分裂的顺序给数据特征赋不同的重要性;
e) 能够处理不相关的特征;
f) 在相对短的时间内能够对大型数据源做出可行且结果良好的结果;
g) 决策树构成了其他算法的基础(如boosting和随机数)。
决策树的缺点:
a) 容易发生过拟合(随即森林可以很大程度上减少过拟合);
b) 忽略了数据之间的相关性;
c) 对于那些,各类别样本数量不一致的数据,在决策树中,信息增益的结果偏向于那些具有更多数值的特征(只要使用了信息增益,都有这个特点,如RF)。
原理和步骤
KNN算法是一种简单实用的分类算法,其通过测量不同样本之间的距离,然后根据距离选择最近的K个邻居来进行分类。算法核心思想是如果一个样本在特征空间中的K个最临近的样本中的大多数属于某一个类别,则该样本也属于这个类别。整个分类过程包括三步,一是算距离来判断哪些是邻居;二是求近邻,即选择K值;三是做决策,进行分类。
常见问题
1、k值设定为多大?
K太小,分类结果易受噪声点影响;K太大,近邻中又可能包含太多的其它类别的点。(对距离加权,可以降低k值设定的影响)K值通常是采用交叉检验来确定(以K=1为基准)。经验规则:K一般低于训练样本数的平方根。
2、类别如何判定最合适?
投票法没有考虑近邻的距离的远近,距离更近的近邻也许更应该决定最终的分类,所以加权投票法更恰当一些。
3、如何选择合适的距离衡量?
高维度对距离衡量的影响:众所周知当变量数越多,欧式距离的区分能力就越差。
变量值域对距离的影响:值域越大的变量常常会在距离计算中占据主导作用,因此应先对变量进行标准化。