前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >吴恩达《Machine Learning》精炼笔记 3:回归问题和正则化

吴恩达《Machine Learning》精炼笔记 3:回归问题和正则化

作者头像
红色石头
发布2022-01-20 12:17:38
2070
发布2022-01-20 12:17:38
举报
作者 | Peter

编辑 | AI有道

今天带来第三周课程的笔记:梯度下降与正规方程。

主要讲解的内容包含:

  • 逻辑回归
  • 代价函数
  • 线性回归和逻辑回归的比较
  • 正则化问题

逻辑回归

分类问题

假设预测的变量y是离散的值,需要使用逻辑回归Logistic Regression,LR的算法,实际上它是一种分类算法

二元分类问题

将因变量dependent variable可能属于的两个类分别称为负向类negative class和正向类positive class,因变量y的取值只能在0和1之间,其中0表示负类,1表示正类

假说表示Hypothesis Representation

分类器的输出值在0和1之间,因此,希望找出一个满足某个性质的假设函数,这个性质是它的预测值要在0和1之间

引入一个新的模型:逻辑回归,该模型的输出变量范围始终在0和1之间。逻辑回归模型的假设是:

其中X代表的是特征向量g的逻辑函数,常用的S型函数(上图的右边,sigmoid function)公式为

Python代码实现sigmod激活函数:

代码语言:javascript
复制
import numpy as np


def sigmod(z):
  return 1 / (1 + np.exp(-z))

hθ(x)作用是对于给定的输入变量,根据选择的参数计算输出变量=1的可能性,即:hθ(x)=P(y=1|x;θ)

例如:对于给定的x,通过已经确定的参数计算得出hθ(x)=0.7hθ(x)=0.7,则表示有70%的几率y属于正类

决策边界decision boundary
解释逻辑回归
  1. 在逻辑回归中h≥0.5h≥0.5预测y=1y=1;反之y=0
  2. 在激活函数g(z)g(z)中:

当z≥0z≥0则g(z)≥0.5g(z)≥0.5

当z<0z<0则g(z)<0.5g(z)<0.5

又因为 z=θTx ,即: θTx>=0 时,预测 y=1y=1 ;反之:θTx<0 时,预测 y=0

实例demo

在下图的中实例中,参数θ满足[-3,1,1],当−3+x1+x2≥0,即x1+x2≥3时,模型预测y=1;说明此时:直线x1+x2=3就是决策边界

复杂的模型边界问题

代价函数Cost Function

如何拟合LR模型的参数θ

1. 线性模型中代价函数是模型误差的平方和 :

如果直接使用线性模型中的代价函数,即误差平方和,得到的代价函数是个非凸函数,但是实际上我们期望看的是凸函数(右边)

重新定义逻辑回归的代价函数

将上面的两个式子进行合并:

hθ(x)和Cost(hθ(x),y)之间的关系

根据y的不同取值来进行分别判断,同时需要注意的是:假设函数h的取值只在[0,1]之间

y=1的情形

y=0的情形

Python代码实现代价函数

利用Python实现下面的代价函数

  • first 表示的是右边第一项
  • second 表示的是右边第二项
代码语言:javascript
复制
import numpy as np


def cost(theta, X, y):
  # 实现代价函数


  theta=np.matrix(theta)
  X = np.matrix(X)
  y = np.matrxi(y)


  first = np.multiply(-y, np.log(sigmod(X * theta.T)))
  second = np.multiply((1 - y), np.log(1-sigmod(X * theta.T)))


  return np.sum(first - second) / (len(X))
利用梯度下降来求解LR最小参数

1、LR中的代价函数是 :

2、最终结果:

3、具体过程

不断地迭代更新θj:

如果存在n个特征,也就是θ=[θ0,θ1,…,θn]T。那么就需要根据上面的式子从0-n来更新所有的θ

线性回归 VS 逻辑回归

  1. 假设的定义规则发生变化

线性回归:

逻辑回归:

因此,即使更新参数的规则看起来基本相同,但由于假设的定义发生了变化,所以逻辑函数的梯度下降,跟线性回归的梯度下降实际上是两个完全不同的东西。

其他求解代价函数最小的算法
  • 共轭梯度conjugate gradient
  • 局部优化法Broyden fletcher goldfarb shann,BFGS
  • 有限内存局部优化法LBFGS

多类别分类one-vs-all

我们举一个实际中的例子来说明:

假如现在需要一个学习算法能自动地将邮件归类到不同的文件夹里,或者说可以自动地加上标签,那么需要一些不同的文件夹,或者不同的标签来完成这件事,来区分开来自工作、朋友、家人或者有关兴趣爱好的邮件,那么,就有了这样一个分类问题:其类别有4个,分别用y=1,2,3,4 来代表。

正则化问题Regularization

正则化基础

正则化技术主要是为了解决过拟合的问题。过拟合指的是:对样本数据具有很好的判断能力,但是对新的数据预测能力很差。

  • 第一个模型是一个线性模型,欠拟合,不能很好地适应我们的训练集
  • 第三个模型是一个四次方的模型,过于强调拟合原始数据,而丢失了算法的本质:预测新数据
  • 中间的模型似乎最合适

如果是多项式拟合,x的次数越高,拟合的效果越好,但是相应的预测能力就可能变差。对于过拟合的处理:

  1. 丢弃一些不能正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型选择的算法,例如PCA
  2. 正则化。保留所有的特征,但是减少参数的大小magnitude*
加入正则化参数

在模型hθ(x)=θ0+θ1x1+θ2x2+θ3x3+θ4x4中,主要是高次项产生的过拟合问题:

加入正则化参数后能够防止过拟合问题,其中λλ是正则化参数Regularization Parameter

那么,相应的代价函数变成为:

Attention:

  • 一般地,不对θ0进行惩罚;加上正则化参数实际上是对参数θ进行惩罚。经过正则化处理后的模型和原模型的对比:
  • 如果λ过大,所有的参数最小化,模型变成了hθ(x)=θ0,造成了过拟合
正则化线性回归Regularized Linear Regression

正则化线性回归的代价函数:

Attention:在线性回归中,不对θ0进行正则化:

当j=1,2,…,n时:

调整下变成:

正则化逻辑回归Regularized Logistic Regression

LR问题两种优化方法:

  • 梯度下降法
  • 更高级优化算法

加上正则惩罚项后的代价函数为:

python代码实现
代码语言:javascript
复制
import numpy as np


# 实现代价函数
def costReg(theta, X, y, lr):
  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 = (lr / (2 * len(X)) * np.sum(np.power(theta[:, 1:theta.shape[1]], 2))   # theta[:, 1:theta.shape[1]] 代表的是 \theta_j
  return np.sum(first - second) / len((X)) + reg

通过求导,得到梯度下降算法,本质上就是对θ的不断更新:

至此,第三周的课程笔记完毕!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-10-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 逻辑回归
    • 分类问题
      • 假说表示Hypothesis Representation
        • 决策边界decision boundary
        • 代价函数Cost Function
          • 如何拟合LR模型的参数θ
            • Python代码实现代价函数
              • 利用梯度下降来求解LR最小参数
              • 线性回归 VS 逻辑回归
                • 其他求解代价函数最小的算法
                  • 多类别分类one-vs-all
                    • 正则化基础
                    • 加入正则化参数
                    • 正则化线性回归Regularized Linear Regression
                    • 正则化逻辑回归Regularized Logistic Regression
                    • python代码实现
                • 正则化问题Regularization
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档