5

我想自学足够的机器学习,以便我能够首先理解足够的知识来使用可用的开源 ML 框架,这将使我能够做以下事情:

  1. 浏览来自某个站点的页面的 HTML 源并“了解”哪些部分构成内容,哪些广告以及哪些构成元数据(既不是内容也不是广告 - 例如 - TOC、作者简介等)

  2. 浏览来自不同站点的页面的 HTML 源并“分类”该站点是否属于预定义类别(将预先提供类别列表)1。

  3. ...文本和页面上的类似分类任务。

如您所见,我的直接要求是对不同数据源大量数据进行分类。

就我有限的理解而言,与使用 SVM 相比,采用神经网络方法需要大量的训练和维护?

我知道 SVM 非常适合像我这样的(二进制)分类任务,而像 libSVM 这样的开源框架相当成熟?

那么,计算机科学专业的毕业生现在需要学习哪些学科和主题,才能解决上述要求,使用这些框架?

我想远离 Java,这是可能的,否则我没有语言偏好。我愿意学习并尽我所能付出努力。

我的意图不是从头开始编写代码,而是首先让各种框架可供使用(虽然我不知道是哪一个),并且如果它们出错,我应该能够修复它们

你对学习统计学和概率论的特定部分的建议对我来说并不意外,所以如果需要的话就这么说吧!

如果需要,我将根据您的所有建议和反馈修改此问题。

4

4 回答 4

4

机器学习中的“理解”相当于拥有一个模型。该模型可以是例如支持向量的集合、神经网络的布局和权重、决策树等。这些方法中哪一种效果最好取决于您所学习的主题以及您的训练数据的质量。

在您的情况下,从 HTML 网站的集合中学习,您希望首先对数据进行预处理,此步骤也称为“特征提取”。也就是说,您从正在查看的页面中提取信息。这是一个困难的步骤,因为它需要领域知识并且您必须提取有用的信息,否则您的分类器将无法做出很好的区分。特征提取将为您提供一个数据集(每行包含特征的矩阵),您可以从中创建模型。

通常在机器学习中,建议还保留一个“测试集”,您不使用它来训练您的模型,但最终您将使用它来决定什么是最好的方法。将测试集隐藏到建模步骤的最后一刻,这一点非常重要!测试数据基本上会提示您模型正在产生的“泛化错误”。任何具有足够复杂性和学习时间的模型都倾向于准确地学习您训练它所使用的信息。机器学习者说该模型“过度拟合”了训练数据。这种过度拟合的模型看起来不错,但这只是记忆。

虽然对预处理数据的软件支持非常稀疏且高度依赖于领域,但正如亚当所提到的, Weka是一个很好的免费工具,可以在您拥有数据集后应用不同的方法。我会推荐阅读几本书。Vladimir Vapnik 着有《统计学习理论的本质》,他是支持向量机的发明者。你应该熟悉建模的过程,所以一本关于机器学习的书肯定是非常有用的。我也希望其中一些术语可能对您找到自己的方式有所帮助。

于 2010-09-21T22:12:42.957 回答
3

对我来说似乎是一项相当复杂的任务;第 2 步,分类,“简单”,但第 1 步似乎是一个结构学习任务。您可能希望将其简化为对部分 HTML 树进行分类,可能是通过一些启发式方法预先选择的。

于 2010-09-23T17:07:26.740 回答
2

使用最广泛的通用机器学习库(免费)可能是WEKA。他们有一本书介绍了一些 ML 概念并介绍了如何使用他们的软件。不幸的是,它完全是用 Java 编写的。

我不是一个真正的 Python 人,但如果没有很多可用的工具,我会感到惊讶。

对于目前基于文本的分类,朴素贝叶斯、决策树(我认为尤其是 J48)和 SVM 方法给出了最好的结果。然而,它们各自更适合略有不同的应用。在我的脑海中,我不确定哪个最适合你。使用像 WEKA 这样的工具,您可以使用一些示例数据尝试所有三种方法,而无需编写一行代码并亲自查看。

我倾向于回避神经网络,因为它们很快就会变得非常复杂。再说一次,我没有和他们一起尝试过大型项目,主要是因为他们在学术界享有盛誉。

仅当您使用概率算法(如朴素贝叶斯)时才需要概率和统计知识。SVM 通常不以概率方式使用。

从它的声音来看,您可能想要投资一本实际的模式分类教科书或上一堂课,以便准确找到您正在寻找的东西。对于自定义/非标准数据集,在没有对现有技术进行调查的情况下获得好的结果可能会很棘手。

于 2010-09-21T21:21:30.283 回答
1

在我看来,你现在正在进入机器学习领域,所以我真的很想建议看看这本书:它不仅对最常见的机器学习方法和算法(以及它们的变体),但它也提供了一套非常好的练习和科学论文链接。所有这些都包裹在一种富有洞察力的语言中,并带有关于统计和概率的最小但有用的纲要

于 2010-09-21T21:34:52.400 回答