svm算法中使用高斯核代替线性核,Python调用高斯函数
1.内核函数))))))。
1)格式
K(x,y):表示样本x和y,是返回新样本计算的新样本x’,y’,k) x,y);
在SVM型算法SVC(),k) x,y)返回由point): x 获得的值。y。
2)多项式核函数
商业问题:非线性可分类样本如何分类?
内部实施:
向输入的样本数据点添加多项式项;
对新的采样数据点进行点乘,并返回点乘结果;
多项式的基本原理:依靠无辜的行人,原本无法用线分隔的数据,可以用线分隔。
无罪的意思就是让不能线性分离的数据可以线性分离。
例如:
一维特征样本,两种类型,分布如图所示,线性不可分:
向示例中添加功能。X2表示样本分布在二维平面上。此时,样本在X轴上的上升分布位置不变。如图,可以分为路线。
3)优势/特点
不需要每次都计算原采样点映射的新的无限维采样点,而是直接使用映射的新采样点的点乘计算公式。
减少计算量
减少存储容量
一般来说,原始样本的变形通常需要大量的存储区域将低维样本数据转换为高维数据并存储高维数据;使用核函数时,不需要考虑原样本的变化,也不需要记住变化后的结果。你只需要直接使用改变后的结果进行运算,并返回运算结果。
核函数的方法和思想并不是SVM算法独有的。只要能减少计算量和存储空间,核函数的设计和计算都很方便。
与传统的机器学习算法相比,核函数在SVM算法中使用最多。
4)SVM中的核函数
svm类的SVC))算法包含两种类型的核函数。
SVC(kernel= poly ):表示算法使用多项式核函数;
SVC(kernel=RBF ):表示算法使用孤蝶的核函数;
SVM算法的本质是解决目标函数的优化问题。
当解决优化问题时,变形的数学模型:
5)多项式核函数
格式:
来自sklearn.svm importSVC
SVC=SVC(kernel= poly )).
思路:设计函数(k(Xi,xj)),传给原样本(x) I),x) j),返回计算结果(x)) I)。x))的多项式特征。
内部流程:先对xi,xj加多项式得到x(I),x) j),再进行运算)x) I)。x’)j);
X(I)在添加多项式特征之后)x’)I;
X(j)加多项式)x)) j的特征后;
x(一)。x) j)转换成x ()) I)。x)) j)。
其实不用内核函数也能达到同样的目的。在这里,内核函数相当于技能,可以更方便的操作。
二、孤独蝴蝶的核函数(RBF)。
商业问题:非线性可分类样本如何分类?
1)思想
业务的目的是对样本进行分类,采用按照一定规则统一改变样本特征数据的方法,获得新的样本。可以根据新的特征数据更好地对新样本进行分类。由于新样本的特征数据与原样本的特征数据相对应,根据新样本的分布和分类可以得到原样本的分类。
应该是实验性反馈。样本的特征数据按照一定的规则均匀变化后,相似样本得到更好的浓缩;
孤独的小蝶核和多项式核做的是完全不同的事情。对于样本少特征多的数据集,孤独的小蝶核相当于降低了样本维度。
孤蝶核心任务:寻找一个更有利于任务分类的新空间。
方法:类似
看吧。
孤独蝴蝶的细胞核的本质是衡量样本之间的“相似度”。在描述“相似性”的空间中,相似的样本可以更好地聚集,然后线性分离。
问题:
“测量”手段
经过这样的映射,为什么同类样本可以更好的分布?
2)定义方法
;
x,y:样本或向量;
)超参数;孤独蝴蝶核函数的唯一超参数;
X-Y:表示一个向量的范数,可以理解为th
表示两个向量之间的关系,结果是一个具体值。
蝶形核函数的定义是点乘的计算公式。
3)功能
首先,将原始数据点(x,y)映射到新样本(x’,y’);
然后将新特征向量的点乘以(x)。y)并返回该点的结果;
计算点积的原因:这只是针对SVM的应用,其他算法中的应用不一定需要计算点积;
4)特点
孤独的小蝴蝶
核心的运行成本耗时,训练时间长;
一般使用场景:数据集(m,n),m n;
一般应用领域:自然语言处理;
自然处理:通常构造一个非常高维的特征空间,但有时样本数量并不大;
5)孤独的小蝴蝶功能
正态分布是一个孤独的小蝴蝶函数;
孤独的小蝶函数和孤独的小蝶核函数在形式上是相似的;
6)其他
孤独小蝶核函数,又称RBF核,又称径向基函数;
孤独小蝶核函数的本质:将每个样本点映射到一个无限维的特征空间;
无限维:将m*n的数据集映射到m*m的数据集,其中M代表样本数,N代表原始样本的特征类型。样本的数量是无限的,所以得到的新数据集的样本也是无限的。
孤独的小蝶核是纯路人的本质,让线性不可分的数据线性可分;
3.径向基函数变换特征数据的原理
1)转换原则
x:需要改变尺寸的样品;
NP。阵([L1,L2,LM])==x==NP。数组([X1,X2,XM]):地标,地标。通常,直接选择数据集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 (标志点为数据集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 * C表示将列表复制C份;
例如:[0] * 5==[0,0,0,0]
importnumpy as npimportmatplotlib . py plot as PLT
x=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 (tuple): (tuple)=(m,n),生成一个m行n列的空矩阵;
枚举(迭代器):返回索引和值;可迭代对象的;
I、enumerate (x)中的数据:I存储向量x的索引,data存储向量x的索引对应的元素值;
Defgaussian(x,l):#这里直接将超参数设置为1.0;
#这里X代表一维样本,即特定值,L对应的也是特定数,因为L和X一样,是从特征空间中选取的;
伽马=1.0
#这里因为X和L都只是一个数,所以不需要再计算模数,直接平方即可;
Return np.exp(-gamma * (x-l)**2)#将界标l1和l2设置为-1和1
l1,l2=-1,1x_new=np.empty((len(x),2))for i,data in numerate(x):
x_new[i,0]=高斯型(数据,l1)
x_new[i,1]=高斯型(数据,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()
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。