【ML09】decision boundary 决策边界

决策边界概念-阈值

说到决策边界,就需要提出阈值的概念,什么是阈值?

阈值的理解可以浅显的认为,相当于一个边界线,大于这个边界线是一个结果,小于这个边界线则是另一个结果。在逻辑回归中,大于这个边界线就是1,小于这个边界线则就是0。

拿 sigmoid 函数举例
g ( x ) = 1 1 + e − x g(x)=\frac1 {1+e^{-x}} g(x)=1+ex1
在这里插入图片描述
x = 0 x=0 x=0 时为 sigmoid function 的决策边界。
即所有 x > 0 x>0 x>0 的部分 g ( x ) = 1 g(x)=1 g(x)=1,所有 x < 0 x<0 x<0 的部分 g ( x ) = 0 g(x)=0 g(x)=0

在这里插入图片描述
python-sigmoid Function 函数图像:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-10,10)
f = []
for i in x:
    f_value = 1/(1+np.exp(-i))
    f.append(f_value)
plt.plot(x, f, c='b', label='function')
plt.title("Sigmoid Function")
plt.ylabel('g(z)')
plt.xlabel('z')
plt.legend()
plt.show()

引用到 逻辑回归

那么逻辑回归的线性边界是多少呢?

先最简单的逻辑回归例子来看:

g ( z ) = 1 1 + e − z g(z)=\frac1 {1+e^{-z}} g(z)=1+ez1, z = 0.5 x + 1 z=0.5x+1 z=0.5x+1
g ( x ) = 1 1 + − ( 0.5 x + 1 ) g(x)=\frac1 {1+^{-(0.5x+1)}} g(x)=1+(0.5x+1)1
在这里插入图片描述
很明显,decision boundary为 z = 0 z=0 z=0 的时候,即 0.5 x + 1 = 0 0.5x+1=0 0.5x+1=0 时。


最后用实例来看

g ( z ) = 1 1 + e − z g(z)=\frac1 {1+e^{-z}} g(z)=1+ez1, z = x 0 + x 1 − 3 z=x_0+x_1-3 z=x0+x13
在这里插入图片描述
python code

import numpy as np
import matplotlib.pyplot as plt

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)

x_0 = []
x_1 = []
x_00 = []
x_11 = []
for i in range(len(X)):
    if y[i]==0:
        x_0.append(X[i,0])
        x_1.append(X[i,1])
    if y[i]==1:
        x_00.append(X[i,0])
        x_11.append(X[i,1])

fig,ax = plt.subplots(1,1,figsize=(4,4))
plt.scatter(x_0, x_1, marker='o', c='b', label='0')
plt.scatter(x_00, x_11, marker='x', c='r', label='1')

ax.set_ylabel('$x_1$')
ax.set_xlabel('$x_0$')
plt.show()

画阈值:
z = x 0 + x 1 − 3 = 0 z=x_0+x_1-3=0 z=x0+x13=0
x 0 + x 1 = 3 x_0+x_1=3 x0+x1=3

在这里插入图片描述

python code

import numpy as np
import matplotlib.pyplot as plt

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)

x_0 = []
x_1 = []
x_00 = []
x_11 = []
for i in range(len(X)):
    if y[i]==0:
        x_0.append(X[i,0])
        x_1.append(X[i,1])
    if y[i]==1:
        x_00.append(X[i,0])
        x_11.append(X[i,1])

fig,ax = plt.subplots(1,1,figsize=(4,4))
plt.scatter(x_0, x_1, marker='o', c='b', label='0')
plt.scatter(x_00, x_11, marker='x', c='r', label='1')

# 画阈值
x = []
f = []
for j in range(0,4):
    x.append(j)
    f_value = 3-j
    f.append(f_value)
plt.plot(x, f, c='g')


ax.set_ylabel('$x_1$')
ax.set_xlabel('$x_0$')
plt.show()

end—>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脚踏实地的大梦想家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值