第七周作业报告

带权重KNN

KNN算法

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

举例:对文本分类

  1. 根据特征项集合重新描述训练文本向量
  2. 在新文本到达之后,根据特征词分词新文本,确定新文本的向量表示
  3. 在训练文本中选择出与新文本最相似的k个文本,公式表达为:
    Sim(di,dj)=Mk=1WikWjk(Mk=1W2ik)(Mk=1W2jk)
    公式中k的确定没有很好的办法,一般采用定一个初始值,慢慢调试
  4. 在新的文本的k个邻居中一次计算每个类的权重,计算公式为:
    p(x¯,Cj)=d¯KNNSim(x¯,d¯i)y(d¯i,Cj)
    其中x为新文本的特征向量,sim(x,di)为相识度计算公式,与上一步的计算公式相同,而y为类别属性函数,即如果di是属于类cj那么为1,否者为0
  5. 比较类的权重,将文本分类到权重最大的那个。

参考KNN台湾wiki

KNN的不足
  1. 该算法在分类是当样本不平衡时,例如一个雷的样本容量很大,而其他的样本容量很小时,可能导致输入一个新的样本时,该样本的k个邻居中大多数为大容量的那个类,因此误分类的可能性比较大。
  2. 另外一个不足之处在于计算量太大。因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能计算求得k个近邻点
带权重KNN

参考:1.基于类别平均距离的加权 KNN 分类算法
2.改进型加权 KNN 算法的不平衡数据集分类

L={(yi,xi)|xiRd,i=1,2,3,.....n} 是一个已标记类别的训练集, xi 是训练样本, yi 是它的类别标记, yi{ω1,ω2,......ωr} xt 为测试 yt 样本,它的类别 待测。加权KNN的基本步骤如下:
1)根据明考斯基(Minkowski)距离 d(xt,xi)=(di=1|xtixij|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)={10AA

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

yt=argmaxωsP(ωs|Xt)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值