支持向量机

机器学习第5章支持向量机

久未见 提交于 2020-03-28 18:48:05
参考:作者的 Jupyter Notebook Chapter 5 – Support Vector Machines 支持向量机(简称SVM)是一个功能强大并且全面的机器学习模型,它能够执行线性或非线性分类、回归,甚至是异常值检测任务。它是机器学习领域最受欢迎的模型之一,任何对机器学习感兴趣的人都应该在工具箱中配备一个。SVM特别适用于中小型复杂数据集的分类。 保存图片 from __future__ import division, print_function, unicode_literals import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt import os np.random.seed(42) mpl.rc('axes', labelsize=14) mpl.rc('xtick', labelsize=12) mpl.rc('ytick', labelsize=12) # Where to save the figures PROJECT_ROOT_DIR = "images" CHAPTER_ID = "traininglinearmodels" def save_fig(fig_id, tight_layout=True): path = os.path.join

机器学习之支持向量机SVM

久未见 提交于 2020-03-24 08:11:48
支持向量机(support vector machine,SVM)是一种二分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使其有别于感知机。支持向量机还包括核技巧,使它成为实质上的非线性分类器。支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划问题,也等价于正则化的合页损失函数的最小化问题。支持向量机的学习算法是求解凸二次规划的最优化算法。 1. 线性可分支持向量机与硬间隔最大化 1.1 线性可分支持向量机 考虑一个二分类问题,假设输入空间与特征空间为两个不同的空间。输入空间为欧式空间或离散集合,特征空间为欧式空间或希尔伯特空间。线性可分支持向量机、线性支持向量机假设这两个空间的元素一一对应。并将输入空间的输入映射为输出空间的特性向量。非线性支持向量机利用一个从输入空间到特征空间的非线性映射将输入映射为特性向量。所以,输入都由输入空间转换到特性空间,支持向量机的学习是在特征空间进行的。 假设给定一个特征空间上的训练数据集如下: $T=\left \{ \left ( x_{1},y_{1} \right ),\left ( x_{2},y_{2} \right ),...,\left ( x_{N},y_{N} \right ) \right \}$ 其中, , , ,$x_{i}$为第$i$个特征向量,也称为实例,$y_{i}$为$x_{i}

【机器学习】SVM支持向量机

二次信任 提交于 2020-03-04 04:27:06
from sklearn . datasets import make_circles from sklearn . svm import SVC import matplotlib . pyplot as plt from mpl_toolkits . mplot3d import Axes3D from sklearn . linear_model import LogisticRegression import numpy as np #创建样本点 ''' n_samples:创建多少啊个样本 noise :噪音 factor :方差 ''' X , y = make_circles ( noise = .1 , factor = .1 ) plt . scatter ( X [ : , 0 ] , X [ : , 1 ] , c = y ) plt . axis ( 'equal' ) #画轮廓图 x1_min , x1_max = X [ : , 0 ] . min ( ) - 1 , X [ : , 0 ] . max ( ) + 1 x2_min , x2_max = X [ : , 1 ] . min ( ) - 1 , X [ : , 1 ] . max ( ) + 1 x1 = np . linspace ( x1_min , x1_max , 50 ) x2

02-31 线性支持向量机

跟風遠走 提交于 2020-03-02 10:34:49
文章目录 线性支持向量机 线性支持向量机学习目标 线性支持向量机详解 硬件隔最大化和软间隔最大化 硬间隔最大化 软间隔最大化 线性支持向量机定义 软间隔最大化即目标函数的优化 支持向量 硬间隔最大化支持向量 软间隔最大化支持向量 合页损失函数 线性支持向量机流程 输入 输出 流程 线性支持向量机优缺点 优点 缺点 小结 线性支持向量机   在线性可分支持向量机中说到线性可分支持向量机有一个缺点是无法对异常点做处理,也正是因为这些异常点导致数据变得线性不可分或者会因为它的正好被判断为支持向量导致模型的泛化能力变差。 # 异常点导致数据线性不可分图例 import matplotlib . pyplot as plt from matplotlib . font_manager import FontProperties % matplotlib inline font = FontProperties ( fname = '/Library/Fonts/Heiti.ttc' ) x1 = [ 2 , 2.5 , 3.2 , 6.5 ] x11 = [ 1 , 4.5 , 5 , 6 ] x2 = [ 1.2 , 1.4 , 1.5 , 1.2 ] x22 = [ 1 , 1.5 , 1.3 , 1 ] plt . scatter ( x1 , x2 , s = 50 , color

