机器学习(二)KNN与Kmeans的面试题整理

K-means,KNN面试题整理1.简述一下K-means算法的原理和工作流程K-means是划分方法中较经典的聚类算法之一。由于算法的效率高,所以在对大规模数据进行聚类时被广泛应用。目前,许多算法均围绕着该算法进行扩展和改进。K-means算法以K为参数,把n个对象分成K个簇,使簇内具有较高的相似度,而簇间的相似度较低。K-means算法的处理过程如下:首先,随机地选择K个对象,...
摘要由CSDN通过智能技术生成

K-means,KNN面试题整理

1.简述一下K-means算法的原理和工作流程

K-means是划分方法中较经典的聚类算法之一。由于算法的效率高,所以在对大规模数据进行聚类时被广泛应用。目前,许多算法均围绕着该算法进行扩展和改进。

K-means算法以K为参数,把n个对象分成K个簇,使簇内具有较高的相似度,而簇间的相似度较低。

K-means算法的处理过程如下:首先,随机地选择K个对象,每个对象初始地代表了一个簇的平均值或中心;对剩余的每个对象,根据其与各簇中心的距离,将它赋给最近的簇;然后重新计算每个簇的平均值。这个过程不断重复,重复至准则函数收敛。

步骤:

1)从数据D中随机取k个元素,作为k个簇的各自的中心。

2)分别计算剩下的元素到K个簇中心的相异度,将这些元素分别划归到相异度最低的簇。

3)根据聚类结果,重新计算K个簇各自的中心,计算方法是取簇中所有元素各自维度的算术平均数。

4)将数据D中全部元素按照新的中心重新聚类。

5)重复第4)步,直到聚类结果不再变化为止。

6)将结果输出。

2.简述一下KNN算法的原理

KNN算法算法又称为K最近邻分类算法。所谓的K最近邻,就是指最接近的K个邻居,即每个样本都可以由它的K个邻居来表示。

KNN算法的思想是,在一个含未知样本的空间,可以根据离这个样本最邻近的K个样本的数据类型来确定样本的数据类型。

该算法涉及3个主要因素:分类决策规则、距离与相似的衡量、K的大小。

KNN做分类预测时,一般是选择多数表决法,即训练集里和预测的样本特征最近的K个样本,预测为里面有最多类别数的类别。而KNN做回归时,一般是选择平均法,即最近的K个样本的样本输出的平均值作为回归预测值。

对于距离的度量,我们有很多的距离度量方式,但是最常用的是欧式距离。

K值的选择,过小则容易过拟合,过大则容易欠拟合,可以使用交叉验证法选取K值。

3.KNN算法有哪些优点和缺点?

优点:

1)思想简单,理论成熟,既可以用来做分类也可以用来做回归;

2)可用于非线性分类;

3)训练时间复杂度为O(n);

4)  准确度高,对数据没有假设,对离群值不敏感;

缺点:

1.计算量大;

2.样本不平衡问题(即有些类别的样本数量很多,而其他样本的数量很少);

3.需要大量的内存;

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

观察上面的图,可以看到对于样本X,通过KNN算法,显然可以得到X应属于红点,但对于样本Y,通过KNN算法似乎得到了Y应属于蓝点的结论,而这个结论直观来看并没有说服力。

由上面的例子可见:该算法在分类时有个严重的不足是,当样本不平衡时,即:一个类的样本容量很大,而其他类样本数量很小时,很有可能导致当输入一个未知样本时,该样本的K个邻居中大数量类的样本占多数。但是这类样本并不接近目标样本,而数量小的这类样本很接近目标样本。这个时候,我们有理由认为该位置样本属于数量小的样本所属的一类。但是,KNN却不关心这个问题,它只关心哪类样本的数量最多,而不去把距离远近考虑在内,因此,会导致预测结果的不准确。

我们可以采用权值的方法改进。和该样本距离小的邻居权值大,和该样本距离大的邻居权值相对较小,由此,将距离远近的因素也考虑在内,避免因为一个样本过大导致误判的情况。

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

KNN算法计算量较大,因为对每一个待分类的样本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。KNN算法的改进方法之一是分组快速搜索近邻法。其基本思想是:将样本集按近邻关系分解成组,给出每组质心的位置,以质心作为代表点,和未知样本计算距离,选出距离最近的一个或者若干个组,再在组的范围内应用一般的KNN算法。由于并不是将未知样本与所有样本计算距离,故该改进算法可以减少计算量,但并不能减少存储量。

6.什么是欧氏距离和曼哈顿距离?

欧式距离,最常见的两点或者多点之间的距离表示法,又称之为欧几里得度量,它定义于欧几里得空间

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值