我最近一直在运行一些线性/逻辑回归模型,我想知道如何为每次迭代输出成本函数。sci-kit LinearRegression中的参数之一是'maxiter',但实际上,您需要查看成本与迭代的关系,以找出该值真正需要的值,即,值得花更多时间进行更多迭代的计算等。
我确定我丢失了一些东西,但我会以为有一种方法可以输出此信息?
提前致谢!
当拟合任何估计量时,必须了解是否存在任何迭代(隐含计算成本函数)或解析精确解。
线性回归
实际上,线性回归(即,最小二乘的最小化)不是一种算法,而是可以使用不同技术解决的最小化问题。那些技术
实际上,至少有三种方法用于计算最小二乘解:法线方程,QR分解和奇异值分解。
就我进入代码的细节而言,似乎计算时间涉及到获得解析精确解,而不是遍历成本函数。但是我敢打赌,它们取决于您的系统确定不足,确定或过度确定,以及所使用的语言和库。
逻辑回归
线性回归,logistic回归是最小化问题,可以使用不同的技术,对于scikit学习,是可以解决:newton-cg
,lbfgs
,liblinear
和sag
。正如您所提到的,sklearn.linear_model.LogisticRegression
包含max_iter
参数,这意味着它包含迭代*。之所以可以控制这些变量,是因为更新后的参数不再更改-直到某个epsilon值-或因为它达到了最大迭代次数。
*如文档中所述,它仅包括某些求解器的迭代
仅对牛顿cg,sag和lbfgs求解器有用。求解程序收敛所需的最大迭代次数。
实际上,每个求解器都涉及其自己的实现,例如此处的liblinear
求解器。
我建议使用该verbose
参数,也许等于2
或3
获取最大值。根据求解器的不同,它可能会显示成本函数错误。但是,我不明白您打算如何使用此信息。
另一个解决方案可能是编写您自己的求解器,并在每次迭代时打印成本函数。
好奇心杀死了猫,但我检查了scikit的源代码,其中涉及更多内容。
首先,sklearn.linear_model.LinearRegression
使用拟合训练其参数。
最后,Numpy的最小二乘函数使用函数scipy.linalg.lapack.dgelsd
,它是对DGELSD
用Fortran(source)编写的LAPACK(线性代数打包)函数的包装。
也就是说,对于scikit学习者来说,进行错误计算(如果有的话)并不容易。但是,对于LinearRegression
我的更多使用以及更多的使用,成本函数和迭代时间之间的权衡是很容易实现的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句