KNN与CNN相关

 

KNN(K-Nearest Neighbor)最邻近分类算法

就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。

KNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性

         KNN最邻近分类算法的实现原理:为了判断未知样本的类别,以所有已知类别的样本作为参照,计算未知样本与所有已知样本的距离,从中选取与未知样本距离最近的K个已知样本,根据少数服从多数的投票法则(majority-voting),将未知样本与K个最邻近样本中所属类别占比较多的归为一类。

 KNN算法的关键:

           (1) 样本的所有特征都要做可比较的量化

           若是样本特征中存在非数值的类型,必须采取手段将其量化为数值。例如样本特征中包含颜色,可通过将颜色转换为灰度值来实现距离计算。

           (2) 样本特征要做归一化处理

           样本有多个参数,每一个参数都有自己的定义域和取值范围,他们对距离计算的影响不一样,如取值较大的影响力会盖过取值较小的参数。所以样本参数必须做一些 scale 处理,最简单的方式就是所有特征的数值都采取归一化处置。

           (3) 需要一个距离函数以计算两个样本之间的距离

           通常使用的距离函数有:欧氏距离、余弦距离、汉明距离、曼哈顿距离等,一般选欧氏距离作为距离度量,但是这是只适用于连续变量。在文本分类这种非连续变量情况下,汉明距离可以用来作为度量。通常情况下,如果运用一些特殊的算法来计算度量的话,K近邻分类精度可显著提高,如运用大边缘最近邻法或者近邻成分分析法。

 

卷积神经网络(Convolutional Neural Networks-简称CNN)

一般地,CNN的基本结构包括两层:

       1)特征提取层:每个神经元的输入与前一层的局部接受域相连,并提取该局部的特征。一旦该局部特征被提取后,它与其它特征间的位置关系也随之确定下来;

       2)特征映射层,网络的每个计算层由多个特征映射组成,每个特征映射是一个平面,平面上所有神经元的权值相等。特征映射结构采用影响函数核小的sigmoid函数作为卷积网络的激活函数,使得特征映射具有位移不变性。

卷积神经网络CNN的结构一般包含这几个层:

1)输入层:用于数据的输入

2)卷积层:使用卷积核进行特征提取和特征映射

在原始的输入上进行特征的提取。特征提取简言之就是,在原始输入上一个小区域一个小区域进行特征的提取。

第一次卷积可以提取出低层次的特征。

第二次卷积可以提取出中层次的特征。

第三次卷积可以提取出高层次的特征。

特征是不断进行提取和压缩的,最终能得到比较高层次特征,简言之就是对原式特征一步又一步的浓缩,最终得到的特征更可靠。利用最后一层特征可以做各种任务:比如分类、回归等。

3)激励层:由于卷积也是一种线性运算,因此需要增加非线性映射

4)池化层:进行下采样,对特征图稀疏处理,减少数据运算量。

卷积后的特征图像具有一种“静态性”的属性,这也就意味着在一个图像区域有用的特征有可能在另一个区域也同样适用。因此,为了描述大的图像,一个很自然的想法就是对不同位置的特征进行聚合统计。这种概要统计特征不仅具有低得多的维度,同时还会改善效果>避免过拟合

池化的一个非常重要的作用就是能够帮助输入的数据表示近似不变性。对于平移不变性指的是对输入的数据进行少量平移时,经过池化后的输入结果并不会发生改变。

池化就是对特征图进行特征压缩,池化也叫做下采样。选择原来某个区域的max或mean代替那个区域,整体就浓缩了。

5)全连接层:通常在CNN的尾部进行重新拟合,减少特征信息的损失