【机器学习】机器学习的基本分类-监督学习(Supervised Learning)

监督学习是一种通过已有的输入数据(特征)和目标输出(标签)对模型进行训练的机器学习方法,旨在学到一个函数,将输入映射到正确的输出。


1. 监督学习概述

监督学习需要:

  • 输入数据 (特征):X,如图片、文本、数值等。
  • 输出标签y,即目标值,如图片的分类标签、房价等。
  • 目标:通过训练模型,使其能够预测新数据的标签。

公式表示

从训练数据 (X, y) 中学到一个函数 f(x),使得对于新输入 x',预测值 f(x') 与真实值 y' 尽可能接近。


2. 常见任务类型

分类任务

目标:预测离散类别标签。

  • 示例:垃圾邮件检测(垃圾邮件/非垃圾邮件)、图片分类(猫/狗/鸟)。
  • 常见评价指标:准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1 分数等。
回归任务

目标:预测连续值。


3. 数据准备与预处理

3.1 数据收集
  • 数据来源:数据库、日志文件、公开数据集(如 Kaggle)。
  • 注意:确保数据多样性和质量。
3.2 数据清洗
  • 处理缺失值:均值填充、中位数填充或删除缺失数据。
  • 处理异常值:通过箱线图、标准差等方法检测并处理。
3.3 特征工程
  • 标准化/归一化:对数值型特征进行标准化,使其均值为 0,标准差为 1。
  • 编码:对类别型特征用独热编码(One-Hot Encoding)或标签编码(Label Encoding)。
  • 特征选择:删除低相关性或多余的特征,提高模型性能。
3.4 数据划分
  • 划分为训练集、验证集和测试集(例如 60%/20%/20%)。

4. 模型训练与评估

4.1 模型选择

根据任务选择合适的算法,如:

  • 分类:逻辑回归、支持向量机(SVM)、决策树、随机森林等。
  • 回归:线性回归、岭回归、Lasso 回归、梯度提升树(GBDT)等。
4.2 训练模型

通过优化损失函数(如均方误差、交叉熵)调整模型参数。

4.3 模型评估
  • 在验证集上评估性能,通过超参数调优(如学习率、正则化强度)优化模型。
  • 避免过拟合:使用正则化(L1/L2)、Dropout 或限制树深度等手段。

5. 常见算法及实现

以下是分类与回归常用算法的 Python 实现:

5.1 分类算法
  • 逻辑回归(Logistic Regression)
python 复制代码
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
  • 支持向量机(SVM)
python 复制代码
from sklearn.svm import SVC
model = SVC(kernel='linear')
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
5.2 回归算法
  • 线性回归
python 复制代码
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
  • 梯度提升树(GBDT)
python 复制代码
from sklearn.ensemble import GradientBoostingRegressor
model = GradientBoostingRegressor()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)

6. 案例分析

案例 1:分类问题(垃圾邮件检测)
  1. 数据:下载带有邮件内容及是否垃圾的标注数据集。
  2. 特征提取:对文本数据进行向量化(如 TF-IDF)。
  3. 模型训练:使用逻辑回归模型。
  4. 评估:计算准确率、F1 分数。
案例 2:回归问题(房价预测)
  1. 数据:房屋面积、卧室数量、地理位置等特征。
  2. 预处理:标准化数值型特征,编码类别型特征。
  3. 模型训练:使用随机森林回归模型。
  4. 评估:计算 MSE 和 R²。

7. 监督学习的挑战与改进

  1. 过拟合与欠拟合

    • 解决过拟合:增加数据量、使用正则化、减少模型复杂度。
    • 解决欠拟合:增加特征、使用更复杂模型。
  2. 数据不平衡

    • 分类问题中类别分布不均。
    • 解决方法:采样技术(过采样/下采样)、使用 F1 分数评估。
  3. 噪声数据与异常值

    • 影响模型性能。
    • 解决方法:清洗数据、使用稳健算法。
  4. 模型解释性

    • 如深度学习模型不易解释。
    • 解决方法:使用可解释性工具(如 SHAP、LIME)。

8. 工具与框架

  1. 数据预处理:pandas, numpy
  2. 机器学习:scikit-learn, xgboost, lightgbm
  3. 可视化:matplotlib, seaborn

通过动手实践小项目(如图片分类或简单预测任务),可以快速理解和掌握监督学习的基本原理和应用技巧!如果有具体需求,我可以进一步提供代码和案例指导。

相关推荐
读创商闻34 分钟前
极狐GitLab CEO 柳钢——极狐 GitLab 打造中国企业专属 AI 编程平台,引领编程新潮流
人工智能·gitlab
kailp34 分钟前
语言模型玩转3D生成:LLaMA-Mesh开源项目
人工智能·3d·ai·语言模型·llama·gpu算力
marteker35 分钟前
弗兰肯斯坦式的人工智能与GTM策略的崩溃
人工智能·搜索引擎
无心水37 分钟前
大语言模型零样本情感分析实战:无需机器学习训练,96%准确率实现指南
人工智能·机器学习·语言模型
来自于狂人37 分钟前
AI大模型训练的云原生实践:如何用Kubernetes指挥千卡集群?
人工智能·云原生·kubernetes
LGGGGGQ2 小时前
嵌入式学习-PyTorch(4)-day21
学习
艾莉丝努力练剑3 小时前
【LeetCode&数据结构】单链表的应用——反转链表问题、链表的中间节点问题详解
c语言·开发语言·数据结构·学习·算法·leetcode·链表
人生游戏牛马NPC1号4 小时前
学习 Flutter (三):玩安卓项目实战 - 上
android·学习·flutter
橡晟6 小时前
深度学习入门:让神经网络变得“深不可测“⚡(二)
人工智能·python·深度学习·机器学习·计算机视觉
墨尘游子6 小时前
神经网络的层与块
人工智能·python·深度学习·机器学习