您的位置:首页 > 其它

第七周作业报告

2017-04-09 18:03 253 查看

带权重KNN

KNN算法

KNN(K Nearest Neighbors,K近邻 )算法是机器学习所有算法中理论最简单,最好理解的。KNN是一种基于实例的学习,通过计算新数据与训练数据特征值之间的距离,然后选取K(K>=1)个距离最近的邻居进行分类判断(投票法)或者回归。

举例:对文本分类

根据特征项集合重新描述训练文本向量

在新文本到达之后,根据特征词分词新文本,确定新文本的向量表示

在训练文本中选择出与新文本最相似的k个文本,公式表达为:Sim(di,dj)=∑Mk=1Wik∗Wjk(∑Mk=1W2ik)(∑Mk=1W2jk)−−−−−−−−−−−−−−−−−−√公式中
k
的确定没有很好的办法,一般采用定一个初始值,慢慢调试

在新的文本的k个邻居中一次计算每个类的权重,计算公式为:p(x¯,Cj)=∑d¯∈KNNSim(x¯,d¯i)y(d¯i,Cj)其中x为新文本的特征向量,
sim(x,di)
为相识度计算公式,与上一步的计算公式相同,而y为类别属性函数,即如果di是属于类cj那么为1,否者为0

比较类的权重,将文本分类到权重最大的那个。

参考KNN台湾wiki

KNN的不足

该算法在分类是当样本不平衡时,例如一个雷的样本容量很大,而其他的样本容量很小时,可能导致输入一个新的样本时,该样本的k个邻居中大多数为大容量的那个类,因此误分类的可能性比较大。

另外一个不足之处在于计算量太大。因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能计算求得k个近邻点

带权重KNN

参考:1.基于类别平均距离的加权 KNN 分类算法

2.改进型加权 KNN 算法的不平衡数据集分类

设 L={(yi,xi)|xi∈Rd,i=1,2,3,.....n}是一个已标记类别的训练集, xi是训练样本, yi是它的类别标记, yi∈{ω1,ω2,......ωr}。 xt为测试yt样本,它的类别 待测。加权KNN的基本步骤如下:

1)根据明考斯基(Minkowski)距离 d(xt,xi)=(∑di=1|xti−xij|q)1q(或其它特征加权相似度),从训练集 L中,找出xt 的k+1 个近邻样本。用 xt(1)...xt(k+1)表示这 个近邻样本,yt(1)...yt(k+1) 分别是它们的类别标记。

2)用第 k+1个近邻样本到 xt的距离 d(xt,xt(k+1)),标准化前k 个近邻样本到 xt的距离:

D(xt,xt(l))=d(xt,xt(l))d(xt,xt(k+1))(L∈{1,2,3,4,......k})

3)用加权核函数P() ,将标准距离 D(xt,xt(l))) 转化为 xt与 xt(l))同类的概率 。若 P()采用高斯核函数,则有

P(xt(l))|xt)=12√πexp(−D(xt,xt(l))2)

4)根据 xt的这k 个近邻样本,求出xt 为ωs(s=1,2,3...r) 类的后验概率

P(ωs|Xt)=1α∑P(xt(l)|Xt)I()

I(A)={10若A为真若A为假

式中, α=∑P(xt(l)|Xt)为归一化因子。最大P(ωs|Xt) 所对应的类别被判定为xt 的类别,即

yt=argmaxωsP(ωs|Xt)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: