呆板学习之监视学习

打印 上一主题 下一主题

主题 1804|帖子 1804|积分 5414

监视学习(Supervised Learning)是呆板学习中最常见和广泛应用的分支之一。它的核心头脑是通过带有标签的数据来练习模型,使模型能够学习输入特征与输出标签之间的映射关系,从而对新的未见数据举行预测。监视学习广泛应用于分类、回归等任务。


1. 监视学习的核心概念

1.1 输入与输出



  • 输入(特征):模型的输入数据,通常表示为 

  • 输出(标签):模型的预测目标,通常表示为 

1.2 练习数据

监视学习依靠于标注数据集 D={(
​,
​​),(
​​,
​​),…,(
​​,
​​)},此中:


  • 是输入特征。
  • 是对应的标签。
1.3 模型的目标

监视学习的目标是学习一个函数 
,使得 
 能够尽大概正确地预测 


2. 监视学习的任务类型

监视学习主要分为两类任务:
2.1 分类(Classification)



  • 目标:预测离散的类别标签。
  • 示例:

    • 二分类:垃圾邮件分类(是/否)。
    • 多分类:手写数字识别(0-9)。

2.2 回归(Regression)



  • 目标:预测一连的数值。
  • 示例:

    • 房价预测。
    • 股票价格预测。


3. 监视学习的常见算法

3.1 线性模型



  • 线性回归(Linear Regression):用于回归任务,拟合线性关系。
  • 逻辑回归(Logistic Regression):用于分类任务,输出概率值。
3.2 决策树



  • 决策树(Decision Tree):通过树状结构举行决策。
  • 随机丛林(Random Forest):基于多个决策树的集成方法。
  • 梯度提升树(Gradient Boosting Trees):通过逐步优化残差提升模型性能。
3.3 支持向量机(SVM)



  • 用于分类和回归任务,通过最大化隔断找到最优分离超平面。
3.4 神经网络



  • 多层感知机(MLP):底子的前馈神经网络。
  • 卷积神经网络(CNN):用于图像分类等任务。
  • 循环神经网络(RNN):用于序列数据(如文本、时间序列)。

4. 监视学习的流程

4.1 数据预备



  • 收集和洗濯数据。
  • 分别数据集为练习集、验证集和测试集。
4.2 特征工程



  • 提取和选择特征。
  • 对特征举行尺度化或归一化。
4.3 模型选择



  • 根据任务类型选择合适的算法。
4.4 模型练习



  • 使用练习数据拟合模型。
4.5 模型评估



  • 使用验证集评估模型性能。
  • 常用指标:

    • 分类任务:正确率、精确率、召回率、F1 分数。
    • 回归任务:均方偏差(MSE)、平均绝对偏差(MAE)。

4.6 模型调优



  • 通过超参数调优和交织验证提升模型性能。
4.7 模型部署



  • 将练习好的模型应用于实际场景。

5. 监视学习的代码示例

5.1 线性回归(回归任务)

  1. from sklearn.linear_model import LinearRegression
  2. from sklearn.model_selection import train_test_split
  3. from sklearn.metrics import mean_squared_error
  4. import numpy as np
  5. # 创建一些随机数据
  6. X = np.random.rand(100, 1)
  7. y = 2 * X + 1 + 0.1 * np.random.randn(100, 1)
  8. # 划分数据集
  9. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
  10. # 训练模型
  11. model = LinearRegression()
  12. model.fit(X_train, y_train)
  13. # 预测
  14. y_pred = model.predict(X_test)
  15. # 评估
  16. mse = mean_squared_error(y_test, y_pred)
  17. print("Mean Squared Error:", mse)
复制代码
5.2 逻辑回归(分类任务)

  1. from sklearn.linear_model import LogisticRegression
  2. from sklearn.model_selection import train_test_split
  3. from sklearn.metrics import accuracy_score
  4. import numpy as np
  5. # 创建一些随机数据
  6. X = np.random.rand(100, 2)
  7. y = (X[:, 0] + X[:, 1] > 1).astype(int)  # 简单二分类
  8. # 划分数据集
  9. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
  10. # 训练模型
  11. model = LogisticRegression()
  12. model.fit(X_train, y_train)
  13. # 预测
  14. y_pred = model.predict(X_test)
  15. # 评估
  16. accuracy = accuracy_score(y_test, y_pred)
  17. print("Accuracy:", accuracy)
复制代码
5.3 使用 PyTorch 实现神经网络

  1. import torch
  2. import torch.nn as nn
  3. import torch.optim as optim
  4. # 定义一个简单的神经网络
  5. class SimpleNN(nn.Module):
  6.     def __init__(self):
  7.         super(SimpleNN, self).__init__()
  8.         self.fc1 = nn.Linear(10, 50)
  9.         self.fc2 = nn.Linear(50, 1)
  10.     def forward(self, x):
  11.         x = torch.relu(self.fc1(x))
  12.         x = self.fc2(x)
  13.         return x
  14. # 初始化模型、损失函数和优化器
  15. model = SimpleNN()
  16. criterion = nn.MSELoss()
  17. optimizer = optim.SGD(model.parameters(), lr=0.01)
  18. # 创建一些随机数据
  19. X = torch.randn(100, 10)
  20. y = torch.randn(100, 1)
  21. # 训练模型
  22. for epoch in range(100):
  23.     optimizer.zero_grad()
  24.     outputs = model(X)
  25.     loss = criterion(outputs, y)
  26.     loss.backward()
  27.     optimizer.step()
  28.     if (epoch + 1) % 10 == 0:
  29.         print(f"Epoch [{epoch+1}/100], Loss: {loss.item():.4f}")
复制代码
6. 监视学习的挑战

6.1 数据质量



  • 标签错误或缺失会影响模型性能。
  • 数据不平衡大概导致模型偏向多数类。
6.2 过拟合



  • 模型在练习集上表现精良,但在测试集上表现较差。
  • 办理方法:正则化、交织验证、增加数据量。
6.3 特征工程



  • 特征选择和提取对模型性能至关重要。
  • 自动化特征工程(如深度学习)可以缓解这一题目。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81428

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表