Stanford ML - Support Vector Machines 支持向量机
来源:互联网 发布:斗鱼软件 编辑:程序博客网 时间:2024/05/14 07:17
SVM,感觉很高大上的一个名词,最开始听到的时候还以为是Space Vector Model呢,碰巧那几天看点信息检索的东西;原来是Support Vector Machines。从逻辑回归来推导得出SVM的代价方程为:
其中cost0,cost1如下。可以看出,当满足条件(y = 1 && theta' * x >>0 或者y = 0 && theta' * x << 0)时,SVM的代价方程取值最小 - 只有后面theta那一项。这里C是1/lambda。
SVM是最大间隙分类器,也就是它的决策边界到不同分类的元素距离尽可能大。数学推导就不管了:)
我们用近似性来做特征 - 选定一些基准,计算输入元素与这些基准的近似性。近似性有很多种算法(核),比较常用的是高斯核,如下。当两个元素完全一样的时候,特征值为1,相差越大特征值越小,最终接近于0。
怎么选择基准呢?可以用训练集中所有数据来做基准,这样特征数量n就等于训练集中数据数量m。计算出了theta和特征向量f之后,根据theata' * f 的值可以判断分类。
参数C和sigma对特征方程有很大影响,C大,sigma^2小,会lower bias, higher variance;C小,sigma^2大,会higher bias, lower variance。在应用SVM的时候需要合理的选择这两个参数。现在有很多成熟的SVM软件包,我们可以直接拿来用,只要指定C和相应的核函数即可。常用的是高斯核,如果选用线性核则退化为逻辑回归。用高斯核的时候要注意对不同的特征做均值归一化处理。
什么时候用逻辑回归,什么时候用SVM呢?直接贴图吧。看来神经网络才是真正的高大上啊,怪不得项目里貌似用了不少神经网络的算法。
作业里面选择C和sigma的过程,就是在训练集上训练model,在验证集上预测并计算误差,选择误差最小时的参数。
C_set = [0.01 0.03 0.1 0.3 1 3 10 30];sigma_set = [0.01 0.03 0.1 0.3 1 3 10 30];min_error = intmax;for i = 1:size(C_set, 2) for j = 1:size(sigma_set, 2) model= svmTrain(X, y, C_set(i), @(x1, x2) gaussianKernel(x1, x2, sigma_set(j))); predictions = svmPredict(model, Xval); pred_error = mean(double(predictions ~= yval)); if (pred_error < min_error) min_error = pred_error; C = C_set(i); sigma = sigma_set(j); endend
- Stanford ML - Support Vector Machines 支持向量机
- Stanford ML - Lecture 8 - Support Vector Machines
- SVM(Support Vector Machines):支持向量机
- 支持向量机 Support Vector Machines
- 支持向量机(support vector machines, SVM)
- 支持向量机(Support Vector machines)
- 支持向量机 Support Vector Machines (SVM)
- 支持向量机support vector machines
- Stanford Machine Learning: (5). Support Vector Machines(SVM支持向量机)
- 支持向量机(Support Vector Machines SVM)基础学习
- Twin Support Vector Machines(孪生支持向量机)
- (五)Support Vector Machines[支持向量机]
- scikit-learn学习1.4. 支持向量机(Support Vector Machines)
- 机器学习之支持向量机: Support Vector Machines (SVM)
- 支持向量机(support vector machines)-SVM
- 支持向量机SVM(Support Vector Machines)介绍
- 支持向量机(Support Vector Machines, SVM)讲解
- Stanford ex6:Support Vector Machines
- 捏合操作.
- Ubuntu+FireFox+GoAgent
- Java计算时间差(两个时间相减)
- 自定义控件(子类化)和系统控件一起布局出现问题的解决方法
- 两种验证码
- Stanford ML - Support Vector Machines 支持向量机
- box2d关于投影预瞄准的算法推演过程
- COM线程模型 - MTA接口
- 什么是CM11丨CM10.1是什么丨CM官网
- 日历(NSCalendar)与日期组建(NSDateComponents)
- Log4J日志输出格式说明
- 用C语言实现函数void * memmove(void *dest,const void *src,size_t n)
- cocos2dx-3.0 中的物理引擎Box2D使用(一)
- C#中的Static关键字