多分类器:KNN,SVM,Softmax,2-Layer-Affine-Net(以图像分类为例子)

时光怂恿深爱的人放手 提交于 2020-03-01 09:21:59
多分类器:KNN,SVM,Softmax,2-Layer-Affine-Net(以图像分类为例子) 记录一下 CS 231N 计算机视觉这门课所提到的一些基础分类器,结合机器学习中学到的二元分类器算法,并以 CIFAR 10 作为训练集测试多分类器性能。 KNN K近邻分类 主要思路:寻找训练集到测试集中最相似的 k k k 个图像(距离由矩阵二范数、或是 F r o b i n u s Frobinus F r o b i n u s 范数表示),并由 k k k 个最优结果投票决定其标签。 算法流程: 训练集导入 X X X 与标签 y y y 测试集输入 x ^ \hat x x ^ ,找到 X X X 中与 x ^ \hat x x ^ 距离最近的 k k k 个图像: χ = { X ~ 1 , ⋯   , X ~ k } \chi = \{\tilde X_1,\cdots, \tilde X_k\} χ = { X ~ 1 ​ , ⋯ , X ~ k ​ } (一般用二范数距离) 对标签进行计数: η = { ( X ~ 1 , y ~ ( 1 ) ) , ⋯   , ( X ~ k , y ~ ( p ) ) } \eta = \{(\tilde X_1, \tilde y^{(1)}),\cdots, (\tilde X_k, \tilde y^{(p)})\}

支持向量机回归——vincen的学习笔记

你。 提交于 2020-02-29 00:01:54
1 前言 胡浩基老师的机器学习课程作业 与 S V M SVM S V M 推导类似,下面推导需要承认一个结论: 对于下述优化问题 min ⁡ ω f ( ω ) \min_{\omega}f(\omega) ω min ​ f ( ω ) s . t s.t s . t ① g i ( ω ) ⩽ 0 ( i = 1 , ⋯   , k ) ①g_i(\omega)\leqslant 0\quad (i = 1,\cdots,k) ① g i ​ ( ω ) ⩽ 0 ( i = 1 , ⋯ , k ) ② h i ( ω ) = 0 ( i = 1 , ⋯   , l ) ②h_i(\omega) = 0\quad (i = 1,\cdots,l) ② h i ​ ( ω ) = 0 ( i = 1 , ⋯ , l ) 若 f ( ω ) f(\omega) f ( ω ) 为凸函数,且 g i ( ω ) g_i(\omega) g i ​ ( ω ) , h j ( ω ) h_j(\omega) h j ​ ( ω ) 是关于 ω \omega ω 的线性函数( i = 1 , ⋯   , k ; j = 1 , ⋯   , l i = 1,\cdots,k;j = 1,\cdots,l i = 1 , ⋯ , k ; j = 1 , ⋯ , l ),原问题与其对偶问题等价

3. 支持向量机(SVM)拉格朗日对偶性(KKT)

点点圈 提交于 2020-02-28 19:15:03
1. 感知机原理(Perceptron) 2. 感知机(Perceptron)基本形式和对偶形式实现 3. 支持向量机(SVM)拉格朗日对偶性(KKT) 4. 支持向量机(SVM)原理 5. 支持向量机(SVM)软间隔 6. 支持向量机(SVM)核函数 1. 前言 在约束最优化问题中,常常利用拉格朗日对偶性将原始问题转化为对偶问题,通过求解对偶问题获得原始问题的解。该方法应用在许多统计学方法中,如最大熵模型、支持向量机。 2. 原始问题 假设 \(f(x),c_i(x),h_j(x)\) 是定义在 \(R^n\) 上的连续可微函数。考虑如下最优化问题 \[ \min_{x\in R^n}f(x)\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;(1) \] \[ s.t. \; c_i(x)\leq0, \; i=1,2,...,k \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\; (2) \] \[ \;\;\;\;\;\;\; h_j(x)=0, \; j=1,2,...,l \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\; (3) \] 称此约束最优化问题为 原始最优化问题或原始问题 。

