文本分类的14种算法(3)

文本分类的14种算法(3):

部分常用文本分类算法

k临近算法

所谓临近,就是指对于测试样本,找出训练集中与他最相似的一个样本,并将该样本的结果当作测试样本的结果输出。k临近算法利用“距离”的概念来描述样例间的相似程度:对于文本的特征向量(x1,x2,…,xn),把他当作一个n维的点,其与另一个文本(y1,y2,…,yn)的距离根号下(∑(xi-yi)^2)即两文本的相似程度。
可见k临近算法的计算量主要集中在预测这一步上而不是训练这一步上,这使其在单一测试样本的预测中会具有较大的效率优势。

我程序里的测试集有2000多条文本,每条文本有20000多个特征位,训练很快就跑好了,
但是预测跑了半天也没跑出来。。。
文本分类的14种算法(3)_第1张图片

逻辑回归算法

逻辑回归算法也是一种分类算法,常规的回归算法就是对于文本的特征值x1,x2,…,xn,拟合出一个多项式:
f(x)=c0+c1x1+c2x2+…+cn*xn
使得可以根据f(x)的值来确定样本的分类。
逻辑回归是对其的一种优化,逻辑回归利用sigmoid函数的特殊性质,使最终拟合出的函数值可以直接表示某样本从属于某一类的概率,且保证函数值域为[0,1]。
sigmoid函数:sig(x)=1/(1+exp(-x))
假定样本为分类1的概率为p(x),根据sig(x)=ln(p(x)/(1-p(x))),两式联立可以解得:
p(x)=1/(1+exp(-f(x))),即:
在这里插入图片描述
所以逻辑回归算法的训练就是拟合函数的过程。值得注意的是,由于p(x)表示的是文本属于某一类的概率,所以对于样本分类数量为n的数据集,需要n-1个p(x),取p(x)最大的分类作为结果。在二分类问题中,也可以表示为若p(x=1)>0.5,则分类为1,否则为测试文本分类为0.
文本分类的14种算法(3)_第2张图片

SVM支持向量机

这篇文章讲的比较好:https://blog.csdn.net/u011630575/article/details/78916747
具体的数学推导和证明我也没有细看,这里大致概括一下它的思想:
把各个样本当作是点画在空间内,以二维空间为例,SVM其实就是画一条线将两类点分隔开。
这条线就叫决策面,SVM其实就是选定和优化选定决策面的算法。考虑到要在两类数据间划分出足够的空隙、容量,具有“最大间隔”的决策面就是SVM要寻找的最优解。像下图中B这样的就是最优解:
文本分类的14种算法(3)_第3张图片
假设决策面直线为y=ax+b,变换坐标轴,x2=ax1+b,w=[a,-1]的转置。通过数学推导可以将这一问题转化为一个有约束不等式的、求一与决策面向量正交的向量的模w的最小值问题:

利用拉格朗日乘数法:L(x,λ)=f(x)+λg(x)可以有效地解决有条件约束的极值问题,但要求约束条件为等式。故我们要先采用KKT条件对原约束方程进行转化。所谓KKT条件就是对于拉格朗日乘数法求最优解问题时利用最优解相对可行解的性质进行的不等式约束条件向等式约束条件的转化,比如下面这张图:
文本分类的14种算法(3)_第4张图片
拉格朗日乘数法:L(x,λ)=f(x)+λ
g(x),其中g(x)=0为条件约束函数。本例中的约束函数却为g(x)<=0。目标函数等高线代表待求解的数值,显然,由于是求最优解(在本例中是求目标函数的最小值)。最优解要么在可行解区域的边界上,此时约束条件函数取值g(x)=0,要么在可行解区域中,相当于λ=0.两者必然带来一种结果即λg(x)=0.故约束条件g(x)<=0可以被写为g(x)<=0,λ>=0,λg(x)=0三式。
之所以做这一步就是为了之后使用拉格朗日对偶来求最优解。关于拉格朗日对偶这一篇博文讲的挺好:
https://www.cnblogs.com/90zeng/p/Lagrange_duality.html
也就是将上述约束条件代入广义拉格朗日公式,求出L(x,α,β),然后将x看作常数求L(x,α,β)的最大值,将求出的α、β的解αi、βj作为常数回代,求f(x)最小值时x的取值,这里的x即w的模。
值得注意的是KKT和拉格朗日对偶的优化并不是必须的。

SVM跑起来非常耗时(看这个求解过程就该猜出来了),也是没跑出来。
我参考的原博:https://www.kesci.com/home/project/5cbbe1668c90d7002c810f79中其他非机器学习算法撑死跑几十秒的,他跑了300多秒。。。

你可能感兴趣的:(文本分类的14种算法(3))