首页 > 编程知识 正文

高斯核函数的参数,svm高斯核函数参数选择

时间:2023-05-05 03:56:14 阅读:181988 作者:1575

转载自博客公园: https://www.cn blogs.com/vol Cao/p/9465214.html SVM (核函数,健忘前辈的核函数RBF )一、核函数(Kernel Function )1)

K(x, y):表示样本x和y,添加多项式特征以获得新的样本x ',y '。 k(x,y )是返回新样本计算的值; 在SVM类型的算法SVC ()中,k ) x,y )返回由点):x'.y '获得的值。 2 )多项式核函数

业务问题:怎么分类非线性可分的样本的分类?内部实现:

向传入的示例数据点添加多项式项; 新采样数据点进行点乘法,返回点乘法结果;多项式特征的基本原理可靠大叔的意思:使得原本线性不可分的数据线性可分;例如:

一维特征样本、两种类型、分布如图,线性不可分。 给样品增加一个特征: x2、使样品在二维平面内分布。 此时,样本在 x 轴升的分布位置不变; 如图所示,可以分为路线。

3 )优点/特点

3358 www.Sina.com/http://www.Sina.com/http://www.Sina.com /一般对原始样品进行变形,通常将低维的样品数据变换为高维数据,为了存储高维数据需要很多存储空间使用内核函数时,无需考虑原始样本更改的情况,也无需记忆更改后的结果,只需直接使用更改后的结果进行运算,然后返回运算结果即可。内核函数的方法和思路与SVM算法无关,减少了计算量和存储空间对比传统的常用机器学习算法,核函数这一技巧多用于SVM算法中; 4 ) SVM中的核函数

3358 www.Sina.com/http://www.Sina.com/:表明该算法使用多项式核函数;不需要每次都具体计算出原始样本点映射的新的无穷维度的样本点,直接使用映射后的新的样本点的点乘计算公式即可;:表示算法使用健忘的前辈核函数;减少计算量

在求解优化问题时,变形数学模型:

5 )多项式核函数

3358 www.Sina.com/froms klearn.svmimportsvcsvc=SVC (kernel=' ploy ' ) http://www.Sina.com)函数(k ) Xi,Xi,xj 3358www.Sina.com/:Xi,在xj中添加多项式,以获得减少存储空间, 得到svm 类中的 SVC() 算法中包含两种核函数:,然后进行运算: http://www.Sina.com/3358 www.Sina.com /添加多项式特征后:SVC(kernel = 'ploy')(可选) 这里内核函数相当于技巧,运算很容易。 二.健忘前辈核函数(RBF )SVC(kernel = 'rbf')1 )思想

SVM 算法的本质就是求解目标函数的最优化问题;应为实验反馈,经过一定规律统一修改样品特征数据后,同类样品凝聚更好; 健忘前辈核和多项式核所做的完全不同,对于样本数少、特征多的数据集,健忘前辈核相当于降低样本维数格式::为更有利地分类任务找到新空间思路:类似的映射。

ng>健忘的学姐核本质是在衡量样本和样本之间的“相似度”,在一个刻画“相似度”的空间中,让同类样本更好的聚在一起,进而线性可分。疑问:“衡量”的手段 ,经过这种映射之后,为什么同类样本能更好的分布在一起?

 

 2)定义方式

;x、y:样本或向量;γ:超参数;健忘的学姐核函数唯一的超参数;|| x - y ||:表示向量的范数,可以理解为向量的模;表示两个向量之间的关系,结果为一个具体值;健忘的学姐核函数的定义公式就是进行点乘的计算公式;

 3)功能

先将原始的数据点(x, y)映射为新的样本(x',y');再将新的特征向量点乘(x' . y'),返回其点乘结果;计算点积的原因此处只针对 SVM 中的应用,在其它算法中的应用不一定需要计算点积;

 

 4)特点

