#翻译#了下 余凯老师的 心法

以前的一篇博文:二分类SVM方法Matlab实现

前几日实现了下,虽然说是Linear-SVM,但是只要可以有映射函数也可以做kernel-svm

function [optW cost]= svm5step(X, y, lambda)
%% Linear-SVM Minimize(Cost + lambda*Penalty)
% X: N×dim
% y: {-1,+1}
% lambda: coefficient for Penalty part
% By LiFeiteng Email:lifeiteng0422@gmail.com [N dim] = size(X);
w = rand(dim+1,1);
X = [ones(N,1) X]; % x = [1 x] % minFunc From: http://www.di.ens.fr/~mschmidt/Software/minFunc.html
options.Method = 'lbfgs';
options.maxIter = 100;
options.display = 'on';
[optW, cost] = minFunc( @(p) svmCost(p, X, y, lambda), w, options); end function [cost grad] = svmCost(w, X, y, lambda)
% cost = HingeLoss^2 + lambda*||w||^2
% 1 2 3 4 5 step
yp = X*w;
idx = find(yp.*y<1);
err = yp(idx)-y(idx);
cost = err'*err + lambda*w'*w;
grad = 2*X(idx,:)'*err + 2*lambda*w;
end

测试用例:

clear
close all
x0 = [1 4]';
x1 = [4 1]'; X0 = [];
X1 = [];
for i = 1:40
X0 = [X0 normrnd(x0, 1)];
X1 = [X1 normrnd(x1, 1)];
end
X = [X0 X1]';
y = [-ones(size(X0,2),1); ones(size(X1,2),1)];
save data X0 X1 X y plot(X0(1,:),X0(2,:), 'ko', 'MarkerFaceColor', 'y', 'MarkerSize', 7);
hold on
plot(X1(1,:),X1(2,:), 'k+','LineWidth', 2, 'MarkerSize', 7); lambda = 0.01;
w = svm5step(X, y, lambda)
k = -w(2)/w(3); b = -w(1)/w(3);
h = refline(k,b); %已知斜率w 截距b 画直线
set(h, 'Color', 'r') b = -(w(1)+1)/w(3);
h = refline(k,b); %已知斜率w 截距b 画直线
b = -(w(1)-1)/w(3);
h = refline(k,b); %已知斜率w 截距b 画直线
title(['5 steps Linear-SVM: \lambda = ' num2str(lambda)] )

@余凯_西二旗民工 【SVM之菜鸟实现】—5步SVM的更多相关文章

  1. 百度系统部 在 北京市海淀区西二旗首创空间大厦 招聘 Python-交付运维系统研发工程师 - 内推网(neitui.Me)

    百度系统部 在 北京市海淀区西二旗首创空间大厦 招聘 Python-交付运维系统研发工程师 - 内推网(neitui.Me) 汪肴肴 (wa**@baidu.com) 发布了 Python-交付运维系 ...

  2. 【决战西二旗】|理解Sort算法

    前言 前面两篇文章介绍了快速排序的基础知识和优化方向,今天来看一下STL中的sort算法的底层实现和代码技巧. 众所周知STL是借助于模板化来支撑数据结构和算法的通用化,通用化对于C++使用者来说已经 ...

  3. Github for Windows使用图文教程_西西软件资讯

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  4. 稳定排序nlogn之归并排序_一维,二维

    稳定排序nlogn之归并排序_一维,二维 稳定排序:排序时间稳定的排序 稳定排序包括:归并排序(nlogn),基数排序[设待排序列为n个记录,d个关键码,关键码的取值范围为radix,则进行链式基数排 ...

  5. SVM: 使用kernels(核函数)的整个SVM算法过程

    将所有的样本都选做landmarks 一种方法是将所有的training data都做为landmarks,这样就会有m个landmarks(m个trainnign data),这样features就 ...

  6. 坚果云如何使用二次验证码/谷歌身份验证器/两步验证/虚拟MFA?

    一般步骤:登陆后点邮箱名——安全设置——开通两步验证,用二次验证码微信小程序绑定即可 具体步骤见链接  坚果云如何使用二次验证码/谷歌身份验证器/两步验证/虚拟MFA? 二次验证码小程序于谷歌身份验证 ...

  7. 网易邮箱如何使用二次验证码/谷歌身份验证器/两步验证/虚拟MFA?

    登陆后点邮箱名——安全设置——开通两步验证,用二次验证码微信小程序绑定即可 具体步骤见链接  网易邮箱如何使用二次验证码/谷歌身份验证器/两步验证/虚拟MFA? 二次验证码小程序于谷歌身份验证器APP ...

  8. Day 29 _模块二 -hashlib_configparse_logging

    一.hashlib Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数 ...

  9. java画图程序_图片用字母画出来_源码发布_版本二

    在上一个版本:java画图程序_图片用字母画出来_源码发布 基础上,增加了图片同比例缩放,使得大像素图片可以很好地显示画在Notepad++中. 项目结构: 运行效果1: 原图:http://imag ...

随机推荐

  1. Objective-C 类,函数调用

    // // main.m // L02HelloObjC // // Created by JinXin on 15/11/25. // Copyright © 2015年 JinXin. All r ...

  2. Swift - 26 - 函数的基础写法

    //: Playground - noun: a place where people can play import UIKit // 无参无返回 // -> Void可以省略不写, 或者写成 ...

  3. Java基础--IO

    1,流的认识和分类 2,Java种处理流的IO类架构 3,字节流和字符流转换 4,NIO的概述 5,Java IO关闭资源 1,流的认识和分类 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的 ...

  4. Hibernate中HQL语句中list与iterate区别

    session.createQuery("from Classes").list() session.createQuery("from Classes").i ...

  5. Yii2的相关学习记录,初始化Yii2(二)

    前面已经将Yii2下载下来了,那我们就需要能实际的使用. 一.初始化,因为我都是在windows系统下,所以用cmd命令打开下载下来的Yii2的根目录.然后运行下面命令: init 会提示选择0为开发 ...

  6. centos 6.5 服务器安装 (LNMP ntfs文件支持 PHP-RPM CHROOT沙盒)

    centos 6.5 最小化安装 进入系统 手动开启网卡 #ifconfig eth0        //(默认会自动获得ip) 修改网站配置文件,默认开启 #cd /etc/sysconfig/ne ...

  7. jquery easy ui 学习 (3) window 限制在父类窗体内

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. [C]记录C语言中由于粗心遇到的奇葩错误.

    1. 正确代码: for( word = strtok( buf, whitespace); word != NULL; word = strtok( NULL, whitespace)) { ) 错 ...

  9. Netty笔记--ByteBuf释放

    参考资料:http://www.maljob.com/pages/newsDetail.html?id=394 参考资料:http://www.blogjava.net/liuguly/archive ...

  10. 使用Thumbnails对一个文件夹下的所有图片进行压缩处理

    public static void compressPic(){ try { Thumbnails.of(new File("/home/y/my_temp/ydbg-xy-pic&quo ...