专业代码k深度学习中K近邻算法的实现与优化
本文目录
k近邻算法怎么找分类点?
K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。
该方法的思路是:在特征空间中,如果一个样本附近的k个最近(即特征空间中最邻近)样本的大多数属于某一个类别,则该样本也属于这个类别。
k邻近算法有几个参数?
有1个,这里面knn算法的参数有一个
k近邻算法的k值必须是什么数?
1、k近邻算法的k值可以是任意正整数,但一般需要根据具体问题和数据集来选择。
2、较小的k值会使得模型更加灵敏,但容易受到噪声的干扰;而较大的k值则会使模型更加稳定,但可能会忽略细微的变化。
3、因此,选择合适的k值需要考虑问题复杂性、数据特点和算法性能等因素。
k值要素是什么?
我们知道,k-近邻算法有三个核心要素:k值的选取、邻居距离的度量和分类决策的制订。下面分别对它们进行简单介绍。
3.4.1 k值的选取
k近邻算法优点很明显,简单易用,可解释性强,但也有其不足之处。例如,“多数表决”会在类别分布偏斜时浮现缺陷。也就是说,k值的选取非常重要,出现频率较多的样本将会主导测试点的预测结果。
k值的选取,对k-近邻算法的分类性能有很大影响。如果k值选取较小,相当于利用较小邻域的训练实例去预测,“学习”而得的近似误差较小,但预测的结果对训练样例非常敏感。如果这个近邻恰好就是噪声,那么预测就会出错。也就是说,k值较小,分类算法的健壮性较差。
倘若k值较大,则相当于在较大邻域中训练实例进行预测,它的分类错误率的确有所下降,即学习的估计误差有所降低。但随着k值的增大,分类错误率又会很快回升。这是因为,k值增大带来的健壮性,很快就会被多出来的邻居“裹挟而来”的噪声点所抑制,也就是说,学习的近似误差会增大。
换句话说,对于k值的选取,过犹不及。通常,人们采取交叉验证(Cross Validation,简称CV)[1]的方式来选取最优的k值。即对于每一个k值(k=1,2,3,…),都做若干次交叉验证,然后计算出它们各自的平均误差,最后择其小者定之。
3.4.2 邻居距离的度量
不量化,无以度量远近。
k-近邻算法要计算“远亲近邻”,就要求样本的所有特征都能做到可比较的量化。如果样本数据的某些特征是非数值类型的,那也要想办法将其量化。比如颜色,不同的颜色(如红、绿、蓝)就是非数值类型的,它们之间好像没有什么距离可言。但如果将颜色(这种非数值类型)转换为灰度值(数值类型:0~255),那么就可以计算不同颜色之间的距离(或说差异度)。
此外,不同样本可能有多个特征,不同特征亦有不同的定义域和取值范围,它们对距离计算的影响可谓大相径庭。比如,对于颜色而言,245和255之间相差10。但对于天气的温度,37°C和27°C之间也相差10。这两个距离都是10,但相差的幅度却大不相同。这是因为,颜色的值域是0~255,而通常气温的年平均值在-40°C~40°C,这样,前者的差距幅度在10/256=3.9%,而后者的差距幅度是10/80=12.5%。因此,为了公平起见,样本的不同特征需要做归一化(Normalization)处理,即把特征值映射到[0,1]范围之内处理。
归一化机制有很多,最简单的方法莫过于min-max缩放,其过程是这样的:对于给定的特征,首先找到它的最大值(MAX)和最小值(MIN),然后对于某个特征值x,它的归一化值
在特征空间上,某两个点之间的距离也是它们相似度的反映。距离计算的方式不同,也会显著影响谁是它的“最近邻”,从而也会显著影响分类结果。
样本的特征向量, 为类别标签。对于一个新样本 ,它在训练集合中的最近邻居标记为 ,可用公式(3-4)来选取它的最近邻居:
新样本 和训练集中的样本 之间的距离。于是,新样本的类别就被预测为距离它最近的k个邻居的标签,记作 。
很显然,是如何度量任意两个样本之间的距离。对于m维样本xi和样本xj之间的距离Lp,通常可以用欧几里德距离(Euclidean Distance,简称欧氏距离)表示:
当m = 2,对于二维平面两点 与 间的欧氏距离可表示为:
衡量两个向量的距离很多种标准,除了欧几里得距离之外,还有绝对值距离或称曼哈顿距离(Manhattan Distance,简称曼式距离)
knn算法实现回归原理?
算法原理
KNN算法的核心思维:相似度较高的样本,映射到n维空间后,其距离回避相似度较低的样本在距离上更加接近。
KNN,即K近邻算法,K近邻就是K个最近的邻居,当需要预测一个未知样本的时候,就由与该样本最接近的K个邻居来决定。KNN既可以用于分类问题,也可以用于回归问题。当进行分类预测时,使用K个邻居中,类别数量最多(或加权最多)者,作为预测结果;当进行回归预测时,使用K个邻居的均值(或加权均值),作为预测结果。