11 机器学习基础:监督学习与非监督学习
在计算机视觉的应用中,机器学习是核心组成部分,而在机器学习中,我们常常将算法分为两大类:监督学习
和非监督学习
。本篇将深入探讨这两种学习方式,理解它们的基本原理和实际应用。
监督学习
定义
监督学习
是指以带标签的数据集进行训练的过程。模型学习输入数据与输出标签之间的映射关系,目标是使模型能够基于新的输入数据预测输出。
典型算法
-
线性回归:用于回归问题,通过拟合一条直线来预测连续值。
示例公式:
其中 为输出, 为输入特征, 为权重, 为偏置。
-
逻辑回归:主要用于二分类问题,通过映射函数(如 Sigmoid 函数)对连续输入进行分类。
示例公式:
-
支持向量机(SVM):通过寻找最优超平面来分离不同类别的数据,适用于线性和非线性分类。
案例分析
手写数字识别:图像分类问题的典型案例是手写数字识别(MNIST 数据集)。我们使用 监督学习
方法,通过提供标记的手写数字图像来训练模型,使其能够识别新的手写数字。
from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report
# 加载数据
X, y = fetch_openml('mnist_784', version=1, return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=42)
# 使用随机森林分类器
model = RandomForestClassifier(n_estimators=100)
model.fit(X_train, y_train)
# 预测并评估模型
y_pred = model.predict(X_test)
print(classification_report(y_test, y_pred))
在上述代码中,我们使用了随机森林算法来处理 MNIST 数据集,并通过分类报告评估模型性能。
非监督学习
定义
非监督学习
是指在没有标签的数据集上进行模型训练,目标是寻找数据中的模式和结构。常见的方法包括聚类和降维。
典型算法
-
K-means 聚类:一种常见的聚类技术,通过将数据划分为
K
个簇,最小化簇内距离。示例公式:
-
主成分分析(PCA):用于降维,通过线性方式将数据投影到低维空间,以保留尽可能多的方差信息。
-
自编码器:一种神经网络架构,通过压缩输入数据,再重建回原始数据,常用于特征学习。
案例分析
客户细分:在市场营销中,企业可能希望根据客户行为对其进行细分,非监督学习
(如 K-means)非常有效。
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# 加载数据
data = load_iris()
X = data.data
# 使用 K-means
kmeans = KMeans(n_clusters=3)
kmeans.fit(X)
labels = kmeans.labels_
# 可视化
plt.scatter(X[:, 0], X[:, 1], c=labels)
plt.xlabel('特征 1')
plt.ylabel('特征 2')
plt.title('K-means 聚类结果')
plt.show()
在此示例中,我们通过 K-means
将鸢尾花数据集聚类,并使用散点图可视化聚类结果。
小结
在计算机视觉的任务中,监督学习
和非监督学习
各有其优势和适用场景。监督学习
能够为特定任务提供精确的预测,而非监督学习
则在探索数据结构与模式方面表现优异。在后面的课程中,我们将进一步探索如何评估和选择合适的模型来解决具体问题。
敬请期待,下一篇将深入探讨模型评估与选择
。