监督学习 (分类, 回归)

1. 概述

监督学习是机器学习的一个重要分支,其目标是根据已知的输入数据和对应的输出标签来训练模型,以便模型能够对新的、未见过的数据进行预测。监督学习主要分为两大类:分类和回归。

  • 分类:预测离散的类别标签。例如,判断一封邮件是否为垃圾邮件。
  • 回归:预测连续的数值。例如,预测房价。

2. 分类

2.1 理论解释

分类问题中,模型的目标是根据输入特征将数据分为不同的类别。常见的分类算法包括:

  • 逻辑回归:用于二分类问题,输出概率值。
  • 决策树:通过树状结构进行分类。
  • 支持向量机 (SVM):在高维空间中寻找最优分类超平面。
  • K近邻 (KNN):根据最近的K个邻居的类别进行分类。

2.2 代码示例

以下是一个使用逻辑回归进行二分类的示例:

# 加载必要的库
library(caret)

# 加载数据集
data(iris)

# 选择两个类别进行二分类
iris_subset <- iris[iris$Species %in% c("setosa", "versicolor"), ]

# 将类别转换为二进制
iris_subset$Species <- ifelse(iris_subset$Species == "setosa", 1, 0)

# 划分训练集和测试集
set.seed(123)
trainIndex <- createDataPartition(iris_subset$Species, p = 0.8, list = FALSE)
trainData <- iris_subset[trainIndex, ]
testData <- iris_subset[-trainIndex, ]

# 训练逻辑回归模型
model <- train(Species ~ ., data = trainData, method = "glm", family = "binomial")

# 预测
predictions <- predict(model, newdata = testData)

# 评估模型
confusionMatrix(predictions, testData$Species)

2.3 实践练习

  1. 使用 iris 数据集,选择其他两个类别进行二分类,并使用不同的分类算法(如决策树、SVM)进行模型训练和评估。
  2. 尝试使用 caret 包中的交叉验证功能来优化模型性能。

3. 回归

3.1 理论解释

回归问题中,模型的目标是根据输入特征预测一个连续的数值。常见的回归算法包括:

  • 线性回归:假设输入特征和输出之间存在线性关系。
  • 多项式回归:通过引入多项式特征来拟合非线性关系。
  • 岭回归和LASSO回归:用于处理多重共线性问题。
  • 随机森林回归:通过集成多个决策树进行回归预测。

3.2 代码示例

以下是一个使用线性回归预测房价的示例:

# 加载必要的库
library(caret)

# 加载数据集
data(mtcars)

# 划分训练集和测试集
set.seed(123)
trainIndex <- createDataPartition(mtcars$mpg, p = 0.8, list = FALSE)
trainData <- mtcars[trainIndex, ]
testData <- mtcars[-trainIndex, ]

# 训练线性回归模型
model <- train(mpg ~ ., data = trainData, method = "lm")

# 预测
predictions <- predict(model, newdata = testData)

# 评估模型
postResample(pred = predictions, obs = testData$mpg)

3.3 实践练习

  1. 使用 mtcars 数据集,尝试不同的回归算法(如多项式回归、岭回归)进行模型训练和评估。
  2. 使用 caret 包中的特征选择功能来优化模型性能。

4. 模型评估和选择

4.1 理论解释

模型评估是监督学习中的关键步骤,用于衡量模型的性能。常见的评估指标包括:

  • 分类:准确率、精确率、召回率、F1分数、ROC曲线和AUC值。
  • 回归:均方误差 (MSE)、均方根误差 (RMSE)、平均绝对误差 (MAE)、R平方 (R²)。

4.2 代码示例

以下是一个使用交叉验证进行模型评估的示例:

# 加载必要的库
library(caret)

# 加载数据集
data(iris)

# 定义交叉验证方法
ctrl <- trainControl(method = "cv", number = 10)

# 训练逻辑回归模型
model <- train(Species ~ ., data = iris, method = "glm", family = "binomial", trControl = ctrl)

# 查看模型性能
print(model)

4.3 实践练习

  1. 使用 iris 数据集,尝试不同的分类算法,并使用交叉验证进行模型评估。
  2. 使用 mtcars 数据集,尝试不同的回归算法,并使用交叉验证进行模型评估。

5. 总结

监督学习是机器学习中的一个重要领域,涵盖了分类和回归两大类问题。通过本教程,你应该已经掌握了基本的监督学习概念、常见的算法以及如何在R中实现这些算法。继续实践和探索,你将能够更好地理解和应用监督学习技术。

6. 进一步学习

  • 模型调优:学习如何使用网格搜索和随机搜索进行超参数调优。
  • 集成学习:了解如何通过集成多个模型来提高预测性能。
  • 深度学习:探索使用神经网络进行分类和回归任务。

通过不断实践和学习,你将能够在实际项目中灵活应用监督学习技术,解决各种复杂的问题。