【机器学习】tensorflow: GPU求解带核函数的SVM二分类支持向量机
来源:互联网 发布:iphone手机助手软件 编辑:程序博客网 时间:2024/06/06 04:48
SVM本身是一个最优化问题,因此理所当然可以用简单的最优化方法来求解,比如SGD。2007年pegasos就发表了一篇文章讲述简单的求解SVM最优化的问题。其求解形式简单,但是并没有解决核函数计算量巨大的问题。这里给出了一个tensorflow的带核函数的SVM的解法,使用GPU加速,并且支持在线学习。
pegasos给出的优化公式如下:
我用rbf核函数来试验一下。其中数据以半径为10的圆圈分割成两个部分。tensorflow代码如下:
sigma = 0.5kkx = np.square(np.tile(x[:,0].T,[x.shape[0],1])-np.tile(x[:,0],[1,x.shape[0]]))#print(kkx)kkx += np.square(np.tile(x[:,1].T,[x.shape[0],1])-np.tile(x[:,1],[1,x.shape[0]]))kkx = np.sqrt(kkx)kkx = np.exp(-sigma * kkx )lam = 1./2.batch = x.shape[0]with tf.device('/gpu:0'):#使用GPU计算 alpha = tf.Variable(tf.random_uniform([batch,1],-1.0,1.0)) alpha = tf.maximum(0.,alpha) KX = tf.placeholder("float", shape=[batch,batch]) y = tf.placeholder("float", shape=[batch,1]) loss = lam*tf.reduce_sum(tf.matmul(alpha,tf.transpose(alpha))*KX) tmp = tf.matmul(KX, alpha) tmp = y*tmp tmp = 1. - tmp tmp = tf.maximum(0.,tmp) tmp = 1./batch*tf.reduce_sum(tmp) loss += tmp optimizer = tf.train.GradientDescentOptimizer(0.0002) train_op = optimizer.minimize(loss)
为了简化,KX直接用numpy计算好
resA = sess.run(alpha)predict=np.multiply(resA,x[:,2])#print(predict.shape)predict=np.sum(np.multiply(predict,kkx),axis=0)predict = predict.Tpredict=np.tile(predict,[1,3])#print(predict>0.0)ax = np.array(x)predictSet1=ax[predict>0.0].reshape([-1,3])predictSet2=ax[predict<0.0].reshape([-1,3])fig = plt.figure()ax = fig.add_subplot(211)ax.scatter(x=data1[:,0],y=data1[:,1])ax.scatter(x=data2[:,0],y=data2[:,1])ax = fig.add_subplot(212)ax.scatter(x=predictSet1[:,0],y=predictSet1[:,1])ax.scatter(x=predictSet2[:,0],y=predictSet2[:,1])fig.show()
得到图像如下:
上图是原始数据集,下图是预测集。可以看出来,tensorflow能够优化求解svm,比较万金油。
2 1
- 【机器学习】tensorflow: GPU求解带核函数的SVM二分类支持向量机
- 【机器学习】推导支持向量机SVM二分类
- 【机器学习】求解过程快速又简单的最小二乘支持向量机LSSVM二分类
- 机器学习分类篇-支持向量机SVM上
- 机器学习之支持向量机SVM Support Vector Machine (二) 非线性SVM模型与核函数
- 机器学习-支持向量机SVM学习笔记二
- 学习SVM(二) 如何理解支持向量机的最大分类间隔
- 机器学习 支持向量机(SVM)
- Stanford机器学习--- 支持向量机SVM
- 机器学习之支持向量机(svm)
- 【机器学习】支持向量机SVM
- 机器学习:支持向量机(SVM)
- 机器学习---支持向量机(SVM)
- 机器学习--SVM支持向量机
- 机器学习之支持向量机(SVM)
- 机器学习:支持向量机(SVM)
- Stanford机器学习---支持向量机SVM
- 机器学习之支持向量机SVM
- 01类、成员函数、对象
- Python开发-数据类型
- 安装Dubbo注册中心(Zookeeper-3.4.6)单个节点
- R语言聚类算法之期望最大化聚类(Expectation Maximization Algorithm)
- javascript基础(定时调用及其练习)(四十一)
- 【机器学习】tensorflow: GPU求解带核函数的SVM二分类支持向量机
- 58到家数据库30条军规解读
- Linux安装ElasticSearch
- java通信——单客户端与服务端通信
- 分析综合时出现Warning (12241): 1 hierarchies have connectivity warnings - see the Connectivity Checks repor
- DMG文件介绍及建立
- android 百度地图获取左上角和右下角的坐标
- gephi打开提示can't find java1.6 or higer
- html和css学习小结