逻辑回归概述
逻辑回归的工作原理
逻辑回归实现步骤
以下是实现逻辑回归的主要步骤,包括数据加载、预处理、模型构建、评估和结果可视化。
1. 数据加载和初步检查
# 加载数据
data <- mtcars
head(data)
# 将目标变量 am 转换为因子
data$am <- factor(data$am, levels = c(0, 1), labels = c("Manual", "Automatic"))
# 查看数据结构
str(data)
2. 数据预处理
缺失值处理:可以选择删除缺失值或进行填补。 因子转换:将分类变量(如性别)转换为因子类型。 变量筛选:根据业务需求或特征重要性选择变量。
# 检查并处理缺失值data <- na.omit(data)# 将分类变量转换为因子data$am <- factor(data$am, levels = c(0, 1), labels = c("Manual", "Automatic"))
3. 数据探索性分析(EDA)
# 加载 ggplot2 库
library(ggplot2)
# 绘制油耗 (mpg) 与传动系统类型 (am) 的箱线图
ggplot(data, aes(x = am, y = mpg, fill = am)) +
geom_boxplot() +
labs(title = "Transmission Type vs. MPG", x = "Transmission Type", y = "Miles per Gallon")
4. 构建逻辑回归模型
glm()
函数来构建逻辑回归模型,指定family = binomial
即可表示逻辑回归。简单模型:使用单一变量进行预测。
# 使用重量 (wt) 预测传动系统类型 (am)
simple_model <- glm(am ~ wt, data = data, family = binomial)
summary(simple_model)
# 使用所有变量预测传动系统类型
full_model <- glm(am ~ ., data = data, family = binomial)
summary(full_model)
5. 模型输出解读
系数(Coefficients):显示各个变量的系数。系数表示log-odds的变化,例如,当重量增加时,自动传动的概率如何变化。 残差偏差和AIC:残差偏差和AIC值用于衡量模型的拟合效果,AIC越低表示模型更好。 p值:p值用于评估系数的显著性,p值小于0.05表示该变量对预测具有显著贡献。
6. 模型评估
# 计算伪R平方
null_deviance <- full_model$null.deviance
residual_deviance <- full_model$deviance
pseudo_r2 <- 1 - (residual_deviance / null_deviance)
print(paste("McFadden伪R平方:", round(pseudo_r2, 4)))
# 预测值
predictions <- ifelse(predict(full_model, type = "response") > 0.5, "Automatic", "Manual")
# 混淆矩阵
table(Predicted = predictions, Actual = data$am)
7. 可视化模型结果
# 创建预测概率数据框
data$predicted_prob <- predict(full_model, type = "response")
# 排序并分配样本排名
data <- data[order(data$predicted_prob),]
data$rank <- 1:nrow(data)
# 绘制预测概率图
ggplot(data, aes(x = rank, y = predicted_prob, color = am)) +
geom_point() +
labs(title = "Predicted Probability of Transmission Type", x = "Sample Rank", y = "Predicted Probability")
总结
逻辑回归的核心思想:逻辑回归利用logistic函数将线性关系映射到概率空间,以解决二分类问题。 实现步骤:
数据加载和预处理。 数据探索性分析,理解数据分布和变量关系。 使用 glm()
函数构建逻辑回归模型。解读模型输出,包括系数、残差偏差、AIC和p值。 使用伪R平方和混淆矩阵评估模型效果。 通过可视化方式展示模型预测结果。
glm()
函数可以轻松实现逻辑回归,配合ggplot2
库的可视化功能,可以更好地展示模型效果和数据分布。