机器学习-面经(part5、KNN和SVM)

本文详细介绍了KNN算法的工作原理、K值的选择、高效匹配查找策略,同时讨论了其优点和缺点,以及与SVM的比较,包括SVM的间隔最大化思想、核函数应用和处理多分类问题的方法。
摘要由CSDN通过智能技术生成

8. KNN

8.1 简述一下KNN算法的原理?

一句话概括:KNN的原理就是当预测一个新的值x的时候,根据它距离最近的K个点是什么类别来判断x属于哪个类别        

工作原理:存在一个样本数据集合,也称作为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一个数据与所属分类的对应关系。输入没有标签的新数据后,将新的数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本最相似数据(最近邻)的分类标签。一般来说,我们只选择样本数据集中前k个最相似的数据,这就是k-近邻算法中k的出处,通常k是不大于20的整数。最后,选择k个最相似数据中出现次数最多的分类,作为新数据的分类。

3个主要因素是:k值选择,距离度量,分类决策。

8.2 如何理解KNN中的k的取值?

K值的重要性需要先看一下距离度量,要度量空间中点距离的话,有好几种度量方式,比如常见的曼哈顿距离计算,欧式距离计算等等。不过通常KNN算法中使用的是欧式距离,这里只是简单说一下,拿二维平面为例,,二维空间两个点的欧式距离计算公式如下:

将其拓展到多维空间则为下图

KNN算法最简单粗暴的就是将预测点与所有点距离进行计算,然后保存并排序,选出前面K个值看看哪些类别比较多。但其实也可以通过一些数据结构来辅助,比如最大堆。

由距离度量可知,K的取值比较重要,该如何确定K取多少值好呢?答案是通过交叉验证(将样本数据按照一定比例,拆分出训练用的数据和验证用的数据,比如6:4拆分出部分训练数据和验证数据),从选取一个较小的K值开始,不断增加K的值,然后计算验证集合的方差,最终找到一个比较合适的K值。

8.3 在kNN的样本搜索中,如何进行高效的匹配查找?

        线性扫描(数据多时,效率低) 构建数据索引——Clipping和Overlapping两种。前者划分的空间没有重叠,如k-d树;后者划分的空间相互交叠,如R树。

8.4 KNN算法有哪些优点和缺点?

8.5 不平衡的样本可以给KNN的预测结果造成哪些问题,有没有什么好的解决方式?

输入实例的K邻近点中,大数量类别的点会比较多,但其实可能都离实例较远,这样会影响最后的分类。

可以使用权值来改进,距实例较近的点赋予较高的权值,较远的赋予较低的权值。

8.6 为了解决KNN算法计算量过大的问题,可以使用分组的方式进行计算,简述一下该方式的原理。

1、先将样本按距离分解成组,获得质心,然后计算未知样本到各质心的距离,选出距离最近的一组或几组,再在这些组内引用KNN。

2、本质上就是事先对已知样本点进行剪辑,事先去除对分类作用不大的样本,该方法比较适用于样本容量比较大时的情况。

8.7 如何优化Kmeans?

1、减少聚类的数目K。因为,每个样本都要跟类中心计算距离。

2、减少样本的特征维度。比如说,通过PCA等进行降维。

3、考察其他的聚类算法,通过选取toy数据,去测试不同聚类算法的性能。

4、hadoop集群,K-means算法是很容易进行并行计算的。

8.8 在k-meanskNN,我们是用欧氏距离来计算最近的邻居之间的距离。为什么不用曼哈顿距离?

曼哈顿距离只计算水平或垂直距离,有维度的限制。另一方面,欧氏距离可用于任何空间的距离计算问题。

绿色的线为欧式距离的丈量长度,红色的线即为曼哈顿距离长度,

蓝色和黄色的线是这两点间曼哈顿距离的等价长度。

欧式距离:两点之间的最短距离;

曼哈顿距离:投影到坐标轴的长度之和;又称为出租车距离.

切比雪夫距离:各坐标数值差的最大值;

8.9 参数说明以及调参

n_neighbors:邻居节点数量

weights:设为distance(离一个簇中心越近的点,权重越高);

p=1为曼哈顿距离, p=2为欧式距离。默认为2

leaf_size:传递给BallTree或者KDTree,表示构造树的大小,默认值是30

n_jobs:并发执行的job数量,用于查找邻近的数据点。默认值1,选取-1占据CPU比重会减小,但运行速度也会变慢。

8.10 KNN的优缺点

优点:

  1. 简单易用,相比其他算法,KNN算是比较简洁明了的算法。即使没有很高的数学基础也能搞清楚它的原理。
  2. 模型训练时间快,上面说到KNN算法是惰性的,这里也就不再过多讲述。
  3. 预测效果好。
  4. 对异常值不敏感

