作为一个培训项目,我被要求编写一个多项式逻辑回归Python程序,在数据集上运行它,并将其与“标准”逻辑回归程序进行比较。
数据集(经过我自己的格式化和编码后)由3175个二进制序列组成,每个序列的长度为240。共有三类,我将其编码为[1,0,0],[0,1, 0]和[0,0,1]。目标是建立逻辑回归模型,以预测任何给定序列的类别。更具体地说,模型将采用以下形式:
$(e ^ {\ theta \ cdot x} / d,e ^ {\ mu \ cdot x} / d,1 / d)$ 其中$ d = e ^ {\ theta \ cdot x} + e ^ {\ mu \ cdot x} + 1 $ 和$ \ theta,\ mu $是参数向量
我想找到最小化以下成本函数的$ \ theta,\ mu $
$ \ Sum_i -y_i ^ 0 log(p_0(x_i))-y_i ^ 1 log(p_1(x_i))-y_i ^ 2 log(p_2(x_i))$ 其中y_i ^ j是第i个序列是否在类j中的指示符 p_j(x_i)是第i个序列在类j中的概率(根据模型)
我用来比较程序的标准是来自Pytorch。
这是我想到的最简单的方法:
我运行了10,000次代码迭代。大约花了4天18小时。我最终得到的参数值产生了0.367的成本,准确度(使用模型进行分类的可能性最大的时间比例是真实分类)为95.5%。
我认为那可能已经足够了;但是后来我运行了Pytorch逻辑回归程序。在短短几分钟内,它产生的参数值的成本为0.0488,准确度为98.3%。我的主管不满意,希望我写一个更好的程序。
我认为我不能独自写出像Pytorch一样高效的东西。据推测,他只是希望我将性能差异的数量级从4+降低到更受人尊敬的水平(也许是2?)。但是我不确定该怎么做。请给我一些建议吗?
谢谢