我有个简单的问题呀,希望帮忙倒腾下,我搞逻辑回归的时候,后面的正则化怎么用代码实现啊,哈哈,是不是很简单,求指导啊

wgb - 机器学习与数据挖掘从业者

赞同来自: jamesbang fish

我还是没有看懂你想表达什么意思。。。 我按照我的理解说一下吧: 正则化要解决的一个主要问题就是过拟合问题,也就是说我们不希望模型太复杂,导致其在训练集上表现很好,但是在测试集上表现较差。   正则化采取的方法就是对参数进行惩罚,常用的有L1范数(也就是大名鼎鼎的LASSO)、L2范数等。 你的代码中实际上用的是L2范数进行正则化。   至于你所说的“那么他”实际上是一个trade-off的参数(简单的说可以理解为:权衡模型在训练集中的精确度和模型的复杂程度间相对重要程度的一个参数)。   关于“那么他”和reg的具体取值,通常是有一些经验值的,比如说reg=1. ps:按我的理解你所说的reg其实就是“那么他”。    

wgb - 机器学习与数据挖掘从业者

赞同来自: jamesbang

可以说的具体一点么?框红的代码指的是什么?

jamesbang

赞同来自:

逻辑回归中的正则化公式,怎么用代码实现
def costFunctionReg(theta, reg, *args):
    m = y.size
    h = sigmoid(XX.dot(theta))
    
    J = -1.0*(1.0/m)*(np.log(h).T.dot(y)+np.log(1-h).T.dot(1-y)) + (reg/(2.0*m))*np.sum(np.square(theta[1:]))
    
    if np.isnan(J[0]):
        return(np.inf)
    return(J[0])
我看reg不是“那么他”啊,别人用的1代替reg
costFunctionReg(initial_theta, 1, XX, y)

auroralinan

赞同来自:

1/2 * sum(theta[1:]**2)

Robin_TY - PhD@CSU,研究方向:计算机视觉,模式识别

赞同来自:

我觉得你是不是把reg和正则化项搞混了。reg在代码中只是为了权衡损失函数和正则化项,带有reg的那项是正则化项。reg一般是根据经验来取值,属于经验参数。

要回复问题请先登录注册