吴恩达机器学习--线性/逻辑回归正则化

正则化线性回归、逻辑回归

文章目录

    • 正则化线性回归、逻辑回归
      • 1、正则化线性回归
      • 2、正则化的逻辑回归模型

1、正则化线性回归

对于线性回归的求解,我们之前推导了两种学习算法:一种基于梯度下降,一种基于正规方程。

正则化线性回归的代价函数为:
在这里插入图片描述
如果我们要使用梯度下降法令这个代价函数最小化,因为我们未对theta0进行正则化,所以梯度下降算法将分两种情形:
吴恩达机器学习--线性/逻辑回归正则化_第1张图片
对上面的算法中j=1,2,…,n 时的更新式子进行调整可得:
在这里插入图片描述
可以看出,正则化线性回归的梯度下降算法的变化在于,每次都在原有算法更新规则的基础上令theta值减少了一个额外的值。

我们同样也可以利用正规方程来求解正则化线性回归模型,方法如下所示:
吴恩达机器学习--线性/逻辑回归正则化_第2张图片
图中的矩阵尺寸为 (n+1)*(n+1)。如:当n=2时为[[0,0,0][0,1,0][0,0,1]]

2、正则化的逻辑回归模型

针对逻辑回归问题,我们在之前的课程已经学习过两种优化算法:我们首先学习了使用梯度下降法来优化代价函数J(theta),接下来学习了更高级的优化算法,这些高级优化算法需要你自己设计代价函数J(theta)
吴恩达机器学习--线性/逻辑回归正则化_第3张图片
自己计算导数同样对于逻辑回归,我们也给代价函数增加一个正则化的表达式,得到代价函数:
在这里插入图片描述

import numpy as np
def costReg(theta, X, y, learningRate):  # learningRate是正则化参数
    theta = np.matrix(theta)
    X = np.matrix(X)
    y = np.matrix(y)
    first = np.multiply(-y, np.log(sigmoid(X*theta.T)))
    second = np.multiply((1 - y), np.log(1 - sigmoid(X*theta.T)))
    reg = (learningRate / (2 * len(X))* np.sum(np.power(theta[:,1:theta.shape[1]],2))  # j=0不参与计算
    return np.sum(first - second) / (len(X)) + reg

要最小化该代价函数,通过求导,得出梯度下降算法为:
吴恩达机器学习--线性/逻辑回归正则化_第4张图片
注:看上去同线性回归一样,但是知道
在这里插入图片描述
,所以与线性回归不同。
Octave 中,我们依旧可以用 fminuc 函数来求解代价函数最小化的参数,值得注意的是参数theta0的更新规则与其他情况不同。 注意:

1、虽然正则化的逻辑回归中的梯度下降和正则化的线性回归中的表达式看起来一样,但由于两者的h(x)不同所以还是有很大差别。
2、theta0不参与其中的任何一个正则化。

目前大家对机器学习算法可能还只是略懂,但是一旦你精通了线性回归、高级优化算法和正则化技术,坦率地说,你对机器学习的理解可能已经比许多工程师深入了。现在,你已经有了丰富的机器学习知识,目测比那些硅谷工程师还厉害,或者用机器学习算法来做产品。

接下来的课程中,我们将学习一个非常强大的非线性分类器,无论是线性回归问题,还是逻辑回归问题,都可以构造多项式来解决。你将逐渐发现还有更强大的非线性分类器,可以用来解决多项式回归问题。我们接下来将将学会,比现在解决问题的方法强大N倍的学习算法。

你可能感兴趣的:(深度学习,机器学习,深度学习,逻辑回归)