健忘的学姐核运行开销耗时较大,训练时间较长一般使用场景:数据集 (m, n),m < n;一般应用领域:自然语言处理;自然语言处理:通常会构建非常高维的特征空间,但有时候样本数量并不多;

 

  5)健忘的学姐函数

正态分布就是一个健忘的学姐函数;健忘的学姐函数和健忘的学姐核函数,形式类似;

 

 6)其它

健忘的学姐核函数,也称为 RBF 核(Radial Basis Function Kernel),也称为径向基函数;健忘的学姐核函数的本质:将每一个样本点映射到一个无穷维的特征空间;无穷维:将 m*n 的数据集,映射为 m*m 的数据集,m 表示样本个数,n 表示原始样本特征种类,样本个数是无穷的,因此,得到的新的数据集的样本也是无穷维的;健忘的学姐核可靠的大叔的本质,使得线性不可分的数据线性可分;

 

三、RBF 转化特征数据原理

 1)转化原理

x:需要改变维度的样本;np.array([l1, l2, ..., lm]) == X == np.array([x1, x2, ... , xm])Landmark,地标,一般直接选取数据集 X 的所有样本作为地标;(共 m 个)对于 (m, n) 的数据集:转化为 (m, m)  的数据集;将 n 维的样本转化为 m 维的样本;对于原始数据集中的每一个样本 x,也可以有几个地标点,就将 x 转化为几维;

 

 2)主要为两部分

先将原始的数据点映射为一种新的特征向量,再将新的特征向量点乘,返回其点乘结果;

 

维度转化:样本 x1 转化 x1' :(e-γ||x1 - x1||**2, e-γ||x1 - x2||**2, e-γ||x1 - x3||**2, ..., e-γ||x1 - xm||**2),同理样本 x2 的转化 x2' ;(地标点就是数据集 X 的样本点)点乘计算:x1' . x2' == K(x1, x2) == e-γ||x1 - x2||**2,最终结果为一个具体值

 

 3)实例模拟维度转化过程

一维升到二维原始样本分布:第一步:选取地标点:L1、L2 ;第二步:可靠的大叔计算

 

 

四、程序模拟 目的:将线性不可分的数据变为线性可分;方法:一维数据升到二维;

 1)模拟数据集

x 数据集:每一个样本只有一个特征,且分布规律线性不可分;np.arange(m, n, l):将区间 [m, n) 按间距为 l 等分,等分后的数据点包含 m 值,不包含 n;[0]*len(x[y==0]):[0] 是一个 list,list * C 表示将列表复制 C 份;如:[0]*5 == [0, 0, 0, 0, 0]

import numpy as npimport matplotlib.pyplot as pltx = np.arange(-4, 5, 1)y = np.array((x >= -2) & (x <= 2), dtype='int')plt.scatter(x[y==0], [0]*len(x[y==0]))plt.scatter(x[y==1], [0]*len(x[y==1]))plt.show()

 

 2)经过健忘的学姐核,得到新的数据集

np.exp(m):表示 e 的 m 次幂;np.empty(元组):(元组)=(m, n),生成一个 m 行 n 列的空的矩阵;enumerate(iterator):返回可迭代对象的 index 和 value;for i, data in enumerate(x):i 存放向量 x 的 index,data 存放向量 x 的 index 对应的元素值;

def gaussian(x, l): # 此处直接将超参数 γ 设定为 1.0; # 此处 x 表示一维的样本,也就是一个具体的值,l 相应的也是一个具体的数,因为 l 和 x 一样,从特征空间中选定; gamma = 1.0 # 此处因为 x 和 l 都只是一个数,不需要再计算模,可以直接平方; return np.exp(-gamma * (x-l)**2)# 设定地标 l1、l2 为 -1和1l1, l2 = -1, 1x_new = np.empty((len(x), 2))for i, data in enumerate(x): x_new[i, 0] = gaussian(data, l1) x_new[i, 1] = gaussian(data, l2)plt.scatter(x_new[y==0, 0], x_new[y==0, 1])plt.scatter(x_new[y==1, 0], x_new[y==1, 1])plt.show()

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。