KNN算法--基本分类和回归方法 当前位置: Home » 机器学习 » KNN算法--基本分类和回归方法 KNN算法--基本分类和回归方法。 ### 1. 是什么 给定一个训练数据集(test_set) 对新的输入实例 在训练集(train_set)中找到与该实例距离最近的k个数据集 这k个数据集的大多数属于哪个类型的,那么这个实例就是那个分类。 如图一所示 ![knn.png][1] > 举一个不恰当的例子:如果你的身边都是百万富翁,那你的资产大概率也不少。 ### 2. k值的选取以及影响 ![k值.png][2] #### 2.1 k值过小,导致过拟合 如图所示,当k值选择最小为1时,五边形直接属于黑色,但你从感官上看五边形应该属于方块啊。这就是过拟合。 #### 2.2 k值过大,模型简单,预测失误 极端的例子:选取整个训练集的长度为k值。你会发现五边形永远属于个数最多的类别。 #### 2.3 特征归一化 首先我们先来看这样一个例子: 5个训练样本: | 序号 | 身高 | 体重 | 分类 | | :---: | :---: | :---: | :---: | | 1 | 179 | 42 | 男 | | 2 | 178 | 43 | 男 | | 3 | 165 | 36 | 女 | | 4 | 177 | 42 | 男 | | 5 | 160 | 35 | 女 | 给出测试样本: 6(167,43) 选定k=3 计算距离: 6-1=$$\sqrt{145}$$ 6-2=$$\sqrt{121}$$ 6-3=$$\sqrt{53}$$ 6-4=$$\sqrt{101}$$ 6-5=$$\sqrt{103}$$ 由此发现 最近的为3,4,5。因为两女一男,我们推断样本属于女。 但是你会发现一个女性的脚为43码远远小于男性的脚为43码, 这里就是因为身高的数值比脚的数值大或者说是量纲大。因此导致身高的重要性远远大于脚码。 这也就是归一化的原因。 数据归一化的处理方式有很多,比如:0-1标准化,Z-score标准化,Sigmoid压缩法。 这里介绍一个比较简单的0-1标准化,公式: MIN为改特征下的最小值,如身高的MIN为160; MAX为该特征下的最大值,如身高的MAX为179 > $$x_normalization=\frac{x-MIN}{MAX-MIN}$$ 上面的测试数据经过0-1标准归一化变为 | 序号 | 身高 | 体重 | 分类 | | :---: | :---: | :---: | :---: | | 1 | 1 | 0.875 | 男 | | 2 | 0.95 | 1 | 男 | | 3 | 0.26 | 0.125 | 女 | | 4 | 0.89 | 0.875 | 男 | | 5 | 0 | 0 | 女 | 举例 身高: 1=$$\frac{179-160}{179-160}$$=1 2=$$\frac{179-160}{179-160}$$=0.95 体重 1=1=$$\frac{42-35}{43-35}$$=0.875 ### 距离的度量 主要包括以下几种度量方式 ![度量.png][6] ###案例-预测癌症 [预测癌症][7] [1]: http://sylblog.xin/usr/uploads/2019/07/2273352692.png [2]: http://sylblog.xin/usr/uploads/2019/07/4142968732.png [3]: http://sylblog.xin/usr/uploads/2019/08/3909639591.png [4]: http://sylblog.xin/usr/uploads/2019/08/2385205104.png [5]: http://sylblog.xin/usr/uploads/2019/08/3781761527.png [6]: http://sylblog.xin/usr/uploads/2019/07/583027182.png [7]: https://github.com/coder-syl/ml-alg-demo/tree/master/knn
Comments | NOTHING