监督学习基础知识
监督学习是机器学习中最核心、应用最广泛的范式之一,以下是关键概念的系统梳理:

核心定义
监督学习:从已标注的训练数据(输入-输出对)中学习一个映射函数,用于预测新数据的输出。
- 输入:特征(feature)
- 输出:标签/目标值(label/target)
- 目标:最小化预测值与真实值之间的误差
两大主要任务
| 任务类型 | 输出形式 | 经典问题 | 常用指标 |
|---|---|---|---|
| 分类 | 离散类别 | 垃圾邮件检测、图像识别、疾病诊断 | 准确率、精确率、召回率、F1-score、ROC-AUC |
| 回归 | 连续数值 | 房价预测、销量预测、温度预测 | 均方误差(MSE)、平均绝对误差(MAE)、R²分数 |
基本流程
- 数据准备:收集带标签的数据集
- 数据预处理:清洗、特征工程、归一化/标准化
- 划分数据集:训练集(训练模型)、验证集(调参)、测试集(最终评估)
- 选择模型:根据问题选择算法
- 训练模型:用训练集优化模型参数
- 模型评估:用测试集评估泛化性能
- 超参数调优:使用验证集调整模型配置
- 预测部署:对新数据进行预测
常用算法概览
线性模型
- 线性回归:连续值预测,最小化平方误差
- 逻辑回归:二元分类,输出概率(实际是分类算法)
- 正则化变体:Ridge(L2)、Lasso(L1)回归防止过拟合
树模型
- 决策树:基于特征阈值递归划分
- 随机森林:多棵决策树的集成,减少过拟合
- 梯度提升树:GBDT、XGBoost、LightGBM,逐步修正误差
支持向量机(SVM)
- 寻找最大化间隔的超平面
- 可使用核函数处理非线性问题
神经网络
- 多层感知机:基础神经网络
- 深度学习:CNN(图像)、RNN/LSTM(序列)、Transformer(NLP)
其他重要方法
- k近邻:基于距离的惰性学习
- 朴素贝叶斯:基于贝叶斯定理,假设特征独立
关键概念详解
损失函数
衡量模型预测误差的函数:
- 回归:均方误差(MSE)、平均绝对误差(MAE)
- 分类:交叉熵损失(Cross-Entropy)、Hinge损失(SVM)
过拟合与欠拟合
- 欠拟合:模型过于简单,无法捕捉数据规律(训练和测试误差都高)
- 过拟合:模型过于复杂,过度拟合训练数据(训练误差低,测试误差高)
偏差-方差权衡
- 偏差:模型预测值与真实值的平均差异(欠拟合程度)
- 方差:模型对训练数据变化的敏感度(过拟合程度)
- 总误差 = 偏差² + 方差 + 不可约误差
正则化
防止过拟合的技术:
- L1正则化(Lasso):产生稀疏特征权重
- L2正则化(Ridge):缩小所有权重
- Dropout:神经网络中随机丢弃神经元
交叉验证
评估模型泛化能力的可靠方法:
- k折交叉验证:将数据分为k份,轮流用k-1份训练,1份验证
- 留一法:k等于样本数
- 分层k折:保持每折中类别比例一致
模型评估指标
分类任务
- 混淆矩阵:TP、TN、FP、FN
- 准确率:(TP+TN)/(TP+TN+FP+FN) - 样本均衡时适用
- 精确率:TP/(TP+FP) - 关注假阳性
- 召回率:TP/(TP+FN) - 关注假阴性
- F1-score:精确率和召回率的调和平均
- ROC曲线与AUC:评估分类器在不同阈值下的性能
回归任务
- 均方误差:MSE = Σ(y_i - ŷ_i)²/n
- 均方根误差:RMSE = √MSE
- 平均绝对误差:MAE = Σ|y_i - ŷ_i|/n
- R²决定系数:1 - (残差平方和)/(总平方和)
实用建议
- 数据质量优先:高质量数据比复杂算法更重要
- 从简单模型开始:先尝试线性模型等简单方法作为基准
- 理解业务需求:选择与业务目标匹配的评估指标
- 关注特征工程:特征选择、构造、变换常带来最大提升
- 考虑集成方法:结合多个模型往往能提升性能
- 持续验证:使用交叉验证确保模型稳定性
代码示例(逻辑回归)
from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split from sklearn.metrics import classification_report from sklearn.datasets import load_iris data = load_iris() X, y = data.data, data.target # 划分数据集(仅使用两类简化示例) X = X[y != 2] y = y[y != 2] # 划分训练测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 创建并训练模型 model = LogisticRegression() model.fit(X_train, y_train) # 预测与评估 y_pred = model.predict(X_test) print(classification_report(y_test, y_pred))
监督学习为现实世界的预测问题提供了系统解决方案,掌握这些基础知识是深入机器学习和人工智能领域的必备前提,建议通过实际项目实践,结合理论理解,逐步建立完整的知识体系。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。