监督学习与无监督学习算法详解(十三)

机器学习是人工智能领域的一个重要分支,它通过让计算机从数据中学习规律,从而实现自动化决策。本文将详细介绍机器学习中的两大类算法:监督学习和无监督学习,并提供具体的实例和代码示例,帮助读者更好地理解和应用这些算法。

什么是机器学习?

机器学习是一种让计算机通过数据自动学习并改进其性能的技术。根据学习方式的不同,机器学习算法可以分为监督学习、无监督学习、半监督学习和强化学习等几类。本文将重点介绍监督学习和无监督学习算法。

监督学习算法

监督学习算法通过带有标签的数据集进行训练,学习输入特征与输出标签之间的映射关系。常见的监督学习算法包括线性回归、逻辑回归、支持向量机和决策树等。

线性回归(Linear Regression)

核心定义:线性回归是一种用于预测连续值的算法,它假设目标变量 ( y ) 和特征变量 ( x ) 之间存在线性关系,并试图找到一条最佳拟合直线来描述这种关系。

应用场景:房价预测、股票价格预测等。

数学模型: [ y = w \cdot x + b ] 其中:

  • ( y ) 是预测值
  • ( x ) 是特征变量
  • ( w ) 是权重(斜率)
  • ( b ) 是偏置(截距)

目标:找到最佳的 ( w ) 和 ( b ),使得预测值 ( y ) 与真实值之间的误差最小。常用的误差函数是均方误差(MSE): [ \text{MSE} = \frac{1}{n} \sum_{i=1}^n (yi - y{\text{pred}, i})^2 ]

求解方法

  1. 最小二乘法:通过求解正规方程来找到最佳的 ( w ) 和 ( b )。
  2. 梯度下降法:通过迭代更新 ( w ) 和 ( b ) 来最小化损失函数。

实例:使用 sklearn 进行简单的房价预测。

from sklearn.linear_model import LinearRegression
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split

# 加载数据集
boston = load_boston()
X = boston.data
y = boston.target

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

# 创建线性回归模型
model = LinearRegression()

# 训练模型
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)

# 输出预测结果
print(f"预测的房价: {y_pred[0]:.2f}")

逻辑回归(Logistic Regression)

核心定义:逻辑回归是一种用于分类问题的算法,尽管名字中包含“回归”,但它主要用于处理二分类问题。

应用场景:垃圾邮件分类、疾病诊断等。

数学模型:逻辑回归的输出是一个概率值,表示样本属于某一类别的概率。通常使用 Sigmoid 函数: [ P(y=1|x) = \frac{1}{1 + e^{-(w \cdot x + b)}} ]

实例:使用 sklearn 进行二分类任务。

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

# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target

# 仅使用前两个类别
X = X[y != 2]
y = y[y != 2]

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

# 创建逻辑回归模型
model = LogisticRegression()

# 训练模型
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)

# 计算准确率
print(f"分类准确率: {accuracy_score(y_test, y_pred):.2f}")

支持向量机(Support Vector Machine, SVM)

核心定义:支持向量机是一种常用的分类算法,它通过构造超平面来最大化类别之间的间隔(Margin),使得分类的误差最小。

应用场景:文本分类、人脸识别等。

实例:使用 sklearn 进行鸢尾花分类任务。

from sklearn.svm import SVC
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
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 = SVC(kernel='linear')

# 训练模型
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)

# 计算准确率
print(f"SVM 分类准确率: {accuracy_score(y_test, y_pred):.2f}")

决策树(Decision Tree)

核心定义:决策树是一种基于树结构进行决策的分类和回归方法。它通过一系列的“判断条件”来决定一个样本属于哪个类别。

应用场景:客户分类、信用评分等。

实例:使用 sklearn 进行分类任务。


from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
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 = DecisionTreeClassifier(random_state=42)

# 训练模型
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)

# 计算准确率
print(f"决策树分类准确率: {accuracy_score(y_test, y_pred):.2f}")

无监督学习算法

无监督学习算法通过无标签的数据集进行训练,挖掘数据的内在规律。常见的无监督学习算法包括 K-means 聚类和主成分分析(PCA)等。

K-means 聚类(K-means Clustering)

核心定义:K-means 是一种基于中心点的聚类算法,通过不断调整簇的中心点,使每个簇中的数据点尽可能靠近簇中心。

应用场景:客户分群、市场分析、图像压缩等。

实例:使用 sklearn 进行客户分群。

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

# 生成模拟数据
X, _ = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0)

# 创建 K-means 模型
model = KMeans(n_clusters=4)

# 训练模型
model.fit(X)

# 预测
y_kmeans = model.predict(X)

# 可视化结果
plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=50, cmap='viridis')
plt.show()

主成分分析(Principal Component Analysis, PCA)

核心定义:PCA 是一种降维技术,通过线性变换将数据转换到新的坐标系中,使得大部分的方差集中在前几个主成分上。

应用场景:图像降维、特征选择、数据可视化等。

实例:使用 sklearn 降维并可视化高维数据。

from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt

# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target

# 创建 PCA 模型
pca = PCA(n_components=2)

# 降维
X_pca = pca.fit_transform(X)

# 可视化结果
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, cmap='viridis')
plt.title('PCA of Iris Dataset')
plt.show()

总结

本文详细介绍了机器学习中的监督学习和无监督学习算法,包括线性回归、逻辑回归、支持向量机、决策树、K-means 聚类和主成分分析等。通过具体的实例和代码示例,希望读者能够更好地理解和应用这些算法。无论是在房价预测、垃圾邮件分类还是客户分群等实际应用中,这些算法都能发挥重要作用。希望本文能为读者提供有价值的参考。