问题标签 [svm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
data-mining - 使用 RBFKernel(C 和 gamma)优化 SMO
使用带有支持向量机的 RBF 内核时有两个参数:C 和 γ。事先不知道哪个 C 和 γ 最适合一个问题;因此,必须进行某种模型选择(参数搜索)。目标是识别好的(C;γ),以便分类器可以准确地预测未知数据(即测试数据)。
weka.classifiers.meta.GridSearch
是用于调整一对参数的元分类器。然而,似乎需要很长时间才能完成(当数据集相当大时)。为了缩短完成这项任务所需的时间,您建议做什么?
根据支持向量机的用户指南:
C:软边距常数。较小的 C 值允许忽略靠近边界的点,并增加边距。
γ> 0 是控制高斯宽度的参数
machine-learning - 一种很好的机器学习技术,可以从坏的 URL 中剔除好 URL
我有一个应用程序需要区分好的 HTTP GET 请求和坏的。
1) SVM 是否适合这项任务?2) 我可以用原始 URL 训练它吗?- 没有明确指定“功能” 3)我需要多少个 URL 才能使其擅长预测?4) 我应该使用什么样的 SVM 内核?5) 在我训练它之后,我如何让它保持最新状态?6) 我如何在 SVM 上再次测试看不见的 URL 以确定它的好坏?我
machine-learning - 支持向量机的序列最小优化收敛问题
我已经在支持向量机上工作了大约 2 个月了。我自己编写了 SVM,对于 SVM 的优化问题,我使用了 John Platt 博士的序列最小优化(SMO)。
现在我正处于进行网格搜索以找到我的数据集的最佳 C 值的阶段。(请在此处找到我的项目应用程序和数据集详细信息的详细信息SVM 分类 - 每个类的最小输入集数)
我已经成功检查了我自定义实现的 SVM 对从 2^0 到 2^6 的 C 值的准确性。但是现在我在 C> 128 的 SMO 收敛方面遇到了一些问题。就像我试图找到 C=128 的 alpha 值一样,它需要很长时间才能真正收敛并成功给出 alpha 值。
对于 C=100,SMO 收敛所需的时间约为 5 小时。我认为这个巨大(因为 SMO 应该很快。)虽然我得到了很好的准确性?我搞砸了,不是因为我无法测试更高 C 值的准确性。
实际上,我正在显示在 SMO 的每次传递中更改的 alpha 数量,并获得 10、13、8... alpha 连续变化。KKT 条件确保收敛,那么这里发生了什么奇怪的事情?
请注意,尽管执行时间很长,但我的实现对于 C<=100 的精度很高。
请就这个问题给我意见。
谢谢你和干杯。
python - 使用 LibSVM 计算与均值/标准差对最近的匹配
我是 SVM 的新手,我正在尝试使用 Python 的libsvm接口对包含均值和标准差的样本进行分类。但是,我得到了荒谬的结果。
此任务是否不适合 SVM,或者我在使用 libsvm 时是否有错误?下面是我用来测试的简单 Python 脚本:
该域似乎相当简单。我希望如果它被训练知道 2.5 的平均值意味着标签 1,那么当它看到 2.4 的平均值时,它应该返回标签 1 作为最可能的分类。但是,每个内核的准确度为 0%。为什么是这样?
一些旁注,有没有办法隐藏终端中 libsvm 转储的所有详细训练输出?我搜索了 libsvm 的文档和代码,但找不到任何方法来关闭它。
此外,我曾想在我的稀疏数据集中使用简单的字符串作为键(例如 {'mean':2.5,'stddev':3.5})。不幸的是,libsvm 只支持整数。我尝试使用字符串的长整数表示(例如 'mean' == 1109110110971110),但 libsvm 似乎将这些截断为正常的 32 位整数。我看到的唯一解决方法是维护一个单独的“密钥”文件,将每个字符串映射到一个整数('mean'=0,'stddev'=1)。但显然这会很痛苦,因为我必须与序列化分类器一起维护和持久化第二个文件。有没有人看到更简单的方法?
artificial-intelligence - LibSVM 中的标称属性
创建 libsvm 训练文件时,如何区分名义属性和数字属性?我正在尝试将某些名义属性编码为整数,但我想确保 libsvm 不会将它们误解为数值。不幸的是,libsvm 的站点似乎只有很少的文档。Pentaho 的文档似乎暗示 libsvm 做出了这种区分,但我仍然不清楚它是如何做出的。
matlab - MATLAB 中的 SVM 可视化
在 Matlab 中执行 SVM 训练后,如何可视化 SVM 分类?
到目前为止,我只训练了 SVM:
machine-learning - 现成的判别重新排名软件
是否有现有的判别性重新排序软件,例如Charniak NLP 解析器、Shen、Sarkar 和 Och 的解析器或Shen 和 Joshi 的技术使用的软件?我想要一些可以轻松适应自己用途的东西,类似于解析重新排序。
python - 保存 PyML.classifiers.multi.OneAgainstRest(SVM()) 对象?
我正在使用PYML构建多类线性支持向量机 (SVM)。在训练 SVM 之后,我希望能够保存分类器,以便在后续运行中我可以立即使用分类器而无需重新训练。不幸的是,该分类器没有实现 .save() 函数,并且尝试腌制它(使用标准 pickle 和 cPickle )会产生以下错误消息:
有没有人知道解决这个问题的方法或没有这个问题的替代库?谢谢。
编辑/更新
我现在正在训练并尝试使用以下代码保存分类器:
请注意,我现在使用 PyML 保存机制而不是使用酸洗进行保存,并且我已将“saveSpace=False”传递给训练函数。但是,我仍然遇到错误:
但是,我通过 saveSpace=False... 那么,如何保存分类器?
PS
我正在使用的项目是pyimgattr,以防您想要一个完整的可测试示例...该程序使用“./pyimgattr.py train”运行...这会给您带来此错误。另外,关于版本信息的注释:
java - 如何找出 libsvm 中的最佳 C/Gamma 参数?
我正在使用libsvm对具有大量特征/属性(每个项目大约 5,800 个)的数据集进行多类分类。我想为 C 和 Gamma 选择比我目前使用的默认值更好的参数。
我已经尝试过运行easy.py,但是对于我正在使用的数据集,估计时间几乎是永远的(在20、50、100和200个数据样本上运行easy.py,并得到一个预测的超线性回归我必要的运行时间需要数年)。
有没有办法比默认值更快地获得更好的 C 和 Gamma 值?我正在使用 Java 库,如果这有什么不同的话。
java - 如何使用 libsvm 计算多类预测的概率?
我正在使用libsvm并且文档让我相信有一种方法可以输出输出分类准确性的可信概率。是这样吗?如果是这样,任何人都可以提供一个明确的例子来说明如何在代码中做到这一点?
目前,我正在以下列方式使用 Java 库