《机器学习实战》第六章
学习并实践六顶思考帽法 #生活技巧# #工作学习技巧# #创新思维训练#
支持向量机
SVM(Support Vector Machine)实际上是应用于二分类的一个分类器,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。这里不对整个过程进行推导,因为看了很多博客,有几篇大佬的博客写的非常清晰,这里只贴出代码和自己写的代码注释.
希尔伯特空间(Hilbert Space) 支持向量机通俗导论(理解SVM的三层境界) 机器学习经典算法详解及Python实现–基于SMO的SVM分类器 机器学习算法实践-SVM中的SMO算法代码实现
(1)简化版本的SMO算法,随机选取内层循环变量:
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : // # @Author : FC # @Site : 2655463370@qq.com # @license : BSD from numpy import * def loadDataSet(fileName): dataMat = [];labelMat = [] fr = open(fileName) for line in fr.readlines(): lineArr = line.strip().split('\t') dataMat.append([float(lineArr[0]),float(lineArr[1])]) labelMat.append(float(lineArr[2])) return dataMat,labelMat #随机选择i外的j def selectJrand(i,m): j=i while (j==i): j = int(random.uniform(0,m)) return j #对拉格朗日乘子alpha进行裁剪 def clipAlpha(aj,H,L): if aj>H: aj=H if L>aj: aj=L return aj # 简化版的smo算法 # INPUT:dataMatIn:输入训练数据,classLabels:分类标签,C:alpha阈值,即0<alpha<C,maxIter:最大迭代次数 # toler:容错率,因为Ei是函数g(x)对xi的预测值和真实输出值yi之差(见<统计学习方法>Page127) # OUTPUT:alhpas,b def smoSimple(dataMatIn,classLabels,C,toler,maxIter): dataMatrix = mat(dataMatIn);labelMat = mat(classLabels).transpose() b=0;m,n =shape(dataMatrix) alphas = mat(zeros((m,1))) iter = 0 while(iter<maxIter): alphaPairsChanged = 0 # for i in range(m): fXi = float(multiply(alphas,labelMat).T*\ (dataMatrix*dataMatrix[i,:].T))+b #f(x)<统计学习方法>Page124 Ei = fXi - float(labelMat[i]) #<统计学习方法>Page127 (7.105) # 分类误差比toler大,需要继续迭代优化 if ((labelMat[i]*Ei<-toler) and (alphas[i]<C)) or \ ((labelMat[i]*Ei>toler) and \ (alphas[i]>0)): j = selectJrand(i,m) #选择alpha_2 fXj = float(multiply(alphas,labelMat).T*\ (dataMatrix*dataMatrix[j,:].T))+b Ej = fXj-float(labelMat[j]) alphaIold = alphas[i].copy()#alpha_1_old alphaJold = alphas[j].copy()#alpha_2_old #对alpha_2_new进行裁剪的上下界 (L,H) if (labelMat[i] != labelMat[j]): L = max(0,alphas[j]-alphas[i]) H = min(C,C+alphas[j]-alphas[i]) else: L = max(0,alphas[j]+alphas[i]-C) H = min(C,alphas[j]+alphas[i]) if L==H:print("L==H");continue # <统计学习方法>Page128 eta = 2.0*dataMatrix[i,:]*dataMatrix[j,:].T-\ dataMatrix[i,:]*dataMatrix[i,:].T-\ dataMatrix[j,:]*dataMatrix[j,:].T
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970网址:《机器学习实战》第六章 https://www.yuejiaxmz.com/news/view/252147
相关内容
第六章学习策略要素.ppt第六章
机器学习实战之数回归,CART算法
机器学习算法应用场景实例六十则
第六章 环境改造(作业治疗技术专科教学).ppt
统编版语文六下第六单元 综合性学习:难忘小学生活
第六章 生活便利 章节目录
学机器学习可以做什么?
博弈论+机器学习=?
第二章人体人机学参数