授课语音

什么是监督学习?与无监督学习有何区别?

监督学习(Supervised Learning)是机器学习的一个重要分支,它通过学习已有的带标签的训练数据来建立预测模型。通过对这些标注数据的学习,模型能够在面对新的、未见过的数据时进行正确的预测或分类。监督学习的目标是找到输入数据和输出标签之间的映射关系,以便在未知数据上进行准确的推断。

无监督学习(Unsupervised Learning)与监督学习的最大区别在于它不依赖于带标签的数据。无监督学习的目标是从没有标签的输入数据中发现潜在的模式或结构,例如数据聚类、降维等。


1. 监督学习(Supervised Learning)定义

监督学习是一种机器学习方法,在该方法中,模型从一组标注过的训练数据中学习,以便预测或分类未见过的测试数据。监督学习包括回归(Regression)和分类(Classification)两种类型。

1.1 监督学习的工作原理

  • 输入和输出:监督学习依赖于带有标签的数据集,其中每个输入数据点都有一个对应的标签或目标值。例如,在垃圾邮件分类中,输入是邮件内容,标签是“垃圾邮件”或“非垃圾邮件”。
  • 学习过程:模型通过学习输入数据与标签之间的映射关系,逐步调整内部参数,以最小化预测值与真实标签之间的差异。
  • 目标:建立一个可以根据输入数据预测正确输出(标签)的模型。

1.2 监督学习的算法

常见的监督学习算法包括:

  • 线性回归(Linear Regression):用于回归任务,预测连续的数值。
  • 逻辑回归(Logistic Regression):用于分类任务,预测离散类别(如二分类)。
  • 支持向量机(SVM):适用于分类任务,寻找最优的超平面来区分不同类别。
  • 决策树(Decision Trees):用于分类和回归,通过一系列规则将数据分类或回归到不同的输出。
  • 随机森林(Random Forests):集成多个决策树的结果,以提高模型的准确性和鲁棒性。

2. 无监督学习(Unsupervised Learning)定义

无监督学习是指没有标签的数据进行学习,它的目标是从输入数据中发现结构或模式。与监督学习不同,无监督学习不需要训练数据中包含正确的输出标签。

2.1 无监督学习的工作原理

  • 输入数据:无监督学习的输入数据没有标签,模型的目标是从数据中学习潜在的规律或结构。
  • 目标:无监督学习的目的是揭示数据的内在结构,如数据的分布、聚类或降维。
  • 任务类型:常见的无监督学习任务包括数据聚类、降维、密度估计等。

2.2 无监督学习的算法

常见的无监督学习算法包括:

  • K-means 聚类(K-means Clustering):通过将数据分为K个簇,寻找数据中的聚类结构。
  • 主成分分析(PCA):用于降维,提取数据中的主要特征。
  • DBSCAN:基于密度的聚类方法,不需要预设簇的数量。
  • 自编码器(Autoencoders):一种神经网络用于无监督学习,进行数据的编码和解码。

3. 监督学习与无监督学习的区别

特征 监督学习 无监督学习
数据标签 需要标注数据,输入有标签 不需要标注数据,输入没有标签
目标 学习输入与输出之间的映射关系,进行预测或分类 发现数据的结构或模式(如聚类、降维)
任务类型 分类、回归 聚类、降维、关联规则挖掘
示例算法 线性回归、支持向量机、决策树、K近邻算法 K-means聚类、PCA、DBSCAN、隐马尔可夫模型
应用场景 分类问题(如垃圾邮件检测),回归问题(如房价预测) 数据挖掘,图像处理,市场细分

4. 代码案例:监督学习与无监督学习对比

我们将使用sklearn库展示一个简单的监督学习和无监督学习的案例,分别演示分类任务和聚类任务。

安装依赖库

pip install scikit-learn

代码示例:监督学习(鸢尾花分类)

# 导入所需的库
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# 加载鸢尾花数据集
iris = load_iris()
X = iris.data  # 特征数据
y = iris.target  # 标签数据

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 创建并训练逻辑回归模型
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = model.predict(X_test)

# 输出模型准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"监督学习(逻辑回归)准确率:{accuracy * 100:.2f}%")

代码示例:无监督学习(K-means聚类)

# 导入所需的库
from sklearn.cluster import KMeans
import numpy as np

# 使用鸢尾花数据集
X = iris.data  # 特征数据

# 创建并训练K-means聚类模型
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)

# 获取聚类标签
labels = kmeans.labels_

# 输出聚类标签
print("无监督学习(K-means聚类)标签:")
print(labels)

代码解释:

  1. 监督学习(逻辑回归)

    • 我们使用鸢尾花数据集(Iris dataset),它包含了植物的各种特征(如花萼长度、花瓣宽度等),以及相应的类别标签(例如Setosa、Versicolor和Virginica)。
    • 使用train_test_split将数据分为训练集和测试集。
    • 创建一个逻辑回归模型,并用训练集训练它。然后,我们在测试集上评估其性能,输出模型的准确率。
  2. 无监督学习(K-means聚类)

    • 这里我们使用与监督学习相同的鸢尾花数据集,但没有使用标签。我们使用K-means算法将数据分为3个簇(假设我们知道簇的数量)。
    • 聚类的结果会显示每个数据点所属的簇标签。我们没有提供标签信息,而是依靠K-means算法自动发现数据的结构。

5. 总结

  • 监督学习通过学习输入数据与标签之间的关系来进行预测或分类。它适用于需要标签信息的任务,如垃圾邮件分类、房价预测等。
  • 无监督学习则不依赖标签数据,目标是从数据中发现潜在的结构或模式,常用于聚类、降维等任务。
  • 区别:监督学习依赖于标注数据,目的是进行预测或分类;无监督学习依赖于无标签数据,目的是发现数据的内在结构。

通过了解监督学习与无监督学习的区别和应用,我们可以根据问题的需求选择合适的学习方法。

去1:1私密咨询

系列课程: