R回归算法
回归分析是机器学习中最基础且重要的技术之一,用于预测连续值或分类结果。R语言作为一种强大的统计计算工具,提供了丰富的函数和包来实现各种回归算法。本文将带你从基础概念入手,逐步学习如何在R中实现回归算法,并通过实际案例加深理解。
什么是回归算法?
回归算法是一种用于预测因变量(目标变量)与一个或多个自变量(特征)之间关系的统计方法。根据目标变量的类型,回归算法可以分为:
- 线性回归:用于预测连续值。
- 逻辑回归:用于分类问题,预测概率值。
在R中,回归算法的实现通常依赖于内置函数或扩展包(如lm()
、glm()
等)。
线性回归
线性回归是最简单的回归算法,假设因变量与自变量之间存在线性关系。其数学表达式为:
其中:
- 是因变量(目标变量)。
- 是自变量(特征)。
- 是模型参数。
- 是误差项。
在R中实现线性回归
R提供了lm()
函数来实现线性回归。以下是一个简单的示例:
r
# 加载数据集
data(mtcars)
# 拟合线性回归模型
model <- lm(mpg ~ wt + hp, data = mtcars)
# 查看模型摘要
summary(model)
输出结果:
Call:
lm(formula = mpg ~ wt + hp, data = mtcars)
Residuals:
Min 1Q Median 3Q Max
-3.941 -1.600 -0.182 1.050 5.854
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 37.22727 1.59879 23.285 < 2e-16 ***
wt -3.87783 0.63273 -6.129 1.12e-06 ***
hp -0.03177 0.00903 -3.519 0.00145 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.593 on 29 degrees of freedom
Multiple R-squared: 0.8268, Adjusted R-squared: 0.8148
F-statistic: 69.21 on 2 and 29 DF, p-value: 9.109e-12
解释:
mpg ~ wt + hp
表示用wt
(车重)和hp
(马力)预测mpg
(每加仑英里数)。summary(model)
输出了模型的详细信息,包括系数估计、显著性水平、R平方值等。
提示
在实际应用中,可以通过plot(model)
绘制模型的诊断图,检查残差分布、线性假设等。
逻辑回归
逻辑回归用于分类问题,特别是二分类问题。它通过逻辑函数(Sigmoid函数)将线性回归的输出映射到[0, 1]区间,表示概率值。
在R中实现逻辑回归
R提供了glm()
函数来实现逻辑回归。以下是一个示例:
r
# 加载数据集
data(iris)
# 将Species转换为二分类变量
iris_binary <- iris[iris$Species %in% c("setosa", "versicolor"), ]
iris_binary$Species <- ifelse(iris_binary$Species == "setosa", 1, 0)
# 拟合逻辑回归模型
model <- glm(Species ~ Sepal.Length + Sepal.Width, data = iris_binary, family = binomial)
# 查看模型摘要
summary(model)
输出结果:
Call:
glm(formula = Species ~ Sepal.Length + Sepal.Width, family = binomial,
data = iris_binary)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.1280 -0.7668 0.3819 0.8086 1.8503
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -27.831 5.434 -5.121 3.03e-07 ***
Sepal.Length 5.140 1.007 5.104 3.33e-07 ***
Sepal.Width 9.829 1.964 5.005 5.57e-07 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 138.629 on 99 degrees of freedom
Residual deviance: 95.859 on 97 degrees of freedom
AIC: 101.86
Number of Fisher Scoring iterations: 5
解释:
Species ~ Sepal.Length + Sepal.Width
表示用Sepal.Length
和Sepal.Width
预测Species
。family = binomial
指定使用逻辑回归模型。
警告
逻辑回归的输出是概率值,通常需要设置阈值(如0.5)将概率转换为类别标签。
实际案例:房价预测
假设我们有一个房价数据集,包含房屋面积、房间数量等特征。我们可以使用线性回归来预测房价。
r
# 假设数据集为house_data
house_data <- data.frame(
area = c(1200, 1500, 1800, 2000, 2200),
rooms = c(2, 3, 3, 4, 4),
price = c(300000, 400000, 450000, 500000, 550000)
)
# 拟合线性回归模型
model <- lm(price ~ area + rooms, data = house_data)
# 查看模型摘要
summary(model)
输出结果:
Call:
lm(formula = price ~ area + rooms, data = house_data)
Residuals:
1 2 3 4 5
-10000 5000 -5000 10000 -10000
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 50000.0 70710.7 0.707 0.584
area 200.0 50.0 4.000 0.057 .
rooms 10000.0 17677.7 0.566 0.631
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 10000 on 2 degrees of freedom
Multiple R-squared: 0.8889, Adjusted R-squared: 0.7778
F-statistic: 8 on 2 and 2 DF, p-value: 0.1111
解释:
- 模型表明,房屋面积和房间数量对房价有显著影响。
- 可以通过
predict(model, newdata)
对新数据进行预测。
总结
回归算法是机器学习中的核心工具,适用于预测和分类任务。本文介绍了R语言中线性回归和逻辑回归的实现方法,并通过实际案例展示了其应用场景。希望你能通过本文掌握R回归算法的基本用法,并在实际项目中灵活运用。
附加资源
练习
- 使用
mtcars
数据集,尝试用disp
和qsec
预测mpg
。 - 在逻辑回归示例中,尝试添加更多特征(如
Petal.Length
)并观察模型性能的变化。