基础机器学习

6

我正在开发一个工具,需要根据多个变量的组合来预测变量的值。

实现需要使用Java编程语言。

谢谢。


6
这是作业吗? - Hery
不要笑,我的问题很抽象...我需要一个点子来开始我的工作... - Rahim
2
我强烈建议您查看Weka(http://www.cs.waikato.ac.nz/ml/weka/)- 这是一个基于Java非常好的机器学习工具。 - mikera
如果没有更多的细节,你所得到的建议对于你具体的任务来说可能不是非常有用的。 - Cerin
9个回答

6

有一门关于机器学习的斯坦福公开课程,其中包括视频讲座等。
请点击这里查看。


4
如果你想从简单的东西开始,可以考虑使用准线性模型,例如逻辑回归或线性判别分析:它们易于理解,并且在互联网上有大量的代码。此外,还可以考虑一些更简单的(单节点)神经模型(感知器、Delta规则等):它们非常容易编程。如果你想深入学习,我建议购买一本书,如Weiss和Kulikowski的《学习计算机系统》。

3

2
Weka适合您的需求。它具有回归,并且是用Java实现的。

2
如果要预测的变量是连续的,那么回归模型就是关键。包括最小二乘法、多项式模型、人工神经网络和支持向量机等多种回归技术。当然,每种技术都可能有其假设或参数。
MATLAB是一个文档完备的计算环境之一。我建议访问 MATLAB 文档中关于非线性回归的以下页面:http://www.mathworks.com/help/stats/nonlinear-regression-1.html#btcgzas-1 您可以从使用全局搜索方法(如遗传算法)开始,来调整给定多项式回归模型的参数。
对于预测离散变量,可以应用上述列出的回归模型,只需给定阈值即可。决策树也是一个不错的选择。

2

我建议从K-最近邻算法开始学习 - 它们是最简单的 - 可以尝试不同的数据预处理、距离度量等方法。它们也可以得出非常好的(虽然非常缓慢的)预测结果。


1

看起来多元线性回归应该能胜任这项工作。


0
在深入研究代码之前,由于您是初学者,我建议您先了解基础知识并掌握它。您不需要阅读博士论文,但至少了解SVM、逻辑回归和神经网络的基本术语会很有帮助。互联网上有大量材料可供参考,包括斯坦福大学、Coursera课程和其他答案中推荐的书籍。
即使互联网上有现成的代码可供使用,我之所以说您需要了解基础知识,是因为在典型的分类器(如SVM、神经网络甚至逻辑回归)中,有各种参数需要调整,如果没有对基础知识的理解,使用这些软件包将会很困难和混乱。当我还是个初学者时,我也有同样的经历。
掌握如何处理SVM中的偏斜数据集、如何调整逻辑回归的参数以及如何减少数据集的维数,将使您的实现更快、更高效,从而获得更好的准确性。否则,直接深入代码可能会让您再次提出一些基本问题。希望这对您有所帮助!

0
如果这是一个回归问题,我建议您从Matlab中的逻辑回归或线性回归等方面开始。有许多库和代码可供使用。通过这种方式,首先测试并比较样本内误差(来自您考虑用于生产的数据)和样本外误差(将您的预测与未考虑进行预测的数据进行比较),以确定所需的特征数量、顺序和训练数据量。如果训练数据较少,则使用较少的特征或正则化。如果特征的数量和顺序非常大且难以确定,则转向神经网络或SVM(请查看是否有Java的SVM库),当您在Matlab中拥有完美的系统后,再将其部署到Java中。
就我所见,机器学习系统在实际使用前需要进行大量手动微调,而像Matlab / Octave这样的环境是进行微调的最佳平台。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接