机器学习---KNN理论部分

 

目录

1、KNN算法描述

2、应用:

3、要关注的几个要素:

1)如何计算当前点(元素)和别的点(元素)的距离。

2)k值的选择

3)分类决策规则

4、使用knn算法时流程

1、一个物体表示成向量量

2. 标记号每个物体的标签

3、 计算两个物体之间的距离/相似度(如上面使用欧式公式距离)

4、选择合适的K

a、KNN的决策边界:怎么寻找(i.e., K=1)?

b、交叉验证

c、交叉验证中需要注意的点

5、特征的缩放

5、KNN 的延伸内容(1)

1、如何处理大数据量

2 、如何处理理特征之间的相关性

3、怎么处理理样本的重要性

4、能不能利用Kernel Trick

6、总结


1、KNN算法描述

1、k近邻法(k-nearest neighbor, kNN),具体实现是计算某个点(元素)最近相邻的k个点,然后找出这个k个点中点(元素)个数最多的类别,把这个类别作为当前点(元素)的类别。

2、应用:

应用在分类和回归(主要应用是分类)

3、要关注的几个要素:

1)如何计算当前点(元素)和别的点(元素)的距离。

距离度量,有

a.曼哈顿距离、欧氏距离。

                                                    L_{P}=\left(\sum_{l=1}^n{|x_i^{(l)}-y_i^{(l)}|^{p}}\right)^{\frac{1}{p}}

 

如图,p = 1的时候相当于

                                                       L_{P}=\sum_{l=1}^n{|x_i^{(l)}-y_i^{(l)}|}

如图,p=2的时候就是欧式距离,相当于

                                                       L_{P}=\left(\sum_{l=1}^n{|x_i^{(l)}-y_i^{(l)}|^{2}}\right)^{\frac{1}{2}}

b.两个物品的相似度(通过向量计算相似度等)

2)k值的选择

    k值的选择会对k近邻法的结果产生重大影响。在应用中,k值一般取一个比较小的数值,通常采用交叉验证法来选取最优的k值。

3)分类决策规则

    k近邻法中的分类决策规则往往是多数表决,即由输入实例的k个邻近的训练实例中的多数类,决定输入实例的类。

4、使用knn算法时流程

1. 把一个物体表示成向量

2. 标记号每个物体的标签(i.e., offer/no offer)

3. 计算两个物体之间的距离/相似度

4. 选择合适的K

1、一个物体表示成向量量

这也叫做“特征工程”英文叫Feature Engineering,模型的输入一定是数量化的信息,我们需要把现实生活中的物体表示成向量/矩阵/张量形式。

2. 标记号每个物体的标签

水果打标签分类

如水果的分类

3、 计算两个物体之间的距离/相似度(如上面使用欧式公式距离)

4、选择合适的K

     为了选择合理的K, 首先需要去理解K对算法的影响

     为了理解K对算法的影响,需要先理解什么叫算法的决策边界

    决策边界:

                    例1:大学里60分以上作为及格,60分以下作为不及格

                    例2:今年某高校要计划引入35岁以下,具有海外研究经验3年年以上的学者。

决策边界决定“线性分类器”或者“非线性分类器”

a、KNN的决策边界:怎么寻找(i.e., K=1)?

答案是:交叉验证(Cross Validation),也就是我们平时说的“调参”

b、交叉验证

交叉验证即,把训练数据进一步分成训练数据(Training Data)和验证集(Validation Data)。选择在验证数据里最好的超参数组合。(这里说的超参数是指模型之外的参数,不是模型训练出来的参数,比如这里说的k,并不是模型训练出来的参数,而是我们人为改变k值)

c、交叉验证中需要注意的点

          1. 千万不能用测试数据来调参

           2. 千万不能用测试数据来调参

           3. 千万不能用测试数据来调参

           4. 数据量越少,可以适当增加折数

5、特征的缩放

1. 线性归一化(Min-max Normalization)

2. 标准差标准化(Z-score Normalization)

5、KNN 的延伸内容(1)

1、如何处理大数据量

1、预测阶段:需要计算被预测样本和每一个训练样本之间的距离

2、时间复杂度: O(N) , N是样本总数

3、当N很大的时候,这个复杂度显然不能作为实时预测

解决:

1、近似算法:不再寻求完全准确的解,可以适当损失精确率,利用类似哈希算法– Locality Sensitivity Hashing (LSH)。取部分数据

核心思想:把样本分在不同的bucket, 使得距离比较近的样本较大概率在同一个bucket里LSH 函数h对于给定的相似度量函数d, 满足:

d(x1, x2) <=r 时p(h(x1)==h(x2))的概率高

 d(x1,x2)>??时, p(h(x1)==h(x2))的概率低

2、KD-tree,对于样本个数N来说O(logN),对于数据维度d来说,指数级复杂度。

2 、如何处理理特征之间的相关性

使用马氏距离,马氏距离(Mahalanobis distance)是由印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出的,表示点与一个分布之间的距离。它是一种有效的计算两个未知样本集的相似度的方法。与欧氏距离不同的是,它考虑到各种特性之间的联系(例如:一条关于身高的信息会带来一条关于体重的信息,因为两者是有关联的),并且是尺度无关的(scale-invariant),即独立于测量尺度。对于一个均值为μ,协方差矩阵为Σ的多变量向量,其马氏距离为sqrt( (x-μ)'Σ^(-1)(x-μ) )。

3、怎么处理理样本的重要性

加权重

4、能不能利用Kernel Trick

https://blog.csdn.net/krais_wk/article/details/80992153

6、总结

1. KNN是一个非常简单的算法

2. 比较适合应用在低维空间

3. 预测时候的复杂度高,对于大数据需要一定的处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值