当前位置: 首页 > news >正文

大连模版网站厚街东莞网站推广

大连模版网站,厚街东莞网站推广,淄博桓台网站建设方案,免费传媒原文#xff1a; http://blog.csdn.net/abcjennifer/article/details/7849812 本栏目#xff08;Machine learning#xff09;包括单参数的线性回归、多参数的线性回归、Octave Tutorial、Logistic Regression、Regularization、神经网络、机器学习系统设计、SVM#xff0…原文 http://blog.csdn.net/abcjennifer/article/details/7849812 本栏目Machine learning包括单参数的线性回归、多参数的线性回归、Octave Tutorial、Logistic Regression、Regularization、神经网络、机器学习系统设计、SVMSupport Vector Machines 支持向量机、聚类、降维、异常检测、大规模机器学习等章节。所有内容均来自Standford公开课machine learning中Andrew老师的讲解。https://class.coursera.org/ml/class/index 第八讲. 支持向量机进行机器学习——Support Vector Machine 一、SVM 的 Cost Function 二、SVM —— Large Margin Classifier 三、数学角度解析为什么SVM 能形成 Large Margin Classifier选看 四、SVM Kernel 1 —— Gaussian Kernel 五、SVM 中 Gaussian Kernel 的使用 (六)、SVM的使用与选择 本章内容为支持向量机Support Vector MachineSVM的导论性讲解在一般机器学习模型的理解上引入SVM的概念。原先很多人也包括我自己觉得SVM是个很神奇的概念读完本文你会觉得其实只是拥有不同的目标函数 不同的模型而已Machine Learning的本质还没有变呵呵~ 完成本文花了我很长时间为了搞懂后面还有程序方便和参考网站大家实验希望对大家有所帮助。 一、SVM 的 Cost Function 前面的几章中我们分别就linear regression、logistic regression以及神经网络的cost function进行了讲解。这里我们通过logistic regression的cost function引入SVM。 首先回忆一下logistic regression的模型 还是原先的假设suppose我们只有两个类y0和y1。那么根据上图h(x)的图形我们可以看出 当y1时希望h(x)≈1即z0 当y0时希望h(x)≈0即z0 那么逻辑回归的cost function公式如下 cost function我们之前已经讲过了这里不予赘述。现在呢我们来看看下面的两幅图这两幅图中灰色的curve是logistic regression的cost function分别取y1和y0的情况 y1时随着z↑h(x)逐渐逼近1cost逐渐减小。 y0时随着z↓h(x)逐渐逼近0cost逐渐减小。 这正是图中灰色曲线所示的曲线。 ok现在我们来看看SVM中cost function的定义。请看下图中玫瑰色的曲线这就是我们希望得到的cost function曲线和logistic regression的cost function非常相近但是分为两部分下面呢我们将对这个cost function进行详细讲解。 logistic regression的cost function: 现在呢我们给出SVM的目标函数cost function定义 该式中cost0和cost1分别对应y0和y1时的目标函数定义最后一项regularization项和logistic regression中的类似。感觉系数少了什么是的其实它们的最后一项本来是一样的但是可以通过线性变换化简得到SVM的归一化项。 二、SVM —— Large Margin Classifier 本节给出一个简单的结论——SVM是一个large margin classifier。什么是margin呢下面我们做详细讲解其理论证明将在下一节中给出。 在引入margin之前我们回顾一下上一节中的SVM cost function curve如下图所示分别是y取1和0时的情况。先给出一个结论常数C取一个很大的值比较好比如100000这是为什么呢 我们来看哈C很大就要求[]中的那部分很小令[]中的那部分表示为W不如令其为0这时来分析里面的式子 ※需求1 y1时W只有前一项令W0就要求Cost1(θTx)0由右图可知这要求θTx1 y0时W只有后一项令W0就要求Cost0(θTx)0由右图可知这要求θTx-1 由以上说明可知对C的取值应该在分类是否犯错和margin的大小上做一个平衡。那么C取较大的值会带来什么效果呢就是我们开头说的结论——SVM是一个large margin classifier。那么什么是margin在第三章中我们已经讲过了decision boundary它是能够将所有数据点进行很好地分类的h(x)边界。如下图所示我们可以把绿线、粉线、蓝线或者黑线中的任意一条线当做decision boundary但是哪一条最好呢这里我们可以看出绿色、粉色、蓝色这三类boundary离数据非常近i.e.我们再加进去几个数据点很有可能这个boundary就能很好的进行分类了而黑色的decision boundary距离两个类都相对较远我们希望获得的就是这样的一个decision boundary。margin呢就是将该boundary进行平移所得到的两条蓝线的距离如图中所指。 相对比 C小decision boundary则呈现为黑线若C很大就呈现粉线 这个结论大家可以记住也可以进行数学上的分析下一节中我们将从数学角度分析为什么SVM选用大valeu的C会形成一个large margin classifier。 再给出一个数学上对geometry margin的说明 任意一个点x到分类平面的距离γ的表示如上图所示其中y是{1-1}表示分类结果x0是分类面上距x最短的点分类平面的方程为wxb0,将x0带入该方程就有上面的结果了。对于一个数据集xmargin就是这个数据及所有点的margin中离hyperplane最近的距离SVM的目的就是找到最大margin的hyperplane。 练习 三、数学角度解析为什么SVM 能形成 Large Margin Classifier选看 这一节主要为了证明上一节中的结论为什么SVM是Large Margin Classification能形成很好的decision boundary如果仅仅处于应用角度考虑的朋友可以略过此节。 首先我们来看两个向量内积的表现形式。假设向量uv均为二维向量我们知道uv的内积uTvu1v1u2v2。表现在坐标上呢就如下图左边所示 首先将v投影至u向量记其长度为p有正负与u同向为正反相为负标量则两向量的内积uTv ||u|| · ||v|| · cosθ ||u|| · p  u1v1u2v2。 这样一来我们来看SVM的cost function 由于将C设的很大cost function只剩下后面的那项。采取简化形式意在说明问题即可设θ00只剩下θ1和θ2 则cost function J(θ)1/2×||θ||^2 而根据上面的推导有θTxp·||θ||其中p是x在θ上的投影则 ※需求2 y1时W只有前一项令W0就要求Cost1(θTx)0由右图可知这要求p·||θ||1 y0时W只有后一项令W0就要求Cost0(θTx)0由右图可知这要求p·||θ||-1 如下图所示 我们集中精力看为什么SVM的decision boundary有large margin这里稍微有点儿复杂好好看哈 对于一个给定数据集依旧用X表示正样本O表示负样本绿色的线表示decision boundary蓝色的线表示θ向量的方向玫瑰色表示数据在θ上的投影。 我们已知boundary的角度和θ向量呈的是90°角自己画一下就知道了。 先看这个图对于这样一个decision boundary没有large marginθ与其呈90°角如图所示这样我们可以画出数据集X和O在θ上的投影如图所示非常小如果想满足[需求2]中说的 对正样本p·||θ||1 对负样本p·||θ||-1 就需要令||θ||很大这就和cost function的愿望min 1/2×||θ||^2相违背了因此SVM的不出来这个图中所示的decision boundary结果。 那么再来看下面这个图 它选取了上一节中我们定义的“比较好的”decision boundary两边的margin都比较大。看一下两边数据到θ的投影都比较大这样就可以使||θ||相对较小满足SVM的cost function。因此按照SVM的cost function进行求解optimization得出的decision boundary一定是有large margin的。说明白了吧 练习 分析由图中我们可以看出decision boundary的最优解是yx1这时所有数据集中的数据到θ上的投影最小值为2换言之想满足 对正样本p·||θ||1 对负样本p·||θ||-1 只需要 对正样本2·||θ||1 对负样本-2·||θ||-1 因此需要||θ||1/2本着令cost function最小的原则我们可知||θ||1/2. 四、SVM Kernel 1 —— Gaussian Kernel 对于一个非线性Decision boundary我们之前利用多项式拟合的方法进行预测 f1, f2, ... fn为提取出来的features。定义预测方程hθ(x)为多项式的sigmod函数值hθ(x)g(θ0f0θ1f1…θnfn)其中fn为x的幂次项组合如下图当θ0f0θ1f1…θnfn0时hθ(x)1else hθ(x)0 那么除了将fn定义为x的幂次项组合还有没有其他方法表示 f 呢本节就引入了Kernel核的概念。即用核函数表示f。 对于上图的非线性拟合我们通过计算输入原始向量与landmark之间的相似度来计算核值f 发现相似度计算公式很像正态分布高斯分布对不对是的这就是高斯核函数。由下图可以看出 x和l越相似f越接近于1 x与l相差越远f越接近于0 下图中的横纵坐标为x的两个维度值高为fnew feature。制高点为xl的情况此时f1。 随着x与l的远离f逐渐下降趋近于0. 下面我们来看SVM核分类预测的结果 引入核函数后代数上的区别在于f变了原来f是x1/x1^2/...即xi幂次项乘积 引入核函数后几何上来说可以更直观的表示是否应该归为该类了如下图 比如我们想将坐标上的所有数据点分为两类如下图中红色圈内希望预测为y1圈外希望预测为y0。通过训练数据集呢我们得到了一组θ值(θ0,θ1,θ2,θ3)(-0.5,1,1,0)以及三个点(L1L2L3)具体怎么训练而成的大家先不要过分纠结后面会讲对于每个test数据集中的点我们首先计算它到L1L2L3)各自的相似度也就是核函数的值f1f2f3然后带入多项式θ0f0θ1f1…θnfn计算当它0时预测结果为类内点正样本y1else预测为负样本y0 五、SVM 中 Gaussian Kernel 的使用 §5.1.    landmark的选取和参数向量θ的求解 上一节中我们遗留了两个问题一个是一些L点的选取一个是向量θ计算。这一节我们就来讲讲这两个问题。 首先来看L的选取。上一节中一提到Gaussian kernel fi 的计算 这里呢我们选择m个训练数据并取这m个训练数据为m个landmarkL点不考虑证样本还是负样本如下图所示 PS那么在这m个训练数据中每一个训练数据x(i)所得的特征向量核函数f中总有一维向量的值为1因为这里x(i)l(i) 于是每个特征向量f有m1维m维训练数据[f1,f2,...,fm]附加一维f01 在SVM的训练中将Gaussian Kernel带入cost function,通过最小化该函数就可与得到参数θ并根据该参数θ进行预测 若θTf0predicty1; else predict y0; 如下图所示这里与之前讲过的cost function的区别在于用kernel f 代替了x。 §5.2.    landmark的选取和参数向量θ的求解 好了至此Landmark点和θ的求取都解决了还有一个问题就是cost function中两个参数的确定C和σ2。 对于C由于C1/λ所以 C大λ小overfit产生low biashigh variance C小λ大underfit产生high biaslow variance 详细原因请参考第六章中关于bias和variance的讲解。 对于方差σ2和正态分布中的定义一样 σ2大x-f 图像较为扁平; σ2小x-f 图像较为窄尖; 关于C和σ2的选取我们来做个练习 解析过拟合说明应该适当加强cost function中的正则项所起的作用因此应增大λ即减小C同时过拟合是的只有一小部分范围内的x享有较大f或者说x的覆盖面太窄了所以应当增大σ2。 六、SVM 的 使用与选择 本节中主要介绍SVM在matlab中用libsvm中的应用给大家一个用SVM进行实践的平台。 前面几节中我们已知用SVM进行机器学习的过程就是一个optimize参数θ的过程这里呢我们首先介绍一个 Chih-Chung Chang 和 Chih-Jen Lin 做的 matlab/C/Ruby/Python/Java...中通用的机器学习toollibsvm其基本讲解和测试我以前讲过在这里算是入门篇并不详细这里呢我们将结合本章课程近一步学习并用matlab实现。 首先大家来看看想要进行SVM学习有哪两类 一种是No kernellinear kernelhθ(x)g(θ0x0θ1x1…θnxn)predict y1 if θTx0; 另一种是使用kernel f比如Gaussian Kernelhθ(x)g(θ0f0θ1f1…θnfn)这里需要选择方差参数σ2 如下图所示 需要注意的是不管用那种方法都需要在ML之前进行Normalization归一化 当然除了Gaussian kernel,我们还有很多其他的kernel可以用比如polynomial kernel等如下图所示但andrew表示他本人不会经常去用或者几乎不用以下more esoteric中的核一个原因是其他的核不一定起作用。我们讲一下polynomial kernel: polynomial 核形如 Kxl (xTlc)d也用来表示两个object的相似度 首先给大家引入一个数据集在该数据集中我们可以进行初步的libsvm训练和预测如这篇文章中所说这个也是最基本的no kernel(linear kernel)。 然后呢给大家一个reference这是libsvm中traing基本的语法 1 Usage: model svmtrain(training_label_vector, training_instance_matrix, libsvm_options);2 libsvm_options:3 -s svm_type : set type of SVM (default 0)4 0 -- C-SVC5 1 -- nu-SVC6 2 -- one-class SVM7 3 -- epsilon-SVR8 4 -- nu-SVR9 -t kernel_type : set type of kernel function (default 2) 10 0 -- linear: u*v 11 1 -- polynomial: (gamma*u*v coef0)^degree 12 2 -- radial basis function: exp(-gamma*|u-v|^2) 13 3 -- sigmoid: tanh(gamma*u*v coef0) 14 4 -- precomputed kernel (kernel values in training_instance_matrix) 15 -d degree : set degree in kernel function (default 3) 16 -g gamma : set gamma in kernel function (default 1/num_features) 17 -r coef0 : set coef0 in kernel function (default 0) 18 -c cost : set the parameter C of C-SVC, epsilon-SVR, and nu-SVR (default 1) 19 -n nu : set the parameter nu of nu-SVC, one-class SVM, and nu-SVR (default 0.5) 20 -p epsilon : set the epsilon in loss function of epsilon-SVR (default 0.1) 21 -m cachesize : set cache memory size in MB (default 100) 22 -e epsilon : set tolerance of termination criterion (default 0.001) 23 -h shrinking : whether to use the shrinking heuristics, 0 or 1 (default 1) 24 -b probability_estimates : whether to train a SVC or SVR model for probability estimates, 0 or 1 (default 0) 25 -wi weight : set the parameter C of class i to weight*C, for C-SVC (default 1) 26 -v n : n-fold cross validation mode 27 -q : quiet mode (no outputs) 下面给大家一个例子 1 function [ output_args ] Nonlinear_SVM( input_args )2 %NONLINEAR_SVM Summary of this function goes here3 % Detailed explanation goes here4 5 %generate data16 rsqrt(rand(100,1));%generate 100 random radius7 t2*pi*rand(100,1);%generate 100 random angles, in range [0,2*pi]8 data1[r.*cos(t),r.*sin(t)];%points9 10 %generate data2 11 r2sqrt(3*rand(100,1)1);%generate 100 random radius 12 t22*pi*rand(100,1);%generate 100 random angles, in range [0,2*pi] 13 data2[r2.*cos(t2),r2.*sin(t2)];%points 14 15 %plot datas 16 plot(data1(:,1),data1(:,2),r.) 17 hold on 18 plot(data2(:,1),data2(:,2),b.) 19 ezpolar((x)1);%在极坐标下画ρ1θ∈[0,2π]的图像即x^2y^21 20 ezpolar((x)2); 21 axis equal %make x and y axis with equal scalar 22 hold off 23 24 %build a vector for classification 25 data[data1;data2]; %merge the two dataset into one 26 datalabelones(200,1); %label for the data 27 datalabel(1:100)-1; 28 29 %train with Non-linear SVM classifier use Gaussian Kernel 30 31 modelsvmtrain(datalabel,data,-c 100 -g 4); 32 33 end 该例中我们分别生成了100个正样本和100个负样本如下图所示因为kernel type default2即Gaussian kernel通过svmtrain(datalabeldata-c 100 -g 4)我们设置了第五节中奖的参数——Cc和 2σ2g分别为100和4。 运行结果 1 Nonlinear_SVM 2 * 3 optimization finished, #iter 149 4 nu 0.015538 5 obj -155.369263, rho 0.634344 6 nSV 33, nBSV 0 7 Total nSV 33 最后我们比较一下logistic regresion和 SVM 用n表示feature个数m表示training exampl个数。 ①当nm如n10000m10~1000时建议用logistic regression, 或者linear kernel的SVM ②如果n小m不大不小如n1~1000m10~10000建议用Gaussian Kernel的SVM ③如果n很小m很大如n1~1000m50000建议增加更多的feature并使用logistic regression, 或者linear kernel的SVM 原因①模型简单即可解决③如果还用Gaussian kernel会导致很慢所以还选择logistic regression或者linear kernel 神经网络可以解决以上任何问题但是速度是一个很大的问题。 详见下图 test 我们可以把所有数据分为testset和training set两部分进行训练example 1 load heart_scale2 [N D] size(heart_scale_inst);3 4 % Determine the train and test index,select top 200 as training data5 % else as test data6 trainIndex zeros(N,1); trainIndex(1:200) 1;7 testIndex zeros(N,1); testIndex(201:N) 1;8 trainData heart_scale_inst(trainIndex1,:);9 trainLabel heart_scale_label(trainIndex1,:); 10 testData heart_scale_inst(testIndex1,:); 11 testLabel heart_scale_label(testIndex1,:); 12 13 % Train the SVM 14 model svmtrain(trainLabel, trainData, -c 1 -g 0.07 -b 1); 15 % Use the SVM model to classify the data 16 [predict_label, accuracy, prob_values] svmpredict(testLabel, testData, model, -b 1); % run the SVM model on the test data 1 optimization finished, #iter 872 nu 0.4263693 obj -56.026822, rho -0.0511284 nSV 77, nBSV 625 Total nSV 776 *7 optimization finished, #iter 998 nu 0.4864939 obj -64.811759, rho 0.328505 10 nSV 87, nBSV 68 11 Total nSV 87 12 * 13 optimization finished, #iter 101 14 nu 0.490332 15 obj -64.930603, rho 0.424679 16 nSV 87, nBSV 67 17 Total nSV 87 18 * 19 optimization finished, #iter 121 20 nu 0.483649 21 obj -64.046644, rho 0.423762 22 nSV 87, nBSV 65 23 Total nSV 87 24 * 25 optimization finished, #iter 93 26 nu 0.470980 27 obj -63.270339, rho 0.458209 28 nSV 83, nBSV 67 29 Total nSV 83 30 * 31 optimization finished, #iter 137 32 nu 0.457422 33 obj -76.730867, rho 0.435233 34 nSV 104, nBSV 81 35 Total nSV 104 36 Accuracy 81.4286% (57/70) (classification) 37 这里只是一部分我做过的实验希望有朋友能够有更完善的程序或者更好的资料推荐~谢谢 小结 本章讲述了Support Vector Machine的基本原理、SVM与linear regression、logistic regression、神经网络的关系和matlab中通过Libsvm库对数据进行训练希望对大家有所帮助。
http://www.w-s-a.com/news/531123/

