首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CRF++时,MIRA适用于我,但CRF-L1和CRF-L2不适用

使用CRF++时,MIRA适用于我,但CRF-L1和CRF-L2不适用
EN

Stack Overflow用户
提问于 2013-04-26 23:52:37
回答 2查看 1.3K关注 0票数 1

这可能无关紧要,但我使用的是CRF++ 0.58的windows发行版。

因此,我已经成功地使用mallet训练了一个具有CRF的模型,然后对其进行了测试。当我尝试在CRF++中使用相同的训练和测试文件时(并且在创建模板文件之后),我得到一个

代码语言:javascript
复制
The line search routine mcsrch failed: error code:0

当我使用以下任一选项时出错

代码语言:javascript
复制
-a CRF-L1

或缺省设置

代码语言:javascript
复制
-a CRF-L2

当我使用

代码语言:javascript
复制
-a MIRA

尽管如此,训练没有错误,测试也是如此。

对于mallet和crf++,测试和训练数据的格式可以是相同的,所以这不是问题所在。我的模板文件很简单,就像

代码语言:javascript
复制
#Mixed
M00:%x[0,0]
M01:%x[0,1]
M02:%x[0,2]
......
M12:%x[0,12]

在我的训练数据中,我的最后一列要么是0,要么是1,这是用于分类的值。在我的任何功能中都没有空格,我在必要时使用下划线。我是不是遗漏了一些简单的东西,什么会导致L1和L2正则化像这样失败?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-27 00:34:12

我就知道这是件很愚蠢的事。

要使用我正在使用的功能,您需要使用U前缀(就像在Unigram中一样)。所以,就像U00:%x[0,0]是很好的。你不能随心所欲地叫你的特性。

我还发现,如果我将测试数据简化为一句话,我会得到相同的错误消息。当我将测试数据恢复到大约2600个句子的原始大小时,正则化算法现在运行。在各种nlp和ml应用程序中,过度拟合是导致此错误消息的常见原因,但在我的情况下,这并不是真正的问题。

票数 1
EN

Stack Overflow用户

发布于 2014-11-27 18:22:42

在只有一个类的数据集的极端情况下(由于训练集生成过程中的错误),也可能发生这种情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16240504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档