支持向量机SVM

淺唱寂寞╮ 提交于 2020-02-25 15:58:45
1.概念 支持向量机(Support Vector Machine,SVM)是Corinna Cortes和Vapnik等于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中。 支持向量机,其含义是通过支持向量运算的分类器。其中“机”的意思是机器,可以理解为分类器。 机器学习的一般框架 训练集-》提取特征向量-》结合一定算法-》得到结果 2.SVM 如下几种核函数: 3. 使用 import numpy as np import matplotlib.pyplot as plt from sklearn import svm from sklearn.datasets import make_blobs #创建50个数据点,让他们分为两类 X,y=make_blobs(n_samples=50,centers=2,random_state=6) #创建一个线性内核的支持向量机模型 clf = svm.SVC(kernel='rbf',C=100) clf.fit(X,y) plt.scatter(X[:,0],X[:,1],c=y,s =30,cmap=plt.cm.Paired) ax = plt.gca() xlim= ax.get_xlim() ylim= ax.get_ylim()

机器学习笔记之支持向量机

北战南征 提交于 2020-02-12 21:12:59
机器学习笔记之支持向量机 解决什么问题 支持向量机解决的是二分类及多分类问题,由于在学之前学习了logistic回归,其实可以看到两者有着非常相似的地方 原理与思考 原理方面这一个帖子说的很详细了,不再赘述 原理简述 从图中可以看到,支持向量机的点乘操作,实际上就是让那个超平面与两个类的距离最大,因为你点乘下来是投影的和,而之后又带入代价函数。其实它的代价函数和logistic的代价函数非常像,为了让代价函数最小,我们选择的超平面也自然成为了那个最大间隔的分开向量。 但是在同时,我们有一个类似于正则化系数的C,这个C就是起到一个调节的作用 但是在这里,需要介绍一下对核函数的理解 如果我们不用核函数,也就相当于核函数默认为线性的,那么我们就相当于直接使用这个点乘来作为带入代价函数的输入。核函数的原理就是一个,当前点距离标志的相似程度,一般用距离为自变量,比如高斯核函数 我们的核l,向量为[3,5],那么在评价一个输入的向量时,我们带入函数f1,再将结果带入代价函数。 比如在这里,通过计算,落在红线以内的点,因为距离核l1 l2更近,我们将它们归为一类。 别忘了核函数的意义:x与核的相似程度 核函数的选择,参考: 例子与总结 import numpy as np import pylab as pl from sklearn import svm from sklearn import

机器学习(Machine Learning)- 吴恩达(Andrew Ng) 学习笔记(十二)

吃可爱长大的小学妹 提交于 2020-02-11 00:27:42
Support Vector Machines 支持向量机 支持向量机是监督学习算法的一种,在学习复杂的非线性方程时提供了一种更为清晰、更为强大的学习方式。 Optimization objective Alternative view of logistic regression 先介绍一下逻辑回归 \(h_\theta(x) = \frac{1}{1 + e^{-\theta^Tx}}\) If \(y = 1\) , we want \(h_\theta(x) \approx 1\) , \(\theta^Tx >> 0\) If \(y = 0\) , we want \(h_\theta(x) \approx 0\) , \(\theta^Tx << 0\) Cost of example: \(-(y\ logh_\theta(x) + (1-y)log(1-h_\theta(x)))\) = \(-ylog\frac{1}{1+e^{-\theta^Tx}} - (1-y)log(1-\frac{1}{1+e^{-\theta^Tx}}))\) 每个样本都对总的代价函数有影响,下图为具体关系。 扩展: 从代价函数开始修改,实现支持向量机。 如图所示,在左边的图中取 \(z = 1\) 点,画出要用的代价函数(看起来和逻辑回归的曲线有点相似,但它的是直线)