2

我想使用监督机器学习算法根据句子中是否存在单词来预测一组句子的二进制函数(真或假)。

理想情况下,我希望避免对用于决定输出的单词集进行硬编码,以便算法自动学习哪些单词(一起?)最有可能触发特定输出。

http://shop.oreilly.com/product/9780596529321.do(编程集体智能)在第 4 章中有一个很好的部分,标题为“从点击中学习”,它描述了如何通过在神经网络中使用一层隐藏节点来做到这一点每个新的输入词组合都有一个新的隐藏节点。

同样,可以为训练数据集中的每个单词创建一个特征,并使用这些特征训练几乎任何经典的机器学习算法。添加新的训练数据会产生新的特征,这需要我从头开始重新训练算法。

这让我想到了我的问题:

  • 如果在扩展训练数据集时我必须从头开始重新训练所有内容,这实际上是个问题吗?
  • 什么样的算法会更有经验的机器学习用户推荐用于此类问题?
  • 我应该使用什么标准来选择一个算法而不是另一个?(除了实际尝试所有这些,看看哪个在精度/召回指标上表现更好)
  • 如果您曾研究过类似的问题,那么使用 2-gram 扩展功能怎么样(如果存在特定的 2-gram,则为 1,如果不存在,则为 0)?3 克 ?
4

1 回答 1

2

如果您想找到通常一起找到的单词,您可以查看主题建模的一般领域。

最简单的方法是使用潜在语义分析(http://en.wikipedia.org/wiki/Latent_semantic_analysis),它只是将 SVD 应用于术语文档矩阵。然后,您需要进行一些额外的事后分​​析以适应您的特定结果。

一个更复杂、更复杂的方法是使用潜在狄利克雷分配(http://en.wikipedia.org/wiki/Latent_Dirichlet_allocation

只要您要重新训练,只需添加新功能(单词)就可以了。您还可以使用 TF/IDF 在表示矩阵时为该特定单词赋予一个值(而不仅仅是 1 或 0)。

我不知道您尝试使用哪种编程语言来执行此操作,但我知道 Java 和 Pythont 中有库可以完成上述所有操作。

于 2012-08-09T10:09:49.953 回答