吴恩达机器学习-C1W3L3-逻辑回归之决策边界

目标

在本实验室:

  • 绘制逻辑回归模型的决策边界。这会让你更好地理解模型的预测。
import numpy as np
%matplotlib widget
import matplotlib.pyplot as plt
from lab_utils_common import plot_data, sigmoid, draw_vthresh
plt.style.use('./deeplearning.mplstyle')

数据集

假设你有以下训练数据集

  • 输入变量X是一个numpy数组,它有6个训练样本,每个样本有两个特征
  • 输出变量y也是一个包含6个示例的numpy数组,y为0或1
X = np.array([[0.5, 1.5], [1,1], [1.5, 0.5], [3, 0.5], [2, 2], [1, 2.5]])
y = np.array([0, 0, 0, 1, 1, 1]).reshape(-1,1) 

绘制数据

让我们使用一个辅助函数来绘制这些数据。标签为 y = 1 y=1 y=1的数据点显示为红色叉,而标签为 y = 0 y=0 y=0的数据点显示为蓝色圆。

fig,ax = plt.subplots(1,1,figsize=(4,4))
plot_data(X, y, ax)

ax.axis([0, 4, 0, 3.5])
ax.set_ylabel('$x_1$')
ax.set_xlabel('$x_0$')
plt.show()

逻辑回归模型

  • 假设您想在这个数据上训练一个逻辑回归模型,其形式为
    f ( x ) = g ( w 0 x 0 + w 1 x 1 + b ) f(x) = g(w_0x_0+w_1x_1 + b) f(x)=g(w0x0+w1x1+b)
    其中 g ( z ) = 1 1 + e − z g(z) = \frac{1}{1+e^{-z}} g(z)=1+ez1,这是sigmoid函数

  • 假设你训练了模型,得到了参数 b = − 3 , w 0 = 1 , w 1 = 1 b = -3, w_0 = 1, w_1 = 1 b=3,w0=1,w1=1。也就是说,
    f ( x ) = g ( x 0 + x 1 − 3 ) f(x) = g(x_0+x_1-3) f(x)=g(x0+x13)
    (您将在课程中学习如何进一步将这些参数拟合到数据中)

让我们试着通过绘制决策边界来理解这个训练过的模型预测的是什么

逻辑回归和决策边界的复习

  • 回想一下,对于逻辑回归,模型表示为
    f w , b ( x ( i ) ) = g ( w ⋅ x ( i ) + b ) (1) f_{\mathbf{w},b}(\mathbf{x}^{(i)}) = g(\mathbf{w} \cdot \mathbf{x}^{(i)} + b) \tag{1} fw,b(x(i))=g(wx(i)+b)(1)
    其中 g ( z ) g(z) g(z)被称为sigmoid函数,它将所有输入值映射到0到1之间的值:
    g ( z ) = 1 1 + e − z g(z) = \frac{1}{1+e^{-z}} g(z)=1+ez1 w ⋅ x \mathbf{w} \cdot \mathbf{x} wx是向量的点积:
    w ⋅ x = w 0 x 0 + w 1 x 1 \mathbf{w} \cdot \mathbf{x} = w_0 x_0 + w_1 x_1 wx=w0x0+w1x1
  • 我们将模型( f w , b ( x ) f_{\mathbf{w},b}(x) fwb(x))的输出解释为给定 x x x并由 w w w b b b参数化的 y = 1 y=1 y=1的概率。
  • 因此,为了从逻辑回归模型中得到最终的预测( y = 0 y=0 y=0 y = 1 y=1 y=1),我们可以使用下面的启发式-
    • 如果 f w , b ( x ) > = 0.5 f_{\mathbf{w},b}(x) >= 0.5 fwb(x)>=0.5,则预测 y = 1 y=1 y=1
    • if f w , b ( x ) < 0.5 f_{\mathbf{w},b}(x) < 0.5 fw,b(x)<0.5, predict y = 0 y=0 y=0

让我们绘制s型函数,看看 g ( z ) > = 0.5 g(z) >= 0.5 g(z)>=0.5

# Plot sigmoid(z) over a range of values from -10 to 10
z = np.arange(-10,11)

fig,ax = plt.subplots(1,1,figsize=(5,3))
# Plot z vs sigmoid(z)
ax.plot(z, sigmoid(z), c="b")

ax.set_title("Sigmoid function")
ax.set_ylabel('sigmoid(z)')
ax.set_xlabel('z')
draw_vthresh(ax,0)
  • 如您所见,对于 z > = 0 z >=0 z>=0 g ( z ) > = 0.5 g(z) >= 0.5 g(z)>=0.5
  • 对于逻辑回归模型, z = w ⋅ x + b z = \mathbf{w} \cdot \mathbf{x} + b z=wx+b。因此,
    • 如果 w ⋅ x + b > = 0 \mathbf{w} \cdot \mathbf{x} + b >= 0 wx+b>=0,则模型预测 y = 1 y=1 y=1
    • 如果 w ⋅ x + b < 0 \mathbf{w} \cdot \mathbf{x} + b < 0 wx+b<0,则模型预测 y = 0 y=0 y=0

绘图决策边界

现在,让我们回到我们的例子来理解逻辑回归模型是如何进行预测的。

  • 我们的逻辑回归模型是这样的
    f ( x ) = g ( − 3 + x 0 + x 1 ) f(x) = g(-3 + x_0+x_1) f(x)=g(3+x0+x1)

  • 从上面你学到的,你可以看到这个模型预测 y = 1 y=1 y=1如果 − 3 + x 0 + x 1 > = 0 -3 + x_0+x_1 >= 0 3+x0+x1>=0

我们来看看它的图形是怎样的。我们先画 − 3 + x 0 + x 1 = 0 -3 + x_0+x_1 = 0 3+x0+x1=0,也就是 x 1 = 3 − x 0 x_1 = 3 - x_0 x1=3x0

# Choose values between 0 and 6
x0 = np.arange(0,6)

x1 = 3 - x0
fig,ax = plt.subplots(1,1,figsize=(5,4))
# Plot the decision boundary
ax.plot(x0,x1, c="b")
ax.axis([0, 4, 0, 3.5])

# Fill the region below the line
ax.fill_between(x0,x1, alpha=0.2)

# Plot the original data
plot_data(X,y,ax)
ax.set_ylabel(r'$x_1$')
ax.set_xlabel(r'$x_0$')
plt.show()
  • 在上图中,蓝线表示 x 0 + x 1 − 3 = 0 x_0 + x_1 - 3 = 0 x0+x13=0,它应该与x1轴相交于3点(如果我们设置 x 1 x_1 x1 = 3, x 0 x_0 x0 = 0)和x0轴相交于3点(如果我们设置 x 1 x_1 x1 = 0, x 0 x_0 x0 = 3)。
  • 阴影区域表示 − 3 + x 0 + x 1 < 0 -3 + x_0+x_1 < 0 3+x0+x1<0。直线上方的区域 − 3 + x 0 + x 1 > 0 -3 + x_0+x_1 > 0 3+x0+x1>0
  • 阴影区域(线下)的任何点都被分类为y=0。直线上或以上的任何点都被分类为y=1。这条线被称为“决策边界”。
  • 正如我们在讲座中看到的,通过使用高阶多项式项(例如:f(x) = g(x_0^2 + x_1 -1)),我们可以得到更复杂的非线性边界。

祝贺

你已经在逻辑回归的背景下探索了决策边界。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值