机器学习中的决策边界:概念与逻辑回归中的应用
机器学习中的决策边界:概念与逻辑回归中的应用
在机器学习中,决策边界是分类算法用来区分不同类别数据点的线、面或超平面。这些边界通常是模型的预测规则,用于将特征空间中的点分配到不同的类别。决策边界可以是线性的,也可以是非线性的,取决于数据的分布和所使用的分类算法。
一、决策边界的例子
1.1 线性分类器
如线性回归、逻辑回归、支持向量机(SVM)等,它们使用线性边界。例如,在二维空间中,线性边界是一条直线;在三维空间中,它是一个平面。
1.2 非线性分类器
如决策树、随机森林、神经网络等,它们可以学习到复杂的非线性边界。在二维空间中,这可能是一个曲线;在三维空间中,可能是一个曲面。
二、决策边界的作用
决策边界是模型解释性和可视化的重要组成部分。通过绘制决策边界,我们可以直观地看到模型是如何将数据分为不同类别的。这对于理解模型的行为、发现潜在的错误分类模式以及验证模型的假设都是非常有帮助的。
三、绘制决策边界
在绘制决策边界时,通常需要考虑以下几个步骤:
3.1 选择特征
确定哪些特征对分类至关重要。
3.2 选择或计算边界
对于线性分类器,这通常是简单计算得到的;对于非线性分类器,可能需要使用训练数据来估计。
3.3 绘制边界
在特征空间中绘制决策边界,通常在二维或三维空间中进行。
3.4 标记数据点
将不同类别的数据点用不同的符号或颜色标记。
四、决策边界的优缺点
4.1 优点
决策边界直观地展示了模型的分类能力,有助于理解和验证模型的假设。
4.2 缺点
决策边界可能过于简化,无法准确反映数据的复杂性。此外,决策边界可能不是唯一的,不同的特征选择或参数设置可能导致不同的边界。
五、决策边界的应用
决策边界在许多领域都有应用,例如图像识别、文本分类、医学诊断等。通过绘制决策边界,可以更好地理解模型的工作原理,并指导模型的改进和优化。
六、逻辑回归中的决策边界
6.1 目标
绘制逻辑回归模型的决策边界。这将帮助更好地理解模型正在预测什么。
6.2 导入numpy、matplotlib库
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')
6.3 数据集
假设有以下训练数据集
- 输入变量X是一个NumPy数组,包含6个训练示例,每个示例都有两个特征
- 输出变量y也是一个NumPy数组,包含6个示例,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)
6.4 绘制数据
使用辅助函数来绘制这些数据。标签为𝑦=1的数据点用红色十字表示,而标签为𝑦=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()
6.5 逻辑回归模型
- 假设想在这个数据上训练一个逻辑回归模型,该模型具有以下形式
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(w0 x0 +w1 x1 +b)
其中g ( z ) = 1 1 + e − z g(z) = \frac{1}{1+e^{-z}}g(z)=1+e−z1 ,这是Sigmoid函数 - 假设已经训练了模型,并得到了参数b = − 3 , w 0 = 1 , w 1 = 1 b = -3, w_0 = 1, w_1 = 1b=−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 +x1 −3)
让我们通过绘制其决策边界来尝试理解这个训练好的模型正在预测什么
6.6 复习逻辑回归和决策边界
回想一下,对于逻辑回归,模型可以表示为
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(w⋅x(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+e−z1
并且w ⋅ x \mathbf{w} \cdot \mathbf{x}w⋅x是向量点积:
w ⋅ x = w 0 x 0 + w 1 x 1 \mathbf{w} \cdot \mathbf{x} = w_0 x_0 + w_1 x_1w⋅x=w0 x0 +w1 x1
我们将模型的输出(f w , b ( x ) f_{\mathbf{w},b}(x)fw,b (x))解释为给定𝑥和参数𝑤、𝑏时,𝑦=1的概率
因此,要从逻辑回归模型中得到最终的预测(𝑦=0或𝑦=1),我们可以使用以下启发式方法:
- 如果 𝑓𝐰,𝑏(𝑥)>=0.5,预测𝑦=1
- 如果 𝑓𝐰,𝑏(𝑥)<0.5,预测𝑦=0
让我们绘制Sigmoid函数,看看𝑔(𝑧)>=0.5的地方在哪里
# 在-10到10的范围内绘制Sigmoid(z)
z = np.arange(-10,11)
fig,ax = plt.subplots(1,1,figsize=(5,3))
# 绘制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)
g ( z ) > = 0.5 g(z) >= 0.5g(z)>=0.5的时候,z > = 0 z >=0z>=0
对于逻辑回归模型,z = w ⋅ x + b z = \mathbf{w} \cdot \mathbf{x} + bz=w⋅x+b
- 如果 𝐰⋅𝐱+𝑏>=0,模型预测 𝑦=1
- 如果 𝐰⋅𝐱+𝑏<0,模型预测 𝑦=0
6.7 绘制决策边界
现在,让我们回到我们的例子,以了解逻辑回归模型是如何做出预测的
我们的逻辑回归模型具有以下形式f ( x ) = g ( − 3 + x 0 + x 1 ) f(x) = g(-3 + x_0+x_1)f(x)=g(−3+x0 +x1 )
从您刚才学到的知识中,您可以看到,这个模型预测 𝑦=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_0x1 =3−x0
# 在0到6之间选择值
x0 = np.arange(0,6)
x1 = 3 - x0
fig,ax = plt.subplots(1,1,figsize=(5,4))
# 绘制决策边界
ax.plot(x0,x1, c="b")
ax.axis([0, 4, 0, 3.5])
# 填充线的下方区域
ax.fill_between(x0,x1, alpha=0.2)
# 绘制原始数据
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 = 0x0 +x1 −3=0,它应该在x 1 x1x1轴上与3相交(如果我们设置x 1 x1x1= 3,x 0 x0x0= 0),在x 0 x0x0轴上与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,任何位于阴影区域(在线之下)的点都被分类为 𝑦=0,任何位于或高于线的点都被分类为 𝑦=1,这条线被称为“决策边界”
通过使用更高阶的多项式项(例如:𝑓(𝑥)=𝑔(𝑥20+𝑥1−1),我们可以得到更复杂的非线性边界
6.8 总结
- 探索逻辑回归中的决策边界
- 学习如何在逻辑回归中找到决策边界