- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要通过大量训练来训练回归模型示例,有可能合并任意特征。什么我应该考虑学习算法,为什么?
问题的快速总结:
我有一些在类似大小的分类问题上训练对数线性模型的经验(使用支持向量机、平均和投票感知器等)。添加任意特征的能力很重要,但在这种情况下,训练时间也很有值(value).
例如,到目前为止,我使用 SVMLight 进行的一项实验花了几周时间才收敛到该数据的一个子集。我们可以在多核机器或(可能)集群上进行并行化,但我们需要在几分钟内训练模型。在线培训会更好。
我成功(并且快速)训练了平均感知器模型。然而,据我所知,AP 通常不适用于回归。 AP 是否为回归模型提供任何收敛保证?还有其他不适用的正式原因吗?或者这是否符合我的要求?
我还应该研究哪些其他选择? SVM 可能会提供卓越的准确性,但二次训练时间是 Not Acceptable 。如果可以使用线性时间 SVM 算法,那么效果会很好。
潜在优势:
感谢您的意见。
最佳答案
这是大规模 SVM 的经典问题。如果添加新功能以及添加新数据(如果您不使用在线 svm),则需要重新训练 SVM 模型。一些选项:
实用选项(现成的):
LIBLINEAR - 如果您可以进行线性 SVM,则有一些算法可以利用线性内核来提供比二次训练时间更好的时间。查看 LIBLINEAR,它与 libsvm 来自同一研究小组。他们刚刚在昨天发布的 1.91 版本中添加了回归。 http://www.csie.ntu.edu.tw/~cjlin/liblinear/
Oracle ODM - Oracle 在其 ODM 包中提供了 SVM。他们采用实用的方法基本上提供“足够好”的 SVM,而无需支付寻找真正最优解决方案的计算成本。他们使用一些采样和模型选择技术 - 您可以在这里找到相关信息:http://www.oracle.com/technetwork/database/options/advanced-analytics/odm/overview/support-vector-machines-paper-1205-129825.pdf
SHOGUN - SHOGUN 机器学习工具箱专为大规模学习而设计,它们与许多 SVM 实现以及其他方法交互。我从未使用过它,但可能值得一看:http://www.shogun-toolbox.org
Kernel-machines.org 有一个软件包列表:http://www.kernel-machines.org/software
其他 SVM 研究
如果您想自己动手,有许多技术可以尝试将 SVM 扩展到已在研究论文中发表的大型数据集,但代码不一定像上面的示例那样可用、可用或维护。他们声称效果很好,但每个都有自己的缺点。许多涉及进行某种程度的数据选择。例如,一些研究论文使用线性时间聚类算法对数据进行聚类,并基于聚类训练连续的SVM模型,以便在不使用所有数据的情况下构建模型。核心向量机声称训练时间是线性的,但对其准确性是否如其声称的那么高存在一些批评。许多论文使用不同的启发式算法来尝试选择最有可能的支持向量候选者。其中许多用于分类,但可能适用于回归。如果您想了解有关某些研究的更多信息,我可以添加一些引用资料。
探索算法的工具
您可能已经熟悉这些,但我想我应该把它放在这里以防万一:
还有其他算法在大型数据集上具有良好的运行时间,但它们是否能很好地工作很难说,这取决于数据的构成。由于运行时很重要,我会从更简单的模型开始,然后逐渐发展到更复杂的模型。 ANN、决策树回归、贝叶斯方法、局部加权线性回归或模型树等混合方法(其叶节点是线性模型的决策树)都可以在大型数据集上比 SVM 更快地完成,并且可能会产生良好的结果。
WEKA - Weka 是探索您的选择的好工具。我会使用 WEKA 来尝试不同算法中的数据子集。源代码是开放的,并且是 Java 语言,如果您选择某些内容,您可以根据您的需要进行调整。 http://www.cs.waikato.ac.nz/ml/weka/
R - R 编程语言还实现了许多算法,类似于 Matlab 中的编程。 http://www.r-project.org/
我不建议在非大规模数据集上使用 WEKA 或 R,但它们是尝试缩小适合您的算法范围的有用工具。
关于machine-learning - 我应该考虑哪些学习算法来训练对数线性回归模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10307194/
我想在 python 中找出一个整数的 log10,但我得到了一个错误,比如数学域错误 我的代码是这样的w=math.log10(q*q1)/math.log10(2) 其中 q1,q2 是整数 是的
舍入小数 在 NumPy 中,主要有五种方法来舍入小数: 截断 去除小数部分,并返回最接近零的浮点数。使用 trunc() 和 fix() 函数。 示例: import numpy as n
我有一个数值范围为 0 到 100 的 slider 。 我想将它们映射到 100 到 10,000,000 的范围内。 我在网上看到过一些函数,但它们都是用 C++ 编写的。我需要它在 Javasc
我想请用户输入一个整数(N),然后显示他/她输入的整数的 10 对数。我已经成功计算了 10 对数,但不知道如何像下面这样显示它: Write in an Integer: 455666 455666
我将 x 轴设置为对数刻度。最大值为10000,最小值为1。 GraphPane mypane = zedgraphcontrol.GraphPane; mypane.XAxis.Type = Axi
我正在尝试编写一个快速算法来计算 log gamma function 。目前我的实现看起来很幼稚,只是迭代了 1000 万次来计算 gamma 函数的对数(我还使用 numba 来优化代码)。 im
这个问题在这里已经有了答案: How to show minor tick labels on log-scale with Matplotlib (2 个答案) 关闭 7 年前。 将行 plt.y
抱歉标题不好 ;) 我正在尝试重新创建我在其他一些工作中遇到的 matlab 图,但我不太了解他们使用的比例。 y轴增量如下(从上往下[+ve y]): 0.9999,0.999,0.99,0.9,0
由于 1000 的以 10 为底的对数是 3,您可能期望 Math::log(1000, 10) 返回 3。相反,它返回 2.9999999999999996。 这是因为 Ruby 中的 float
我对对数 X 轴有疑问。阈值大于 0,x 的最小值为 1,并且所有 X 值都大于 0。并且仍然给我相同的错误 Can't plot zero or subzero values on a logari
我需要在我的应用程序中实现折线图,我想使用 MPAndroidChart。问题是 y 轴上的值将介于 1 和 1x10^-12 之间。这就是为什么我需要在该轴上的对数 View 。 有没有办法用那个库
我正在尝试按照 Logarithmic slider 中的示例进行操作. 这是我使用的代码: Timeline._MIN_PER_MINUTE = 1; Timeline._MIN_PER_HOUR
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve th
我尝试为对数 y 轴绘制条形图。不幸的是,如果我将 y 轴设置为对数,则不再有条形图。我该怎么做才能实现这一目标?是否可以在 bar-function 中设置引用点(默认似乎为零)? 我的代码是: i
所以我一直在努力掌握 Big Oh 的计算方法。我觉得我已经掌握了基础知识,但对看似非常简单的计算感到困惑。所以如果下面的计算有很大的 O(n log n)(我真的希望我至少做对了)改变循环的顺序对复
我知道二维绘图的 semilogx 和 semilogy。 SURF 和 MESH 有什么等价物吗? 最佳答案 如上述链接所述,要将所有三个轴设置为对数刻度,请使用 set(gca, 'XScale'
这看起来很简单,但我在用 Ruby 计算 log (Base 5) 时遇到了问题。 显然标准的 base-10 日志工作正常: >> value = Math::log(234504) => 12.3
这段代码是用 C 语言根据 pollard 的对数 rho 算法(来自 wiki)编写的。在此代码中,如果我输入 alpha=2、beta=5、N=1019,则必须返回 a=681、b=378、A=3
有了this question之后通过指向 an external site 的链接回答,我意识到我解决了一个问题,只是为了得到另一个问题:在对数刻度上,MESH 和 SURF 函数的 C=Z 参数不
我正在尝试解决 the SPOJ problem PGCD , 它询问最大公约数表中出现了多少个素数。 我想到的第一个想法是先通过筛分生成素数。 然后,对于每个素数 p,查看有多少对(a,b),其中
我是一名优秀的程序员,十分优秀!