![59872a54-c923-eb11-8da9-e4434bdf6706.png](http://p01.5ceimg.com/content/59872a54-c923-eb11-8da9-e4434bdf6706.png)
在实际工程当中,我们常常会遇到海量的数据,那作为一个数据挖掘准从业人员,如何从海量的数据当中挖掘出他们数据之间的关系和规律就显得尤为重要了。
今天我要讲的时海量高维数据及其近似最近邻方案。
K-近邻算法(KNN)概述
KNN是通过测量不同特征值之间的距离进行分类。它的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别,其中K通常是不大于20的整数。
KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。
距离准则
在聊接下去的内容之前,我们首先要了解一个概念,叫距离准则:
距离准则有欧氏距离,Jaccard相似度,余弦相似度,Pearson相似度这几种,我们来分别解释下。
欧式距离就是指在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点之间的实际距离,所以它实现的是绝对距离。
余弦相似度是通过计算两个向量的夹角余弦值来评估他们的相似度。
Jaccard相似度是用于比较有限样本集之间的相似性与差异性,其中Jaccard系数值越大,样本相似度越高。
Pearson相似度是余弦相似度的升级版,它把每个向量都中心化了,即每个向量会减去所有向量的平均数,来实现数据更好的平衡,所以它实现的是相对距离。
近似最近邻问题(KNN=>ANN)
我们具体在哪些情景中会需要用到近似最近邻呢?举几个简单的例子:
- Google/Baidu每天有海量新增的网页,怎么判断