KNN算法
1、KNN算法概述
kNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。
2、KNN算法介绍
最简单最初级的分类器是将全部的训练数据所对应的类别都记录下来,当测试对象的属性和某个训练对象的属性完全匹配时,便可以对其进行分类。但是怎么可能所有测试对象都会找到与之完全匹配的训练对象呢,其次就是存在一个测试对象同时与多个训练对象匹配,导致一个训练对象被分到了多个类的问题,基于这些问题呢,就产生了KNN。
KNN是通过测量不同特征值之间的距离进行分类。它的的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。K通常是不大于20的整数且k选用奇数。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。
3. 算法详述
步骤:
·为了判断未知实例的类别,以所有已知类别的实例作为参照。
选择参数K(一般为奇数 小于20)。
计算未知实例与所有已知实例的距离。
选择最近K个已知实例。
根据少数服从多数的投票法则(majority-voting),让未知实例归类为K个最邻近样本中最多数的类别。
一些细节:
关于K
一般为奇数 小于20。
关于距离的衡量方法:
欧式距离,余弦值, 相关度, 曼哈顿距离
4.举例
如图,绿色为样本点,当K=1时 可见距离蓝色方框的距离最近,则样本点属于蓝色方形这类。当K=4时 可见距离样本点最近的4个点中有一个为蓝色三个为红色三角形点,由少数服从多数原则,将样本点划归为红色范围。当K=9时 距离最近的9个样本点有三个蓝色六个红色,故划归红色类别。
5、优缺点
算法优点
简单
易于理解
容易实现
通过对K的选择可具备丢噪音数据的健壮性
算法缺点
需要大量空间储存所有已知实例 算法复杂度高(需要比较所有已知实例与要分类的实例)。当其样本分布不平衡时,比如其中一类样本过大(实例数量过多)占主导的时候,新的未知实例容易被归类为这个主导样本,因为这类样本实例的数量过大,但这个新的未知实例实际并木接近目标样本。
决策树
- 决策树概念
判定树是一个类似于流程图的树结构:其中,每个内部结点表示在一个属性上的测试,每个分支代表一个属性输出,而每个树叶结点代表类或类分布。树的最顶层是根结点
2.在分类问题中,决策树模型可以当作if-then规则,主要优点是速度快、可读性强;
决策树学习的三步骤:
1)特征选择
2)决策树生成
3)决策树剪枝
3.决策树模型由两部分组成:
1)结点(分为内部节点和叶子节点,内部节点表示选取的特征,而叶子结点表示一个类别)
2)有向边 (判断的条件)
4.决策树的学习:
实质上就是拟合基于特征空间划分的类的条件概率模型,通俗讲就是学习一套if-then分类规则;
5.决策树的学习算法采用递归的思想:
1)选取最优特征进行划分,若各个子集有一个较好的分类,则构建叶子节点将子集放入其中,
子集的划分效果可以通过分类纯度来判定
2) 若子集分类效果不明显,在选取余下特征中的最优特征进行划分,如此递归下去,
直至子集能被很好的划分或者已没有可供选择的特征为止;
3)可能数据过于细分,会发生过拟合现象而模型的泛化能力不足,这时候我们需要
进行决策树的剪枝,剔除过于细分的叶节点,回退到父节点或者祖先节点;
【决策树的生成只考虑局部最优,而决策树的剪枝考虑全局最优】
6.决策树的生成
ID3算法:使用信息增益来选择特征
1)选定训练数据、特征集、信息增益的阈值
2)当训练数据属于同一类时,返回单节点树,并将这一类置为该节点的类标签
3)当特征集为空时,返回单节点树,并将该节点中实例数最大的所属的类作为类标记
4)否则计算各个特征的信息增益,挑选最优特征进行划分
5)如果信息增益小于规定的阈值,则返回单节点数,以实例数最大的所属类作为类标记
6)对数据集合按最最优特征进行分割,以每个子集中实例数最大的作为类标记,创建子节点
7)在剩下的特征中计算信息增益,挑选最优特征,对上述步骤进行递归调用;
note:该算法中只有决策树的生成,无剪枝过程,易产生过拟合;
7.决策树的剪枝
将已经生成的树进行简化的过程,为了防止过拟合现象;
决策树的剪枝通过极小化决策树的整体损失函数或者代价函数,同时考虑了预测误差和模型复杂度的关系;
有预剪枝和后剪枝