SVM理论讲述癌症识别

浏览: 1852

本文用通俗的语言解释MATLAB伪代码的支持向量机SVM核心代码,进而在癌症预测的应用。MATLAB的SVM,MATLAB自带SVM算法,因此,在这里通过MATLAB自带算法进行解释。本文的项目是两类人的预测,健康人,癌症患者,数据为基因表达数据。由于癌症患者前期的基因会发生变化,所以年度体检基因检测得到的基因表达数据可预测一年后的癌症发生概率。此项目具有实际的现实意义。是数据挖掘应用中的一个重要里程碑。

前提:由于SVM多处理非线性分类,如下:

​​​

SVM会通过以上核函数处理成以下形式,即对x进行了转化,变成线性可分。变成线性。

代码:svmtrain函数中

  kx =feval_r(kfun,training,training,kfunargs{:});

        % ensure function is symmetric

        kx = (kx+kx')/2 +diag(1./boxconstraint);

 

以下x都为核函数转化后的x,下面的篇幅将按下述3点走:

1. 其实就要确定上述分类函数f(x) = w.x+b(w.x表示w与x的内积, 偏执b)中的两个参数w和b,通俗理解的话;

2. 那如何确定w?答案是寻找两条边界端或极端划分直线中间的最大间隔(为寻最大间隔,导出1/2||w||^2,求解方法很多,svm最基础的是用二次规划方法),从而确定最终的最大间隔分类函数;

首先第一点,举例X0到X的距离

SVM目的就是拟合出一条中间线,让所有的X离这条线最远。即

中间线还要在两类的中间,后面s.t的限制条件就是能让这条线在中间。求解的公式等价于

代码:svmtrain函数中

%X=QUADPROG(H,f,A,b,Aeq,beq,LB,UB,X0,opts)

        [alpha, fval, exitflag, ...

            output, lambda] =quadprog(H,-ones(nPoints,1),[],[],...

            groupIndex',0,zeros(nPoints,1), ...

            Inf *ones(nPoints,1),ones(nPoints,1), ...

            qp_opts); %#ok

3. 进而把寻求分类函数f(x)= w.x+b的问题转化为对w的最优化问题,最终化为公式的求解。通过二次规划方法解出w值,进而得出最后的公式是f(x) = w.x+b。

由于f(x) = w.x+b转化成

代码:svmdecision函数

f =(feval_r(kfun,sv,Xnew,kfunargs{:})'*alphaHat(:)) + bias;

out = sign(f);

最终理解成其实就是将x进行维度转化后的y=ax的公式。

对预测的结果如图所示,其他两种优于SVM的算法是优化后的,有兴趣的可以联系我一起讨论。

推荐 6
本文由 张聪 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

1 个评论

高级应用篇

要回复文章请先登录注册