【机器学习】监督学习 vs 非监督学习——如何选择合适的方法

1. 引言

在机器学习中,算法大致可以分为两类:监督学习(Supervised Learning)和非监督学习(Unsupervised Learning)。它们的区别主要在于是否提供了带标签的数据。监督学习使用标注好的数据来训练模型,而非监督学习则用未标注的数据来发现数据的结构。选择哪种方法取决于具体的问题和可用的数据。本文将深入探讨这两种学习方法的特点及应用场景,帮助你选择合适的机器学习方法。

在这里插入图片描述

2. 什么是监督学习?

2.1 定义

监督学习是一种通过已知的输入-输出对来训练模型的方法。模型学习到输入特征和输出标签之间的映射关系,之后可用于预测新数据的输出。

2.2 监督学习的特点:

  • 数据有标签:每个输入样本都有相应的目标输出。
  • 常见任务:分类和回归。
  • 应用场景:例如垃圾邮件分类、图片分类、股票价格预测等。

2.3 监督学习的常见算法:

  • 分类算法:逻辑回归、支持向量机、KNN、决策树、随机森林等。
  • 回归算法:线性回归、岭回归、Lasso回归等。

示例:使用逻辑回归进行二元分类

from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# 加载数据集
data = load_breast_cancer()
X = data.data
y = data.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)
print(f"分类准确率: {accuracy_score(y_test, y_pred)}")

在这里插入图片描述

3. 什么是非监督学习?

3.1 定义

非监督学习是使用未标注的数据来训练模型。模型尝试发现数据的内在结构,如数据之间的分组或相似性。

3.2 非监督学习的特点:

  • 数据无标签:没有已知的目标输出。
  • 常见任务:聚类和降维。
  • 应用场景:例如客户分群、图像压缩、异常检测等。

3.3 非监督学习的常见算法:

  • 聚类算法:K-Means、层次聚类、DBSCAN 等。
  • 降维算法:主成分分析(PCA)、t-SNE 等。

示例:使用 K-Means 进行聚类

from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# 生成样本数据
X, _ = make_blobs(n_samples=300, centers=4, random_state=42)

# 使用K-Means进行聚类
kmeans = KMeans(n_clusters=4)
kmeans.fit(X)

# 可视化聚类结果
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_, cmap='viridis')
plt.show()

在这里插入图片描述

4. 监督学习 vs 非监督学习:如何选择?

选择监督学习或非监督学习取决于数据集的性质和解决的问题。以下是一些帮助你做出选择的要点:

4.1 是否有标签数据?

  • 有标签数据:如果你有明确的目标变量(标签)并且需要预测结果,选择监督学习
  • 无标签数据:如果没有标签数据,且想要从数据中发现模式,选择非监督学习

4.2 任务类型是什么?

  • 分类和回归任务:这些是监督学习的典型任务。对于分类任务,模型预测的是离散类别;对于回归任务,模型预测的是连续值。
  • 聚类和模式发现任务:这些是非监督学习的主要任务。它用于从数据中自动发现分组或隐藏的结构。

4.3 数据规模和可解释性

  • 数据量大、复杂且无标签:非监督学习擅长处理大型复杂数据集。
  • 需要较高的可解释性:监督学习由于有明确的目标变量,往往比非监督学习更容易解释。

在这里插入图片描述

5. 应用场景对比

5.1 监督学习应用场景

  • 图像分类:识别图片中的内容,如猫或狗。
  • 情感分析:根据用户评论判断情感是正面还是负面。
  • 房价预测:根据历史房价数据预测未来房价。

5.2 非监督学习应用场景

  • 客户分群:根据客户行为自动分组,应用于市场营销。
  • 异常检测:检测数据中的异常样本,如银行的欺诈检测。
  • 降维与数据可视化:通过降低数据维度来更好地理解数据结构。

6. 混合方法:半监督学习与自监督学习

有时候,我们既有少量标签数据,也有大量未标注的数据。这种情况下,可以考虑使用半监督学习或自监督学习。

6.1 半监督学习

半监督学习结合了监督学习和非监督学习,使用少量带标签数据和大量无标签数据进行训练。它在标签数据稀缺的场景中非常有用。

6.2 自监督学习

自监督学习是一种特殊的无监督学习方法,模型通过预测数据本身的某些属性进行训练。近年来,自监督学习在图像和自然语言处理领域取得了显著成果。

在这里插入图片描述

7. 案例:分类与聚类的对比

问题:分类不同种类的花 vs 自动分组相似的花

在这个案例中,我们将使用监督学习进行花的分类,并使用非监督学习进行相同数据的聚类。

监督学习:花的分类
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier

# 加载Iris数据集
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)

# 使用KNN分类
model = KNeighborsClassifier()
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)
print(f"分类准确率: {accuracy_score(y_test, y_pred)}")
非监督学习:花的聚类
from sklearn.cluster import KMeans

# 使用K-Means进行聚类
kmeans = KMeans(n_clusters=3)
kmeans.fit(X)

# 输出聚类标签
print(f"聚类标签: {kmeans.labels_}")

在这里插入图片描述

8. 总结

监督学习和非监督学习是机器学习中最常用的两种方法。选择哪种方法取决于数据的性质和任务需求。监督学习适用于有明确目标的预测任务,而非监督学习则用于探索数据中隐藏的结构。掌握这两类方法,并根据具体问题灵活选择,可以帮助你在不同的场景中解决复杂的机器学习问题。

9. 参考资料

Learning》 by Ian Goodfellow](https://www.deeplearningbook.org/)

使用机器学习技术分析csdn热榜

在这里插入图片描述

  • 这篇机器学习已经是第六篇了,机器学习的文是真的好上热榜,别的不多说直接看数据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 基本是发一篇,一篇上热榜,无论内容是什么。且只要别的文章一半热度就能上热榜。

img

你好,我是Qiuner. 为帮助别人少走弯路而写博客 这是我的 github https://github.com/Qiuner⭐ gitee https://gitee.com/Qiuner 🌹

如果本篇文章帮到了你 不妨点个吧~ 我会很高兴的 😄 (^ ~ ^) 。想看更多 那就点个关注吧 我会尽力带来有趣的内容 😎。

代码都在github或gitee上,如有需要可以去上面自行下载。记得给我点星星哦😍

如果你遇到了问题,自己没法解决,可以去我掘金评论区问。私信看不完,CSDN评论区可能会漏看 掘金账号 https://juejin.cn/user/1942157160101860 掘金账号

更多专栏:

掘金账号 CSDN账号

感谢订阅专栏 三连文章
Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