相关文章:

  • 网站开发学哪种语言网站编辑器失效
  • WordPress插件提示信息江阴网站优化
  • 网站开发用的软件如何做网站内容管理
  • 扬州网站建设公司网站推广是什么岗位
  • 双线网站管理咨询公司是做什么
  • asia域名的网站贵州光利达建设工程有限公司局网站
  • 梅州南站济南做网络安全的公司
  • 网站源代码 phpseo营销推广费用
  • 南京专业制作网站深圳整装装修公司排名
  • 网站制作在哪里比较好网页设计的要点有哪些
  • 自己做网站原始代码高端品牌服装
  • 九度企业网站推广软件龙泉市建设局网站
  • 做个企业网网站怎么做专业3合1网站建设公司
  • 龙岩网站建设teams熊掌号公司网站的实例
  • 电商模板网站免费省级精品课程网站建设
  • 网站建设的规划书桂林生活最新网
  • 广东省建设工程执业中心网站wordpress的分类目录和标签
  • 甘肃省两学一做专题网站广东外发加工网
  • 用python导入wordpress公司网络优化方案
  • 效益成本原则网站建设wordpress 上传rar
  • 大连网站制作 连城传媒渠道网络公司官网
  • 电影天堂网站用什么程序做的wordpress 添加链接地址
  • 购买空间网站哪个好重庆英文网站建设
  • 建设网站需要注意什么问题设计网页通常使用什么语言
  • 彩票网站建设要多少钱西安英文网站建设
  • 静态班级网站印象云笔记 wordpress
  • 网站表单及商品列表详情模板永川网站制作联系电话
  • 网站建设与维护难不难网络服务机构的网站
  • 用三权重的网站做友链有好处没企业年金怎么查询
  • 工行网站跟建设网站区别wordpress加入地图