LIBSVM使用与自定义核函数

简介:

一、LIBSVM训练函数使用如下:

1
model = svmtrain(trainlabel,traindata, '-s 0 -t 2 -c 1.2 -g 2.8' )

trainlabel:训练样本标签

traindata:训练样本数据集,行向量为样本值


1、参数-s,表示SVM类型,默认值为0,可选类型有:

0 -- C- SVC

1 -- nu - SVC

2 -- one-class-SVM

3 -- e - SVR

4 -- nu-SVR


2、参数-t,表示核函数类型,默认为2,可选核函数有:

0 -- 线性核函数: K(u,v)=u'*v

1 -- 多项式核函数: K(u,v)=(gamma*u'*v + coef0)^d

2 -- RBF核函数: K(u,v)=exp(-gamma*||u-v||^2)

3 -- sigmoid核函数: K(u,v)=tanh(gamma*u'*v + coef0)

4 -- 自定义核函数

u、v为数据集中的两个样本

核函数对应参数:

   线性核函数,没有专门需要设置的参数

   多项式核函数,有三个参数。-d用来设置多项式核函数的最高此项次数,也就是公式中的d,默认值是3 。-g用来设置核函数中的gamma参数设置,也就是公式中的gamma,默认值是1/k(k是类别数)。-r用来设置核函数中的coef0,默认值是0

   RBF核函数,有一个参数。-g用来设置核函数中的gamma参数设置,默认值是1/k(k是类别数)。

   sigmoid核函数,有两个参数。-g用来设置核函数中的gamma参数设置,默认值是1/k(k是类别数)。-r用来设置核函数中的coef0,默认值是0。


3、参数-c cost,表示惩罚系数,设置C- SVC、e - SVR、n - SVR中从惩罚系数C,默认值为1。


4、参数-wi weight,对各类样本的惩罚系数C加权,默认值为1。


5、参数-v n,n折交叉验证模式。


二、自定义核函数

   使用-t 4参数时,可以使用自定义核函数,根据自定义核函数求出核矩阵,自定义核函数使用方法如下:比如线性核函数 是 K(u,v)=u'*v,设训练集是train_data,设训练集有150个样本 , 测试集是test_data,设测试集有120个样本,则

训练集的核矩阵: ktrain = train_data*train_data'

测试集的核矩阵: ktest = test_data*train_data'

想要使用-t 4参数还需要把样本的序列号放在核矩阵前面 ,形成一个新的矩阵:

% 使用线性核函数 K(u,v) = (u' * v)

1
2
3
4
5
6
Ktrain = train_data * train_data';    %求训练集核矩阵
Ktrain = [(1:150)',ktrain];     %样本的序列号放在核矩阵前面
model = svmtrain(train_label, Ktrain,  '-t 4' );  % 输入 Ktrain
Ktest = test_data*train_data';  %求测试集核矩阵
Ktest = [(1:120)', Ktest];      %样本的序列号放在核矩阵前面
[predict_label, accuracy, P1] = svmpredict(test_label,Ktest,model); % 输入Ktest

三、混合核函数

   多项式核函数有良好的全局性能,具有很强的外推能力,并且多项式的次数越低,其外推能力越强。而Gauss径向基核函数则是局部性强,其内推能力随着参数的减小而减弱。通过把两类核函数结合起来,发挥它们各自的优点,得到学习能力和推广性都很强,兼具良好的外推和内推能力的核函数,利用多项式核函数和径向基核函数构建混合核函数分类模型,表达式为:

wKiom1fiKvKSNAz2AAAXL-n5Zo0088.png


   式中:Kpoly为多项式核函数;Krbf为径向基核函数;λ∈(0,1)。当λ较大时,混合核函数的性能表现得优良一些。





本文转自 stock0991 51CTO博客,原文链接:http://blog.51cto.com/qing0991/1854927

相关文章
|
6天前
Sklearn库中的决策树模型有哪些主要参数?
Sklearn的决策树模型参数包括:criterion(默认"gini")用于特征选择,splitter(默认"best")决定划分点,max_depth限制树的最大深度,min_samples_split设置内部节点划分的最小样本数,min_samples_leaf定义叶子节点最少样本数,max_features(默认"auto")控制搜索最优划分时的特征数量,random_state设定随机数种子,max_leaf_nodes限制最大叶子节点数,以及min_impurity_decrease阻止不纯度减少不足的节点划分。
24 0
|
6天前
|
数据可视化 API 算法框架/工具
Python用稀疏、高斯随机投影和主成分分析PCA对MNIST手写数字数据进行降维可视化
Python用稀疏、高斯随机投影和主成分分析PCA对MNIST手写数字数据进行降维可视化
|
6天前
|
数据可视化 API 算法框架/工具
Python用T-SNE非线性降维技术拟合和可视化高维数据iris鸢尾花、MNIST 数据
Python用T-SNE非线性降维技术拟合和可视化高维数据iris鸢尾花、MNIST 数据
|
6天前
|
机器学习/深度学习 算法 数据可视化
R语言用标准最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类
R语言用标准最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类
|
6天前
|
机器学习/深度学习 数据可视化 Serverless
4种SVM主要核函数及相关参数的比较
本文将用数据可视化的方法解释4种支持向量机核函数和参数的区别
119 1
|
6天前
|
机器学习/深度学习 存储 算法
SVM不同核函数区别与选择
支持向量机(Support Vector Machine,SVM)是一种常用的监督学习算法,它可以将数据从低维空间映射到高维空间,以便更好地进行分类或回归分析。SVM的关键思想是找到一个能够最大化分类边界(或称为超平面)的决策边界,这个边界可以最好地区分不同类别的数据点。
|
6天前
|
机器学习/深度学习 算法 Python
【Python机器学习】Sklearn库中Kmeans类、超参数K值确定、特征归一化的讲解(图文解释)
【Python机器学习】Sklearn库中Kmeans类、超参数K值确定、特征归一化的讲解(图文解释)
102 0
|
9月前
|
机器学习/深度学习 API 算法框架/工具
一、线性回归的两种实现方式:(一)keras实现
一、线性回归的两种实现方式:(一)keras实现
|
10月前
|
机器学习/深度学习 数据可视化 计算机视觉
使用CatBoost和SHAP进行多分类完整代码示例
CatBoost是顶尖的机器学习模型之一。凭借其梯度增强技术以及内置函数,可以在不做太多工作的情况下生成一些非常好的模型。SHAP (SHapley Additive exPlanation)是旨在解释具有独特视觉效果和性能价值的机器学习模型的输出。CatBoost和SHAP结合在一起构成了一个强大的组合,可以产生一些非常准确并且可以进行解释的结果。
225 0
|
机器学习/深度学习 Python
【统计学习方法】线性可分支持向量机对鸢尾花(iris)数据集进行二分类
【统计学习方法】线性可分支持向量机对鸢尾花(iris)数据集进行二分类
235 0
【统计学习方法】线性可分支持向量机对鸢尾花(iris)数据集进行二分类