2011-04-14 123 views
2

我目前正在研究一个项目,关于基于植物的分割的地理区域,每个植物生长在多个重要层上(也就是说,每个分割层的含义是唯一的其他图层)分类逻辑回归,库

这样做,我们使用逻辑回归从区域列表中去,它们在每个图层中属于它们的片段,它们包含哪些植物,植物生长的概率段的每个组合。目前,我们正在使用SPSS,链接到分割的C#实现。

到目前为止,这么好。问题是,SPSS在寒冷的日子里就像糖蜜一样缓慢。对于整套(2500个工厂和565个地区),单次运行需要大约半个月的时间。那是我们没有的时间,所以现在我们使用缩略数据集,但即使这样也需要几个小时。

我们通过逻辑回归(特别是Accord.NET和Extreme Optimization)研究了其他图书馆,但都没有分类逻辑回归。

在这一点上,我应该指定我的意思是分类逻辑回归。鉴于数据集中的每一行我们都向统计引擎提供了每个图层的变量,而对于我们目前感兴趣的工厂则有一个变量,图层变量的值被视为类别。 0不好或差于1,它只是不同而已。我们想要的统计引擎是每个图层变量的每个类别的值(当然还有一个截距),所以在一个包含3段和1段2段的图层的设置中,我们会得到5值和截距。

我应该注意到我们已经在Accord.NET(它必须在库之外完成)和Extreme Optimization(它有一些库中支持它)的情况下进行了虚拟或指示变量的实验,但是这并没有产生必要的结果。

TL; DR

所以,长话短说,没有人知道在C#中分类Logistic回归一个很好的解决方案呢?这可以是一个类库,或者只是一个插入外部统计引擎的接口,只要它稳定且合理快速即可。

+0

您能更清楚地了解您使用的模型吗?您提到的5个值可以解释为2 + 3或2 * 3-1 ... – 2011-09-29 03:29:13

回答

0

使用分类输入变量生成逻辑回归的标准方法是将分类变量转换为虚拟变量。因此,只要您对输入数据执行适当的转换,就应该能够使用您在问题中提到的任何逻辑回归库。

从一个具有n个类别的分类变量到n-1个数字虚拟变量的映射称为对比。 This post进一步解释了如何将对比放在一起。

请注意,虚拟变量的数量少于类别值的数量1。如果您尝试为每个类别值使用一个虚拟变量,您会发现最后一个虚拟变量不独立于前面的虚拟变量,并且如果尝试将回归模型拟合到它,您将会收到错误(或无意义的系数)。因此,以具有截距,3级分类输入变量和2级分类输入变量的模型为例,学习者的数量将是1 +(3-1)+(2-1) = 4.