第七周作业报告
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)