我正在研究MNIST digit recognizer数据集
在这里,我有10个类标签,我希望构建和比较所有类对,即运行10c2逻辑回归模型并进行比较。我知道我可以用
combn(unique(mnist$label), 2, function(x) , simplify = TRUE)
在循环中并在函数中写入模型。但是,我卡在这里。
loglist <- list()
for(i in unique(mnist$label)){
tmp <- try(append(loglist, glm(label~.,family=binomial(link=logit),
data = mnist[mnist$label == i, ])))
if (class(tmp) != "try-error") loglist <- append(loglist, tmp)
}
任何帮助或建议都会有很大的帮助,谢谢。
答案 0 :(得分:0)
对于多个(在您的情况下为10个)类中,有三种方法可以使用逻辑回归模型。
这两种方法对wiki有很好的解释,并且由Andrew NG提供了很好的video lecture。
另一种方法是使用 Softmax回归,可以在给定链接找到A good tutorial。该模型将逻辑回归推广到分类问题,其中类标签y可以采用两个以上的可能值。
那么,在以下时使用哪种模式:
这取决于这四个类是否相互排斥。 例如,如果您的四个班级是古典,乡村,摇滚和 爵士乐,然后假设您的每个训练样例都标有 正是这四个类标签中的一个,你应该建立一个softmax 分类
但是,如果您的类别是has_vocals,舞蹈,配乐,流行音乐, 那些课程不是互相排斥的;例如,可以 一首流行音乐,来自配乐,另外还有 主唱。在这种情况下,构建4个二进制文件会更合适 逻辑回归分类器。这样,对于每一件新的音乐作品, 你的算法可以分别决定它是否属于每个 四类。