python实现根据已有数据集,使用最大似然估计法,估计逻辑回归模型的参数
时间: 2023-06-16 13:06:11 浏览: 95
逻辑回归模型参数的最大似然估计可以使用梯度下降算法进行求解。以下是实现的步骤:
1. 定义逻辑回归模型:假设样本数据为 $(x_i, y_i)$,其中 $x_i$ 为特征向量,$y_i$ 为标签,逻辑回归模型可以表示为:
$$
P(y_i=1 | x_i, \theta) = \frac{1}{1+\exp(-\theta^Tx_i)}
$$
其中 $\theta$ 为需要估计的模型参数。
2. 定义似然函数:假设样本数据独立同分布,那么似然函数可以表示为:
$$
L(\theta) = \prod_{i=1}^n P(y_i | x_i, \theta) = \prod_{i=1}^n \left(\frac{1}{1+\exp(-\theta^Tx_i)}\right)^{y_i} \left(1-\frac{1}{1+\exp(-\theta^Tx_i)}\right)^{1-y_i}
$$
3. 定义对数似然函数:为了方便求解,通常将似然函数取对数得到对数似然函数:
$$
\begin{aligned}
l(\theta) &= \log L(\theta) \\
&= \sum_{i=1}^n \left(y_i\log\left(\frac{1}{1+\exp(-\theta^Tx_i)}\right) + (1-y_i)\log\left(1-\frac{1}{1+\exp(-\theta^Tx_i)}\right)\right) \\
&= \sum_{i=1}^n \left(y_i\theta^Tx_i - \log(1+\exp(\theta^Tx_i))\right)
\end{aligned}
$$
4. 求解模型参数:对数似然函数的极大值即为需要估计的模型参数的最优解。使用梯度下降算法对对数似然函数进行优化,更新模型参数:
$$
\theta_j = \theta_j + \alpha \sum_{i=1}^n \left(y_i - \frac{1}{1+\exp(-\theta^Tx_i)}\right)x_{ij}
$$
其中,$j$ 表示需要更新的模型参数,$\alpha$ 表示学习率,$x_{ij}$ 表示样本 $i$ 的第 $j$ 个特征。
下面是一个基于 Python 的示例代码:
```python
import numpy as np
def sigmoid(x):
return 1 / (1 + np.exp(-x))
def gradient_descent(X, y, alpha=0.01, max_iter=1000):
n, d = X.shape
theta = np.zeros((d, 1))
for i in range(max_iter):
pred = sigmoid(X @ theta)
gradient = X.T @ (y - pred)
theta += alpha * gradient
return theta
# 示例代码
X = np.array([[1, 2], [3, 4], [5, 6]])
y = np.array([[0], [1], [0]])
theta = gradient_descent(X, y)
print(theta)
```
在示例代码中,`sigmoid` 函数表示逻辑回归模型中的 Sigmoid 函数,`gradient_descent` 函数表示使用梯度下降算法进行模型参数估计的过程。其中,`X` 表示样本特征矩阵,`y` 表示样本标签矩阵,`alpha` 表示学习率,`max_iter` 表示最大迭代次数。最后,函数返回估计得到的模型参数 $\theta$。
阅读全文