Skip to content

机器学习算法

机器学习算法可以分为监督学习、无监督学习、强化学习等类别。

监督学习算法

  • 线性回归(Linear Regression):用于回归任务,预测连续的数值。
  • 逻辑回归(Logistic Regression):用于二分类任务,预测类别。
  • 支持向量机(SVM):用于分类任务,构建超平面进行分类。
  • 决策树(Decision Tree):基于树状结构进行决策的分类或回归方法。

无监督学习算法

  • K-means 聚类:通过聚类中心将数据分组。
  • 主成分分析(PCA):用于降维,提取数据的主成分。

每种算法都有其适用的场景,在实际应用中,可以根据数据的特征(如是否有标签、数据的维度等)来选择最合适的机器学习算法。

分类维度类别核心定义典型算法核心优缺点适用场景
学习方式监督学习用带标签数据学习输入到输出的映射逻辑回归、SVM、决策树、CNN、LSTM优点:预测精度高;缺点:依赖高质量标注数据分类、回归、图像识别、文本翻译
无监督学习用无标签数据挖掘数据内在规律K-Means、PCA、DBSCAN、自编码器优点:无需标注;缺点:结果可解释性弱数据聚类、降维、异常检测、用户分群
半监督学习结合少量标签数据和大量无标签数据训练半监督SVM、标签传播算法优点:降低标注成本;缺点:模型设计复杂医疗影像分析、小众语种NLP
强化学习模型通过与环境交互,以奖励信号优化策略Q-Learning、DQN、PPO优点:适配动态决策;缺点:训练周期长游戏AI、机器人控制、推荐策略优化
任务目标分类算法预测离散的类别标签逻辑回归、随机森林、CNN优点:适配分类场景;缺点:对类别不平衡敏感垃圾邮件识别、图像分类、疾病诊断
回归算法预测连续的数值输出线性回归、岭回归、XGBoost优点:输出连续值;缺点:对异常值敏感房价预测、销量预测、温度预测
聚类算法无标签下将相似数据归为一类K-Means、层次聚类、DBSCAN优点:自动分群;缺点:聚类效果依赖距离度量市场细分、用户画像、异常检测
降维算法减少特征维度,保留核心信息PCA、t-SNE、LDA优点:降低计算成本;缺点:可能丢失部分信息高维数据可视化、特征预处理
模型结构线性模型假设输入与输出为线性关系线性回归、逻辑回归、岭回归优点:可解释性强、训练快;缺点:难以拟合非线性关系简单分类回归、基线模型搭建
树模型基于决策树构建,处理非线性关系决策树、随机森林、XGBoost、LightGBM优点:无需特征归一化;缺点:树过深易过拟合工业级分类回归、竞赛级任务
神经网络模型多层神经元结构,自动提取复杂特征ANN、CNN、RNN、Transformer优点:拟合复杂关系;缺点:需大量数据和算力图像识别、NLP、语音合成
概率模型基于概率统计理论,计算概率分布朴素贝叶斯、隐马尔可夫模型优点:理论基础扎实;缺点:依赖强假设文本分类、语音识别、序列标注

监督学习算法

线性回归(Linear Regression)

线性回归是一种用于回归问题的算法,它通过学习输入特征与目标值之间的线性关系,来预测一个连续的输出。

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

线性回归的目标是找到一个最佳的线性方程:

lg-1.png

  • y 是预测值(目标值)。
  • x1,x2,xn 是输入特征。
  • w1,w2,wn是待学习的权重(模型参数)。
  • b 是偏置项。

Linearregression.svg.png

接下来我们使用 sklearn 进行简单的房价预测:

实例

python
from sklearn.linear_model import LinearRegression

from sklearn.model_selection import train_test_split

import pandas as pd

# 假设我们有一个简单的房价数据集

data = {

    '面积': [50, 60, 80, 100, 120],

    '房价': [150, 180, 240, 300, 350]

}

df = pd.DataFrame(data)

# 特征和标签

X = df[['面积']]

y = df['房价']

# 数据分割

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}")

输出结果为:

python
预测的房价: [180.8411215]

逻辑回归(Logistic Regression)

逻辑回归是一种用于分类问题的算法,尽管名字中包含"回归",它是用来处理二分类问题的。

逻辑回归通过学习输入特征与类别之间的关系,来预测一个类别标签。

**应用场景:**垃圾邮件分类、疾病诊断(是否患病)。

逻辑回归的输出是一个概率值,表示样本属于某一类别的概率。

通常使用 Sigmoid 函数:

881f2480-9f80-448e-a83b-8abfb784d065.png

使用逻辑回归进行二分类任务:

实例

python
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}")

输出结果为:

python
分类准确率: 1.00

支持向量机(SVM)

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

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

使用 SVM 进行鸢尾花分类任务:

实例

python
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)

# 训练 SVM 模型

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}")

输出结果为:

python
SVM 分类准确率: 1.00

决策树(Decision Tree)

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

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

使用决策树进行分类任务:

实例

python
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}")

输出结果为:

python
决策树分类准确率: 1.00

无监督学习算法

K-means 聚类(K-means Clustering)

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

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

使用 K-means 进行客户分群:

实例

python
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()

输出的图如下所示:

ml-algorithms-1.png

主成分分析(PCA)

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

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

使用 PCA 降维并可视化高维数据:

实例

python
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

# 降维到 2 维

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()

输出的图如下所示:

ml-algorithms-2.png


机器学习算法

中文全称英文全称简写核心适用场景
传统机器学习算法
决策树Decision TreeDT分类、回归、特征重要性分析
随机森林Random ForestRF分类、回归、异常检测、特征筛选
逻辑回归Logistic RegressionLR二分类任务、概率预测、信用评分
支持向量机Support Vector MachineSVM分类、高维小样本数据、文本分类
朴素贝叶斯Naive BayesNB文本分类、垃圾邮件识别、情感分析
梯度提升树Gradient Boosting Decision TreeGBDT分类、回归、排序任务
极端梯度提升Extreme Gradient BoostingXGBoost高精度分类回归、竞赛级任务、点击率预测
轻量级梯度提升机Light Gradient Boosting MachineLightGBM大规模数据分类回归、实时预测、推荐系统
K近邻算法K-Nearest NeighborKNN简单分类回归、推荐系统、异常检测
K均值聚类K-Means ClusteringK-Means数据聚类、用户分群、图像分割
主成分分析Principal Component AnalysisPCA数据降维、高维数据可视化、特征去噪
深度学习算法
人工神经网络Artificial Neural NetworkANN简单分类回归、基线模型验证
卷积神经网络Convolutional Neural NetworkCNN图像识别、目标检测、视频分析、医学影像诊断
循环神经网络Recurrent Neural NetworkRNN序列数据处理、文本生成、语音识别
长短期记忆网络Long Short-Term MemoryLSTM长序列文本翻译、语音合成、时间序列预测
门控循环单元Gated Recurrent UnitGRU序列分类、情感分析、对话系统
生成对抗网络Generative Adversarial NetworkGAN图像生成、风格迁移、数据增强、超分辨率重建
变换器TransformerTransformer自然语言翻译、文本摘要、多模态任务、大模型基础架构
自编码器AutoencoderAE数据压缩、异常检测、特征提取
变分自编码器Variational AutoencoderVAE生成式任务、数据降噪、图像生成
图神经网络Graph Neural NetworkGNN社交网络分析、分子结构预测、知识图谱推理

AI 思考中...

Python 入门机器学习

线性回归 (Linear Regression)

基于 VitePress 构建,部署于 GitHub Pages