Haz*_*aza 3 python machine-learning scikit-learn
我最近一直在运行一些线性/逻辑回归模型,我想知道如何为每次迭代输出成本函数。sci-kit LinearRegression中的参数之一是'maxiter',但实际上,您需要查看成本与迭代的关系,以找出该值真正需要的值,即,值得花更多时间进行更多迭代的计算等。
我确定我缺少了一些东西,但我会以为有一种方法可以输出此信息?
提前致谢!
小智 5
当拟合任何估计量时,必须了解是否存在任何迭代(隐含计算成本函数)或解析精确解。
线性回归
实际上,线性回归(即,最小二乘的最小化)不是算法,而是可以使用不同技术解决的最小化问题。那些技术
没有进入这里描述的统计部分的细节:
实际上,至少有三种方法用于计算最小二乘解:法线方程,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-learning开发人员来说,进行错误计算(如果有的话)并不容易。但是,对于LinearRegression我的更多使用和更多使用,成本函数和迭代时间之间的权衡是很容易实现的。
| 归档时间: |
|
| 查看次数: |
3248 次 |
| 最近记录: |