您的位置:首页 > 其它

数据科学个人笔记:K近邻算法+感知机算法

2018-08-13 15:06 225 查看

一、感知机算法

感知机算法输入R^n中的向量,输出y={1,-1}。学习函数如下:fx=sign(wx+b),其中sign(x)=1(x>=0)或-1(x<0)。感知机算法仅能处理线性可分数据。

将wx+b=0看作向量空间中的分离超平面S,将样本(向量)分到超平面两边。

1.数据集的线性可分性:若存在超平面wx+b=0本不该讲数据集的正负例完全正确地分到两侧,即对y=1有wx+b>0,y=-1有wx+b<0,则称数据集为线性可分数据集。

2.要找一个对参数w、b连续可导的损失函数,然后针对该损失函数最小化的目标选定最优的w和b。

3.空间中任一点x0到超平面S的距离为(1/||w||)*|w*x0+b|,误分类点的y与wx+b符号相异,故误分类点到超平面距离总和为-(1/||w||)*sum(yi*|w*xi+b|)。设该函数为损失函数,要使它最小化。

4.使用随机梯度下降法优化损失函数。随机初始化w、b,每次随机从样本中抽取一个,若分类正确则不更新,若分类错误,则让w、b减去步长(0到1)乘梯度。

5.随机梯度下降:损失函数对w求偏导为-sum(yixi),对b求偏导为-sum(yi)。而在随机梯度下降中可忽略sum。

6.对偶形式:感知机算法判别函数可写形式fx=sign(按j来sum(alfaj*yj*xj*xi)+b)。将xixj存为Gram矩阵,方便取用。每次随机取出样本,若分类错误,alfa=alfa+步长,b=b+步长*yi,直到无误分类项。

 

二、K近邻算法

(一)算法形式

根据给定的距离度量找出待测样本的k个邻居(k=1时为最近邻算法),然后多数表决决定类别。没有显示学习过程。

(二)距离度量

两点距离是其相似度的反映。由不同的距离度量确定的邻居是不同的(丑小鸭定理)。

1.欧式距离:[sum(|xi-yi|^2)]^(1/2)

2.曼哈顿距离:i点到j点的曼哈顿距离为d(i,j)=|xi-xj|+|yi-yj|(横坐标差值加纵坐标差值)。

3.切比雪夫距离:两点横坐标差值的绝对值和纵坐标差值的绝对值中的最大值,max(|xi-xj|,|yi-yj|)

4.闵可夫斯基距离:p次根号下(|xi-xj|^p+|yi-yj|^p)

5.其他:余弦相似度,皮尔逊相关系数,斯皮尔曼相关系数。

(三)k值的选择

1.较小的k代表高复杂度。通常用交叉验证法来解决k值选取。

2.k-fold交叉验证法:把训练样例分成k份,然后进行k次交叉验证过程,每次使用不同的一份作为验证集合,其余k-1份合并作为训练集合.每个样例会在一次实验中被用作验证样例,在k-1次实验中被用作训练样例。

(四)使用多数表决法的原因

最小化误分类率,即最小化(选择的划分区域类别,该划分区域中非该类别的样本占的比例)。

(五)k近邻法的实现:平衡kd树

Kd树用于对k维空间的实例点进行存储,是二叉树,表示对k维空间的一个划分。

1.构造方法:对各节点依次选择坐标轴对空间切分,选定实例点在选定坐标轴上的中位数为切分点(得到平衡的树)。深度为0的二分使用坐标1,为1用坐标2,周期性交替。每个节点直到无法再用其深度对应坐标划分为止。

2.使用kd树进行k近邻搜索:

(1)找出包含目标点的叶节点,在其中找目标点的k个邻居,并以其最远点构建超球体。

(2)回退到父节点并判断兄弟节点是否与超球体相交,若有则将相交区域中的点替换k个邻居中的点并重新计算超球体。

(3)直到某个兄弟节点不相交或回退到根节点为止。

3.kd树的平均计算复杂度为O(logN),更适用于训练实例数远大于空间维数的k近邻搜索。当空间维数接近实例数时它的效率会迅速下降,几乎接近线性扫描。

(六)优缺点

K近邻:优点 :模型容量大,在k值选取较大且训练数据非常多时能非常接近贝叶斯误差。

缺点:计算成本较高,对于样本量较小的分类问题,会产生误分,不能学习出特征之间的识别力强弱。

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: