标签: svm

为支持向量机(XOR)设计内核

我的问题的核心是"如何为学习问题设计内核函数?"

作为一个快速的背景,我正在阅读关于支持向量机和内核机器的书籍,我看到作者给出了内核的例子(多项式内核均匀和非均匀,高斯内核,以及基于文本的内核的暗示等等)但是,所有这些都提供了结果的图片而没有指定内核,或者模糊地宣称"可以构造一个有效的内核".我对为新问题设计内核时的过程感兴趣.

可能最简单的例子是学习XOR,这是一个嵌入真实平面的最小(4点)非线性数据集.如何能够提出一个自然(和非平凡)内核来线性分离这些数据?

作为一个更复杂的例子(参见Cristianini,SVM简介,图6.2),如何设计内核来学习棋盘图案?Cristianini声称图片是"使用高斯内核"得出的,但似乎他使用了多个,并且它们以未指定的方式组合和修改.

如果这个问题太宽泛而无法在这里回答,我会理解一个这样的内核函数的构造,尽管我更喜欢这个例子有点简单.

kernel machine-learning svm

21
推荐指数
2
解决办法
8027
查看次数

知道任何好的c ++支持向量机(SVM)库吗?

你知道有什么好的c ++ svm库我试过libsvm http://www.csie.ntu.edu.tw/~cjlin/libsvm/但是到目前为止我并没有大吃一惊.

我也听说过SVMLightTinySVM.你试过吗?任何新球员?

谢谢 !

c++ classification machine-learning svm libsvm

20
推荐指数
3
解决办法
2万
查看次数

使用预先计算的内核和libsvm

我目前正致力于使用不同的图像描述符对图像进行分类.由于他们有自己的指标,我使用预先计算的内核.因此,考虑到这些NxN内核矩阵(总共N个图像),我想训练和测试SVM.虽然我对使用SVM不是很有经验.

令我困惑的是如何输入培训输入.使用内核MxM的子集(M是训练图像的数量),训练具有M个特征的SVM.但是,如果我理解正确,这限制了我使用具有相似数量的功能的测试数据.尝试使用大小为MxN的子内核,在训练期间会导致无限循环,因此,在测试时使用更多功能会产生不良结果.

这导致使用相同大小的训练和测试集给出合理的结果.但是,如果我只想分类,说一张​​图像,或者为每个班级训练一定数量的图像并用其余的训练,这根本不起作用.

如何消除培训图像和功能的数量之间的依赖关系,以便我可以测试任意数量的图像?

我正在使用libsvm for MATLAB,内核是距离矩阵,范围在[0,1]之间.

matlab machine-learning svm libsvm

20
推荐指数
1
解决办法
2万
查看次数

非整数类标签Scikit-Learn

scikit-learn的快速SVM问题.当您训练SVM时,它就像是

from sklearn import svm
s = svm.SVC()
s.fit(training_data, labels)
Run Code Online (Sandbox Code Playgroud)

有没有办法labels成为非数字类型的列表?例如,如果我想将矢量分类为"cat"或"dog",而不必使用某种外部查找表将"cat"和"dog"编码为1和2.当我尝试传递一个字符串列表时,我得到......

ValueError: invalid literal for float(): cat

因此,它看起来不像只是在推动字符串labels.有任何想法吗?

python svm scikit-learn

20
推荐指数
2
解决办法
5993
查看次数

支持Java的矢量机?

我想在Java中编写一个"智能监视器",它会在检测到即将发生的性能问题时发出警报.我的Java应用程序正在以结构化格式将数据写入日志文件:

<datetime> | <java-method> | <seconds-to-execute>
Run Code Online (Sandbox Code Playgroud)

因此,例如,如果我有一个Widget#doSomething(String)执行812ms 的方法,它将被记录为:

2013-03-24 11:39:21 | Widget#doSomething(String) | 812
Run Code Online (Sandbox Code Playgroud)

随着性能开始下降(例如在主要收集期间,在峰值负载期间,或者如果系统正在慢慢爬行),方法执行时间开始减慢; 所以最右边的列开始看到大量的数字(有时候执行单个方法需要20到40秒).

在大学 - 进行机器学习练习 - 我写了我的教授所谓的线性二分法,它采用简单的测试数据(一个人的身高,体重和性别),并"学会"如何根据他们的人将男性或女性分类身高体重.然后,一旦它掌握了所有的训练数据,我们就会向它提供新的数据,以确定它可以准确地确定性别.

认为线性二分法的多变量版本称为支持向量机(SVM).如果我错了,那么请澄清,我会将问题的标题更改为更合适的名称.无论如何,我需要这个应用程序来做以下事情:

  • 以"测试模式"运行,我从我的主Java应用程序(我希望监视的那个)提供结构化日志文件,并获取每个日志条目(如上所示)并将其用于测试数据
    • 只有java-methodseconds-to-execute列作为输入/测试数据很重要; 我不关心日期时间
  • 在"监控模式"下运行,它正在从日志文件中主动读取新的日志数据,并使用类似的"机器学习"技术来确定性能下降是否迫在眉睫

重要的是要注意这一seconds-to-execute列并不是唯一重要的因素,因为我看到某些方法在令人敬畏的性能期间出现了可怕的时序,并且在服务器似乎即将死亡的时候,其他方法确实很好的时机并推动雏菊.因此,显然某些方法比其他方法"加权"/更重要.

我的问题

  • 谷歌搜索"线性二分法"或"支持向量机"出现了一些非常可怕,高学术,超脑白皮书,我只是没有精神能量(也没有时间)消费 - 除非他们真的是我唯一的选择; 所以我问是否有一个外行人对这些东西的介绍,或者是用Java构建这样一个系统的优秀网站/文章/教程
  • 是否有任何可靠/稳定的开源Java库?我只能找到jlibsvm,svmlearn但前者看起来处于纯beta状态,而后者似乎只支持二元决策(就像我的旧线性二分法).我知道有Mahout,但它位于Hadoop之上,我认为我没有足够的数据来保证建立我自己的Hadoop集群所需的时间和精力.

提前致谢!

java artificial-intelligence machine-learning svm mahout

20
推荐指数
2
解决办法
2万
查看次数

使用线性内核的svm最好用在哪里?

我目前正在研究svm,并想知道svm对线性内核的应用是什么.在我看来,它必须适用于解决线性优化问题.它是否正确?

我感谢你的回答!

classification machine-learning mathematical-optimization svm

20
推荐指数
1
解决办法
2万
查看次数

LInearSVC与SVC(内核='线性'):相互矛盾的论点?

根据我的研究,我发现了三个相互矛盾的结果:

  1. SVC(kernel="linear") 更好
  2. LinearSVC 更好
  3. 无所谓

有人能解释时要使用LinearSVCSVC(kernel="linear")

似乎LinearSVC略胜SVC并且通常更挑剔.但如果scikit决定花时间实施线性分类的具体案例,为什么不会LinearSVC超越SVC

machine-learning svm scikit-learn

20
推荐指数
2
解决办法
1万
查看次数

确定sklearn中SVM分类器的最有用特征

我有一个数据集,我想在这些数据上训练我的模型.在训练之后,我需要知道SVM分类器分类中主要贡献者的特征.

对森林算法有一些称为特征重要性的东西,有什么类似的吗?

python machine-learning svm scikit-learn

20
推荐指数
4
解决办法
2万
查看次数

实现线性二进制SVM(支持向量机)

我想在高维二进制数据(文本)的情况下实现一个简单的SVM分类器,我认为一个简单的线性SVM是最好的.自己实现它的原因基本上是我想学习它是如何工作的,所以使用库不是我想要的.

问题是,大多数教程都可以解决一个可以解决为"二次问题"的方程式,但它们从未显示出实际的算法!那么你能指出一个我可以学习的非常简单的实现,或者(更好)一个一直到实现细节的教程吗?

非常感谢!

machine-learning svm

18
推荐指数
2
解决办法
1万
查看次数

用于规范化sklearn SVM输入的正确功能

我发现了几个与此相关的问题,但没有人解决我的疑虑.特别是,这个问题的两个答案让我更加困惑.

我正在基于一组特征训练线性SVM - 由图像产生的卷积神经网络特征.例如,我有一个3500x4096 X矩阵,像往常一样在列上的行和特征上有例子.

我想知道在输入SVM之前如何正确地标准化/规范化这个矩阵.我看到两种方式(使用sklearn):

  1. 标准化功能.它导致具有0均值和单一标准的特征.

    X = sklearn.preprocessing.scale(X)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 规范化功能.它导致具有单一规范的特征.

    X = sklearn.preprocessing.normalize(X, axis=0)
    
    Run Code Online (Sandbox Code Playgroud)

归一化(76%准确度)比标准化(68%准确度)明显更好.

它是完全依赖数据集的选择吗?或者如何在这两种技术之间做出选择?

python statistics machine-learning svm scikit-learn

17
推荐指数
1
解决办法
7477
查看次数