MultiClass SVM尝试分类的问题

最近拿到一些数据, 是从Image中提取出来的训练数据和测试样本, 训练数据共有120W左右的训练样本, 1K维特征, 1K个类别. 4G的数据量分成了11个子文件按类别进行顺序存储(注: 不是随即采样存储, 这也给后面的训练带来了麻烦). 然后尝试进行Linear SVM训练, 或者说只是做一个测试, 因为直观上来讲如此多类别进行传统分类器效果肯定不好. 这里还是把测试中遇到的一些问题都记录下来, 做为后期尝试改进的一个起点吧:-). 然后就开始测试的第一步, 考虑如此高维特征, 那么把线性超平面\(f({\bf{x}}) = {\bf{w}} \cdot {\bf{x}} + b\)中的\(b\)去掉也不会对结果有大的影响, 而且带L2损失的目标函数在求取梯度和Hessian矩阵时会简化很多. \[\begin{array}{l} \nabla {\rm{ = }}\left[ {\begin{array}{*{20}{c}} {\frac{{df}}{{d{\bf{w}}}}}\\ {\frac{{df}}{{db}}} \end{array}} \right] = \left[ {\begin{array}{*{20}{c}} {2{\bf{w}} + 2C\sum\limits_{i … 继续阅读

共轭梯度法在SVM原问题参数优化中的应用

1. 共轭性 关于共轭先了解一下其基本性质, 共轭性的定义为: 设\(A \in {R^{n \times n}}\)是对称正定矩阵. 称\({{\bf{p}}_1},{{\bf{p}}_2}\)是 -共轭的, 是指 \({\bf{p}}_1^TA{{\bf{p}}_2}{\rm{ = }}0,\begin{array}{*{20}{c}} {} \end{array}{\bf{p}}_1^TA{{\bf{p}}_1} > 0,\begin{array}{*{20}{c}} {} \end{array}{\bf{p}}_2^TA{{\bf{p}}_2} > 0\) 那么它的性质有: 1). 设有\({{\bf{p}}_1},{{\bf{p}}_2},…,{{\bf{p}}_m}(m < n)\)是彼此共轭的\(n\)维向量, 即 \[{\bf{p}}_i^TA{{\bf{p}}_j}\left\{ {\begin{array}{*{20}{c}} { = 0,\begin{array}{*{20}{c}} {} \end{array}i \ne j,}\\ { > … 继续阅读

Win7下Python的安装与使用

Python是一种面向对象的, 动态的程序设计语言, 具有非常简洁而清晰的语法, 既可以用于快速开发程序脚本, 也可以用于开发大规模的软件, 特别适合于完成各种高层任务. 科学计算最基础的工具库, NumPy, SciPy. 二维绘图以及三维可视化库, matplotlib, , Chaco, Mayavi. 程序和界面开发, Traits, TraitsUI. 与Matlab相比, Python最大的优点是完全免费, 其次在文件管理, 界面设计和网络通信方面Python都有着丰富的扩展库. 科学计算用的Python集成软件包: Python(x,y), 版本号与它所使用的Python版本号相同. http://www.pythonxy.com (建议选择Full安装模式, 安装路径 c:\pythonxy). 打开网页时可能会跳转到http://code.google.com/p/pythonxy/ . 点击左侧栏Downloads – Show all 可以看到和Python相关的所有下载文件, 完整的安装包有400多M, 但是由于单文件限制在200M以内, 所以要下载最近的pythonxy版本(当前最新完全安装包为2.7.2.1,其他的大部分为更新包, 要注意) 找到Python(x,y)-2.7.2.1.zip … 继续阅读

牛顿法在SVM原问题参数优化中的应用

1. 牛顿法 牛顿法又称为二次函数法或二阶梯度法. 梯度法的缺点是有可能使搜索过程收敛很慢. 因此, 在某些情况下, 它并非是有效的迭代方法. 牛顿法在搜索方向上比梯度法有所改进, 这一方法不仅利用了准则函数在搜索点的梯度, 而且还利用了它的二次导数, 就是说利用了搜索点所能提供的更多信息, 使搜索方向能更好地指向最优点. 牛顿的基本思想是企图一步达到最优点, 即一步达到\(J({\bf{w}})\)的最小值. 仍然考虑\(J({\bf{w}})\)的二阶泰勒展开式 \[J({\bf{w}}){\rm{\dot = }}J({{\bf{w}}_k}) + \nabla {J^{\rm{T}}}({\bf{w}} - {{\bf{w}}_k}) + \frac{1}{2}{({\bf{w}} - {{\bf{w}}_k})^{\rm{T}}}D({\bf{w}} - {{\bf{w}}_k})\] 若令\({\bf{w}} = {{\bf{w}}_{k + 1}}\)得 \[J({{\bf{w}}_{k{\rm{ + }}1}}){\rm{\dot = }}J({{\bf{w}}_k}) + … 继续阅读

Linux 常用指令记录

1. 超级终端快捷键: ctrl+alt+t 2. 复制文件夹: cp -r dir1 dir2 3. user,group ,others都有读写和可执行权限: chmod 777 file, 如果不需要把所有权限都打开则使用: chmod 755 file 4. 跳到自己的home directory : cd ~ 5. win采用GBK, linux采用utf-8, linux平台下转码指令: iconv -f GBK -t UTF-8 file1 -o file2 (注:file1和file2不要重名) 6. gedit类似于win下的记事本, … 继续阅读

利用AppServ在本地WIN7系统上搭建WordPress博客站

1: AppServ工具包 对于使用wordpress的博主来说在配置本地服务器可以方便很多, 由于wordpress使用PHP, 在Linux系统下只需要一条指令就可以配置成功. 而对于windows系统来说需要安装很多软件, 例如: Apache, PHP, MySQL等. 而AppServ正是一款PHP 网页架站工具组合包, 作者将一些网络上免费的架站资源重新包装成单一的安装程序, 以方便初学者快速完成架站, AppServ所包含的软件有: Apache, Apache Monitor, PHP, MySQL, phpMyAdmin等. 为帮助大家能够迅速的在本地试用WordPress, 这个软件可以迅速搭建完整的底层环境, 从而实现对WordPress的快速试用. 安装步骤: 1). 到AppServ官网上下载最新版本http://www.appservnetwork.com/ . 我下载的是2.5.10, 集成的版本是: Apache 2.2.8, PHP 5.2.6, MySQL 5.0.51b, phpMyAdmin-2.10.3; 2). 和装普通软件一样, 双击打开安装包直接点Next; … 继续阅读

Jacobian矩阵和Hessian矩阵

1. Jacobian 在向量分析中, 雅可比矩阵是一阶偏导数以一定方式排列成的矩阵, 其行列式称为雅可比行列式. 还有, 在代数几何中, 代数曲线的雅可比量表示雅可比簇:伴随该曲线的一个代数群, 曲线可以嵌入其中. 它们全部都以数学家卡尔·雅可比(Carl Jacob, 1804年10月4日-1851年2月18日)命名;英文雅可比量”Jacobian”可以发音为[ja ˈko bi ən]或者[ʤə ˈko bi ən]. 雅可比矩阵 雅可比矩阵的重要性在于它体现了一个可微方程与给出点的最优线性逼近. 因此, 雅可比矩阵类似于多元函数的导数. 假设\(F\): \({R_n} \to {R_m}\)是一个从欧式n维空间转换到欧式m维空间的函数. 这个函数由m个实函数组成: y1(x1,…,xn), …, ym(x1,…,xn). 这些函数的偏导数(如果存在)可以组成一个m行n列的矩阵, 这就是所谓的雅可比矩阵: \begin{bmatrix} \frac{\partial y_1}{\partial x_1} & \cdots & \frac{\partial … 继续阅读

Reading Paper: Support Vector Machines in the primal

Author: Olivier Chapelle (France)   criteo labs Personal Website:  http://olivier.chapelle.cc/ • Yahoo! Research, Machine Learning group. (Oct.2006 – present) Senior Research Scientist Main projects are on machine learning applied to web search ranking and display advertising. • Max Planck Institute, Tubingen, … 继续阅读

LibSVM 3.12的源码分析Svm-train.c

共涉及3个文件: Svm-train.c, Svm.cpp, Svm.h. 建议使用Source Insight软件对这3个文件建立工程. 方便代码阅读. 下面从Svm-train.c文件中的main()函数切入. int main(int argc, char **argv) { char input_file_name[1024]; //训练样本文件名 char model_file_name[1024]; //输出模型的文件名 const char *error_msg; parse_command_line(argc, argv, input_file_name, model_file_name); //解析运行程序时,命令行输入的参数 read_problem(input_file_name); //读入训练样本,存入到struct svm_problem prob结构体中 error_msg = svm_check_parameter(&prob,&param); //检查训练样本数据格式是否正确 if(error_msg) { fprintf(stderr,“ERROR: %s\n”,error_msg); … 继续阅读

libsvm的使用

1: 了解libsvm工具包 LIBSVM是台湾大学林智仁(Lin Chih-Jen)教授等2001年开发设计的一个简单, 易于使用和快速有效的SVM模式识别与回归的软件包, 他不但提供了编译好的可在Windows系列系统的执行文件, 还提供了源代码, 方便改进, 修改以及在其它操作系统上应用; 该软件对SVM所涉及的参数调节相对比较少, 提供了很多的默认参数, 利用这些默认参数可以解决很多问题; 并提供了交互检验(Cross Validation)的功能. 该软件包可在http://www.csie.ntu.edu.tw/~cjlin/ 免费获得. 该软件可以解决C-SVM, ν-SVM, ε-SVR和ν-SVR等问题, 包括基于一对一算法的多类模式识别问题. 这套库可以从http://www.csie.ntu.edu.tw/~cjlin/libsvm/index.html免费获得, 目前已经发展到3.12版(2012.4.1更新).下载.tar.gz格式的版本, Windows下也可以直接解压, 主要有6个文件夹和一些源码文件. Java: 主要是应用于java平台; matlab: windows下64位matlab平台; python: 是用来参数优选的工具, 稍后介绍; svm-toy: 一个可视化的工具, 用来展示训练数据和分类界面, 里面是源码, 其编译后的程序在windows文件夹下; tools: 主要包含四个python文件, 用来数据集抽样(subset), 参数优选(grid), … 继续阅读