数据结构与算法之逻辑回归 数学原理 Sigmoid 函数 / 决策边界 推导

数据结构与算法阿木 发布于 10 天前 3 次阅读


摘要:

逻辑回归是一种广泛应用于分类问题的统计方法。本文将围绕逻辑回归的数学原理,特别是Sigmoid函数和决策边界的推导,进行详细阐述。通过代码实现,我们将深入理解逻辑回归的核心概念,并探讨其在实际应用中的重要性。

一、

逻辑回归是一种基于最大似然估计的统计模型,用于预测一个二元变量的概率。在机器学习中,逻辑回归常用于二分类问题,如垃圾邮件检测、疾病诊断等。本文将重点介绍逻辑回归的数学原理,并通过Sigmoid函数和决策边界的推导,展示逻辑回归的实现过程。

二、逻辑回归的数学原理

1. 概率与对数概率

在逻辑回归中,我们通常使用概率来表示某个事件发生的可能性。对于二分类问题,事件可以是“是”或“否”。概率可以用以下公式表示:

[ P(Y = y | X = x) = frac{1}{1 + e^{-theta^T x}} ]

其中,( P(Y = y | X = x) ) 表示在给定特征 ( X ) 的情况下,事件 ( Y ) 发生的概率;( theta ) 是模型的参数向量;( e ) 是自然对数的底数。

对数概率是概率的对数形式,它在最大似然估计中非常有用。对数概率公式如下:

[ log P(Y = y | X = x) = theta^T x - log(1 + e^{-theta^T x}) ]

2. 最大似然估计

最大似然估计是一种参数估计方法,用于找到使数据出现的概率最大的参数值。在逻辑回归中,我们使用最大似然估计来估计模型参数 ( theta )。

对于给定的数据集 ( D = { (x_1, y_1), (x_2, y_2), ldots, (x_n, y_n) } ),最大似然函数 ( L(theta) ) 可以表示为:

[ L(theta) = prod_{i=1}^{n} P(y_i | x_i) ]

对数似然函数 ( log L(theta) ) 为:

[ log L(theta) = sum_{i=1}^{n} log P(y_i | x_i) ]

为了找到使 ( log L(theta) ) 最大的 ( theta ),我们对 ( theta ) 进行梯度下降。

三、Sigmoid函数

Sigmoid函数是逻辑回归中的核心函数,它将线性组合 ( theta^T x ) 转换为概率值。Sigmoid函数的定义如下:

[ sigma(z) = frac{1}{1 + e^{-z}} ]

Sigmoid函数的图形是一个S形曲线,其值域在0到1之间。当 ( z ) 为正数时,( sigma(z) ) 接近1;当 ( z ) 为负数时,( sigma(z) ) 接近0。

四、决策边界

决策边界是逻辑回归模型中用于区分不同类别的边界。在二分类问题中,决策边界通常是一条直线。对于给定的特征 ( X ),决策边界可以表示为:

[ theta^T x = gamma ]

其中,( gamma ) 是决策阈值。

当 ( theta^T x > gamma ) 时,模型预测 ( Y = 1 );当 ( theta^T x < gamma ) 时,模型预测 ( Y = 0 )。

五、代码实现

以下是一个简单的逻辑回归实现,包括Sigmoid函数和决策边界的推导:

python

import numpy as np

Sigmoid函数


def sigmoid(z):


return 1 / (1 + np.exp(-z))

逻辑回归模型


class LogisticRegression:


def __init__(self, learning_rate=0.01, iterations=1000):


self.learning_rate = learning_rate


self.iterations = iterations


self.weights = None


self.bias = None

def fit(self, X, y):


num_samples, num_features = X.shape


self.weights = np.zeros(num_features)


self.bias = 0

for _ in range(self.iterations):


model_output = sigmoid(np.dot(X, self.weights) + self.bias)


error = y - model_output

self.weights += self.learning_rate np.dot(X.T, error)


self.bias += self.learning_rate np.sum(error)

def predict(self, X):


model_output = sigmoid(np.dot(X, self.weights) + self.bias)


y_pred = [1 if i > 0.5 else 0 for i in model_output]


return y_pred

示例数据


X = np.array([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]])


y = np.array([0, 0, 1, 1, 1])

创建逻辑回归模型并训练


model = LogisticRegression()


model.fit(X, y)

预测


predictions = model.predict(X)


print(predictions)


六、结论

本文通过数学原理和代码实现,详细介绍了逻辑回归的核心概念,包括Sigmoid函数和决策边界的推导。逻辑回归是一种强大的分类方法,在机器学习领域有着广泛的应用。通过理解其数学原理和实现过程,我们可以更好地应用逻辑回归解决实际问题。