我如何接近ML吧?

时间:2016-06-12 20:59:39

标签: machine-learning nlp nltk

我想发布一篇关于我对机器学习的理解的话题。 问题在粗体字母的文本中给出。 我之前发过一个类似的问题,但编辑们建议我修改它。 因此,我重新发布它。 如果我要修改帖子,请建议。

我正在阅读有关机器学习的步骤。 我在Leek教授等人的课程中阅读了在线课程“实践机器学习”。

我理解这些步骤,

1.Question - > 2.Input Data ---> 3.Features - > 4.Algorithm - > 5.Parameters ---> 6.Evaluation

  1. 问题:我们应该对数据科学有明确的问题。 问题是,你想要预测什么,你想用它预测什么?

  2. 输入数据:我们通过了解数据的局限性来收集我们能够预测的最佳输入数据。

  3. 特点:在这里,我们可能使用我们拥有的测量特征或者可能使用计算来构建我们认为可能对预测我们关心的结果有用的特征 - 也就是说,我们需要计算数据的某些特征,如单词的频率,我们可以用它来构建预测算法。 [他们认为,通常我们应该避免自动选择特征。有时它会产生良好的效果,但可能不会。如果必须进行自动功能选择,则必须小心谨慎。 数据通常分为必须为了构建模型而创建的训练集,用于评估模型的测试集以及可选的验证集。 因此,您在训练集上所做的就是使用交叉验证来选择功能。 当我们得到一个新的数据集时,如果它足够大,我们将60%的数据集设置为训练,20%的数据设置为测试,20%设置为有效的数据集如果你有一个中等样本大小,你可能会做的是你可能需要60%的数据集进行培训,40%的数据集进行测试。如果数据很小,那么想法可能是进行交叉验证并报告小样本量的警告以及您从未在样本外或测试数据集中预测到这一点的事实。

  4. 问。我该如何选择功能?它是自动程序还是非自动程序?    我应该对每种数据大小使用交叉验证还是仅针对小数据?]

    1. 算法:我们实际上可以开始使用您可能已经阅读过的机器学习算法,例如Naive Bayes或HMM。

    2. 参数:我们可以做的是估算那些算法的参数,并使用这些参数将算法应用到新的数据集中。

    3. 评估:在该新数据上评估该算法。 [问:我正在使用精确/召回/准确度 - 我应该使用ROC曲线吗?]

    4. 现在,

      我正在尝试解决NE解决方案的一个问题。 详情如下,

      1. 问题陈述:名称实体解析。
      2. 问题陈述详细说明:我必须提取名称实体,然后解决其中存在的歧义。
      3. 我的解决方法: 名称实体通常是消息理解会议(MUC)中定义的单词。 它们带有很少的标签,如人,组织,时间,地点等。 我尝试应用标准序列标记算法,如隐马尔可夫模型(HMM)来提取实体。 这就像标准标记问题。 我没有将手工标记的数据作为训练数据,而是采用如下数据,其中非命名实体被标记为NA(不适用)。
      4. Muhammad / PERS Ali / PERSC(/ NA出生/ NA Cassius / PERS Marcellus / PERSC Clay / PERSC,Jr / NA .; 1月/月17 / DT,1942 / YR - 6月/ MONTH 3 / DT,2016 / YR)/ NA / NA / NA美国/ NA奥林匹克/ ORG和/ NA专业/ NA拳击手/ NA和/ NA活动家/ NA ./NA

        随着NE的提取,我的第二个任务是解析实体。 要解决我采取以下方法。 (1)我确定了我必须解决的实体。我试图解决他们的含糊之处。 (2)我采用了其他关系实体,如并置,说明性名词短语,权威名词短语,     类似的字符串,别名和代名词。我试图解决歧义问题。 (3)我试图使用标准的朴素贝叶斯分类器。一般做法是使用决策树分类器。

        HMM和Naive Bayes是这里使用的两种不同模型。 两者的培训和测试数据都不同。

        NER的应用程序数据作为应用程序数据传递给分类器。 也就是说,我可以解析我正在提取的每个实体。

        我把分类器的准确性作为系统的准确性。

        我在MS-Windows和Natural Language Toolkit(NLTK)上使用Python2.x作为实现它的标准库。

        我与同行讨论了问题和解决方法,他们说没关系。 问:这个论坛是一个专家论坛,所以你也可以发表评论。 我喜欢学习更好的东西。

        现在,我试图根据Leek的ML方法修改我的问题。

        问题:可以解压缩命名实体并解决它们吗?

        输入数据:此处输入数据是实体提取的英语原始文本。             无实体解析的输入数据。

        特征:手动标记的训练语料库作为HMM标记的NE标准。           NB分类器的别名,代名词,歧义等类的数据。           手动选择,取自训练数据,但未进行交叉验证。

        算法:用于提取HMM;解决方案NB。            个人研究和同行建议。

        参数:标记/分类是参数估计的任务。

        评估:对测试数据的算法评估。 [如果我采用ROC曲线,我已经采用了精确/召回/准确度?]

        问。我解释得很好吗?

1 个答案:

答案 0 :(得分:1)

  

我应该如何选择功能?

功能选择可以通过多种方式完成:

  • 您可以拥有专业知识并了解哪些功能有用,
  • 你可能有很多功能而且不知道什么是有用的,
  • 介于两者之间

深度学习方法(神经网络)倾向于简单地使用所有合理的功能,让网络决定什么是有用的。还有降维技术,如PCA和LDA,它们可以帮助您获得更低维度的特征向量。

  

我应该对每种尺寸的数据使用交叉验证还是仅针对小数据?

交叉验证(与固定的训练和测试集相比)用于使训练和测试数据的选择的影响更小。如果你有一个巨大的测试集,影响力已经很小了。但是什么是"巨大的"取决于具体情况。

如果可能,我会使用10倍交叉验证,如果您的特定任务没有给出固定的训练和测试集(例如,对于MNIST,已经给出了测试集)。