机器学习(周志华) 参考答案 第六章 支持向量机 6.9

来源:互联网 发布:udp端口扫描器报告 编辑:程序博客网 时间:2024/05/16 14:45

机器学习(周志华) 参考答案 第六章 支持向量机 6.9

机器学习(周志华西瓜书) 参考答案 总目录

  • http://blog.csdn.net/icefire_tyh/article/details/52064910

机器学习(周志华) 参考答案 第六章 支持向量机

  • http://blog.csdn.net/icefire_tyh/article/details/52135662

    核化是个相当强力的技巧,不过产生的维数和样本数成正比,样本太多压力就大了

9.试使用和技巧推广对率回归,产生“核对率回归”。
这题相当于将第三章3.3题进行推广,思路基本和对率回归相当。

由表示定理可知,一般优化问题的解可h(x)以写成核函数的线性组合。
即:h(x)=iwik(x,xi)
可以推出w=iαiφ(xi)
其中φ(x)x在更高维的映射
由此可将3.22式中wTx+b改写为iαiφ(xi)φ(x)+b=iαik(x,xi)+b
β=(α;b),ti=(k.i;1),其中k.i表示核矩阵k的第i列
得到
l(β)=i(yiβTti+ln(1+eβTti))
下面解法与对率回归完全一样。

这是使用高斯核产生的回归结果(图1σ=0.5,图2σ=0.8)
σ=0.5
σ=0.8

视觉效果是比对率回归好了不少,不过不知道过拟合严不严重
下面matlab代码,对3.3的程序做了略微的修改

%核对率回归 西瓜数据集3.0ɑold_l=0;    %记录上次计算的ln=0;    %计算迭代次数b=zeros(18,1);  %初始参数 (自定义)b(18)=1;x = xlsread('C:\Users\icefire\Desktop\ml\西瓜3.0.xlsx', 'sheet1', 'A1:Q2');y = xlsread('C:\Users\icefire\Desktop\ml\西瓜3.0.xlsx', 'sheet1', 'A4:Q4');%保存核矩阵k=ones(18);%保存高斯核矩阵for i=1:17    for j=1:17        k(i,j)=exp(-0.5*(x(:,i)-x(:,j))'*(x(:,i)-x(:,j)));    endendwhile(1)   cur_l=0;   bx=zeros(17,1);   %计算当前参数下的l   for i=1:17        bx(i) = b.'*k(:,i);        cur_l = cur_l + ((-y(i)*bx(i)) )+log(1+exp(bx(i)));   end   %迭代终止条件   if abs(cur_l-old_l)<0.001         break;   end   %更新参数(牛顿迭代法)以及保存当前l   n=n+1;   old_l = cur_l;   p1=zeros(17,1);   dl=0;   d2l=0;   for i=1:17        p1(i) = 1 - 1/(1+exp(bx(i)));        dl = dl - k(:,i)*(y(i)-p1(i));        d2l = d2l + k(:,i) * k(:,i).'*p1(i)*(1-p1(i));   end   b = b - d2l\dl;end%绘制核对率回归的曲线syms px pyfxy(px,py)=px-px+b(18);for i=1:17    fxy=fxy+ b(i)*exp(-0.5*((px-x(1,i))^2+(py-x(2,i))^2));endezplot(fxy,[0 1]);hold on;%逐点画  分别表示是否好瓜for i=1:17         if y(i)==1       plot(x(1,i),x(2,i),'+r');       hold on;    else if y(i)==0          plot(x(1,i),x(2,i),'og');              hold on;        end    endend%计算出直线边界点 并绘制直线xlabel('密度');ylabel('含糖率');title('核对率回归 σ=0.5'); 
0 0
原创粉丝点击