缺点:

  1. 对内存要求较高,因为该算法存储了所有训练数据
  2. 预测阶段可能很慢
  3. 对不相关的功能和数据规模敏感

 9 SVM

9.1 SVM的原理是什么?

SVM是一种二类分类模型。它的基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器。(间隔最大是它有别于感知机)

(1)当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机;

(2)当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机;

(3)当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。

注:以上各SVM的数学推导应该熟悉:硬间隔最大化(几何间隔)---学习的对偶问题---软间隔最大化(引入松弛变量)--- 非线性支持向量机(核技巧)

9.2 SVM 为什么采用间隔最大化?

        当训练数据线性可分时,存在无穷个分离超平面可以将两类数据正确分开。感知机利用误分类最小策略,求得分离超平面,不过此时的解有无穷多个。线性可分支持向量机利用间隔最大化求得最优分离超平面,这时,解是唯一的。另一方面,此时的分隔超平面所产生的分类结果是最鲁棒的,对未知实例的泛化能力最强。可以借此机会阐述一下几何间隔以及函数间隔的关系。

9.3 为什么 SVM 要引入核函数?

        原始空间线性不可分,可以使用一个非线性映射将原始数据x变换到另一个高维特征空间,在这个空间中,样本变得线性可分。

        解决方法:常用的一般是径向基RBF函数(线性核,高斯核,拉普拉斯核等)

9.4 为什么SVM对缺失数据敏感?

        这里说的缺失数据是指缺失某些特征数据,向量数据不完整。SVM 没有处理缺失值的策略。而 SVM 希望样本在特征空间中线性可分,所以特征空间的好坏对SVM的性能很重要。缺失特征数据将影响训练结果的好坏。

9.5 SVM核函数之间的区别

一般选择线性核和高斯核,也就是线性核与 RBF 核。

高斯核函数(RBF):

              

本质:将每一个样本点映射到一个无穷维的特征空间。

高斯核升维的本质,使得线性不可分的数据线性可分。

9.6 SVM如何处理多分类问题?

        一般有两种做法:一种是直接法,直接在目标函数上修改,将多个分类面的参数求解合并到一个最优化问题里面。看似简单但是计算量却非常的大。

        另外一种做法是间接法:对训练器进行组合。其中比较典型的有一对一,和一对多。 一对多,就是对每个类都训练出一个分类器,由svm是二分类,所以将此而分类器的两类设定为目标类为一类,其余类为另外一类。这样针对k个类可以训练出k个分类器,当有一个新的样本来的时候,用这k个分类器来测试,那个分类器的概率高,那么这个样本就属于哪一类。这种方法效果不太好,bias比较高。 svm一对一法(one-vs-one),针对任意两个类训练出一个分类器,如果有k类,一共训练出C(2,k) 个分类器,这样当有一个新的样本要来的时候,用这C(2,k) 个分类器来测试,每当被判定属于某一类的时候,该类就加一,最后票数最多的类别被认定为该样本的类。

9.7 带核的SVM为什么能分类非线性问题?

核函数的本质是两个函数的内积,而这个函数在SVM中可以表示成对于输入值的高维映射。注意核并不是直接对应映射,核只不过是一个内积

9.8 RBF核一定是线性可分的吗?

        不一定,RBF核比较难调参而且容易出现维度灾难,要知道无穷维的概念是从泰勒展开得出的。 

9.9 常用核函数及核函数的条件?

  • 线性核:主要用于线性可分的情况
  • 多项式核
  • RBF核径向基,这类函数取值依赖于特定点间的距离,所以拉普拉斯核其实也是径向基核。
  • 傅里叶核
  • 样条核
  • Sigmoid核函数
  • 9.10 为什么要将求解 SVM 的原始问题转换为对偶问题?

  • 对偶问题将原始问题中的约束转为了对偶问题中的等式约束;
  • 方便核函数的引入;
  • 改变了问题的复杂度。由求特征向量w转化为求比例系数a,在原始问题下,求解的复杂度与样本的维度有关,即w的维度。在对偶问题下,只与样本数量有关。对偶问题是凸优化问题,可以进行较好的求解,SVM中就是将原问题转换为对偶问题进行求解。

9.11 SVM怎么输出预测概率?

        把SVM的输出结果当作x经过一层LR模型得到概率,其中lr的W和b参数为使得总体交叉熵最小的值。

9.12 如何处理数据偏斜?

        可以对数量多的类使得惩罚系数C越小表示越不重视,相反另数量少的类惩罚系数变大。数据的欠采样、过采样也可以处理

  • 21
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值