逻辑回归(Logistic Regression)

逻辑回归(Logistic Regression)的详细理论知识推导

逻辑回归(Logistic Regression)是一种广泛用于二分类问题的线性模型。它的目标是找到一个函数,将输入特征映射到(0, 1)之间的概率值,以预测目标变量的分类。

逻辑回归模型

逻辑回归模型的目标是找到线性决策边界。其假设函数形式为:

代价函数(Cost Function)

逻辑回归的代价函数基于对数似然函数,表示为:

梯度下降(Gradient Descent)

使用梯度下降法优化参数:

实施步骤

数据预处理:标准化或归一化数据。

标准化(Standardization)

标准化的目的是将数据转换成均值为0,标准差为1的正态分布数据。标准化的公式为:

推理过程

归一化(Normalization)

归一化的目的是将数据缩放到指定的范围(通常是[0,1])。归一化的常见公式有两种:

推理过程

通过归一化,数据被缩放到指定范围内(例如[0,1]),这使得不同特征的数据具有相同的尺度,适用于基于梯度的优化算法,如神经网络等。

import numpy as np
from sklearn.preprocessing import StandardScaler, MinMaxScaler

# 生成示例数据
data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])

# 标准化
scaler_standard = StandardScaler()
standardized_data = scaler_standard.fit_transform(data)
print("标准化数据:\n", standardized_data)

# 归一化
scaler_minmax = MinMaxScaler()
normalized_data = scaler_minmax.fit_transform(data)
print("归一化数据:\n", normalized_data)

拆分数据集:将数据集拆分为训练集和测试集。
模型训练:使用逻辑回归模型进行训练。
模型评估:使用测试集评估模型性能。

参数解读

penalty:指定正则化类型('l1', 'l2', 'elasticnet', 'none')。
C:正则化强度的倒数,较小的值表示更强的正则化。
solver:优化算法('newton-cg', 'lbfgs', 'liblinear', 'sag', 'saga')。
max_iter:最大迭代次数。
tol:优化的容差。

未优化模型实例

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

# 生成示例数据
np.random.seed(0)
X = np.random.rand(100, 2)
y = (X[:, 0] + X[:, 1] > 1).astype(int)

# 数据分割为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 数据标准化
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

# 创建逻辑回归模型
log_reg = LogisticRegression()
log_reg.fit(X_train_scaled, y_train)

# 进行预测
y_pred = log_reg.predict(X_test_scaled)

# 模型评估
accuracy = accuracy_score(y_test, y_pred)
conf_matrix = confusion_matrix(y_test, y_pred)
class_report = classification_report(y_test, y_pred)

print(f"Accuracy: {accuracy}")
print("Confusion Matrix:")
print(conf_matrix)
print("Classification Report:")
print(class_report)

# 可视化结果
plt.scatter(X_test_scaled[:, 0], X_test_scaled[:, 1], c=y_pred, cmap='bwr', alpha=0.7)
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.title("Logistic Regression (Unoptimized)")
plt.show()

结果

可视化展示

结果解释

  • Accuracy: 准确率,表示模型在测试集上的分类正确率。
  • Confusion Matrix: 混淆矩阵,显示分类结果的详细信息。
  • Classification Report: 分类报告,显示精确度、召回率和F1得分。

优化后的模型实例

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import GridSearchCV
# 生成示例数据
np.random.seed(0)
X = np.random.rand(100, 2)
y = (X[:, 0] + X[:, 1] > 1).astype(int)

# 数据分割为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 数据标准化
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

# 创建逻辑回归模型
log_reg = LogisticRegression()
log_reg.fit(X_train_scaled, y_train)

# 进行预测
y_pred = log_reg.predict(X_test_scaled)
# 定义参数网格
param_grid = {
    'C': [0.01, 0.1, 1, 10, 100],
    'solver': ['newton-cg', 'lbfgs', 'liblinear']
}

# 创建带网格搜索的逻辑回归模型
log_reg_cv = GridSearchCV(LogisticRegression(), param_grid, cv=5)
log_reg_cv.fit(X_train_scaled, y_train)

# 进行预测
y_pred_cv = log_reg_cv.predict(X_test_scaled)

# 模型评估
accuracy_cv = accuracy_score(y_test, y_pred_cv)
conf_matrix_cv = confusion_matrix(y_test, y_pred_cv)
class_report_cv = classification_report(y_test, y_pred_cv)

print(f"Best Parameters: {log_reg_cv.best_params_}")
print(f"Accuracy (CV): {accuracy_cv}")
print("Confusion Matrix (CV):")
print(conf_matrix_cv)
print("Classification Report (CV):")
print(class_report_cv)

# 可视化结果
plt.scatter(X_test_scaled[:, 0], X_test_scaled[:, 1], c=y_pred_cv, cmap='bwr', alpha=0.7)
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.title("Logistic Regression (Optimized)")
plt.show()

结果展示

可视化展示

结果解释

  • Best Parameters: 通过网格搜索选择的最佳参数。
  • Accuracy (CV): 交叉验证后的准确率。
  • Confusion Matrix (CV): 交叉验证后的混淆矩阵。
  • Classification Report (CV): 交叉验证后的分类报告。

通过比较两个实例,可以看出优化后的模型通过网格搜索选择了最佳的超参数,从而提高了模型的预测性能和泛化能力。

  • 21
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Logistic回归是一种逻辑回归方法。它是一种特殊的回归方法,用于对于分类问题中的因变量建立预测模型。这种方法基于学习一个由输入变量到二元输出变量的条件概率来构建预测模型,用于对一个新的样本进行分类。它对于分类问题中的因变量建立预测模型非常有效。 ### 回答2: 逻辑回归是一种用于解决二分类问题的监督学习算法。它是一种基于概率统计的分类模型,可以用于预测分类结果。逻辑回归的输出结果是一个0到1之间的概率值,其含义是该样本属于某一类别的概率。 逻辑回归模型的基本假设是数据服从伯努利分布,也就是数据只有两种可能的取值,被称为正类和负类。对于给定的训练数据集,逻辑回归模型的目标是最大化似然函数,即最大化样本属于正类(或负类)的概率。利用最大似然估计方法,我们可以求解出逻辑回归模型的参数。在实际应用中,我们通常使用梯度下降等优化算法来求解模型参数。 逻辑回归模型有多种变体,如L1正则化逻辑回归、L2正则化逻辑回归、多项式逻辑回归等。其中,L1正则化逻辑回归可以实现特征选择,可以削减一些不重要的特征,从而简化模型,提高计算速度和模型的泛化能力。 在机器学习领域,逻辑回归是一个常用的模型。它广泛应用于各种领域,如网络广告点击率预测、信用风险评估、医疗诊断等。逻辑回归模型简单易实现,具有较高的解释性,是一个较为理想的分类算法。 ### 回答3: 逻辑回归Logistic Regression)是一种经典的分类算法,在机器学习和统计学领域中得到广泛的应用。它旨在从已有的数据中构建一个能够预测类别的模型,输出结果为概率值,可以用于二分类或多分类问题的解决。 逻辑回归的基本原理是利用一个特定的函数对输入特征进行线性组合,然后将结果输入到一个Sigmoid函数中进行映射,将结果值压缩到0到1的范围内,表示输入属于某一类别的概率。这个Sigmoid函数可以被看作是一个阀门,控制着数据流向最终输出。它将具有很强预测能力的线性组合函数输出转化为概率输出的过程,将出现在中间层的结果值映射到[0,1]范围内,以表达某个样本属于某个类别的概率。 在训练模型时,逻辑回归使用的是最大似然估计的方法来确定模型的参数。在分类训练数据时,需要对样本经过一系列的处理,例如特征提取、特征转换、数据归一化等步骤。训练数据可以通过梯度下降法、牛顿迭代法等优化方法来确定最佳参数。通过此训练过程,模型可以学习到输入特征与输出概率之间的映射关系。 逻辑回归的优点包括了功能简单、速度快、易于实现和修改等等。它是机器学习中最为基本的分类算法之一,在数据挖掘、信用评估、自然语言处理、广告推荐等领域都有广泛的应用。逻辑回归作为一个二分类算法,常被用于解决分类问题。然而,在实际业务中,如何选择不同的逻辑回归模型及参数,对算法的效果和优化有着重要的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值