F FisherHub Docs

机器学习基础

什么是机器学习

机器学习(Machine Learning,ML)是让计算机在不需要显式编程的情况下获得学习能力的技术。核心思想是:计算机从数据中自动发现模式,并用学到的模式对未知数据做出预测或决策。

Tom Mitchell 给出了一个经典定义:如果计算机程序在某类任务 T 上的性能(由度量 P 衡量)随着经验 E 的增长而提高,则称该程序从经验 E 中学习。

三大学习范式

监督学习

训练数据包含输入和对应的标签,模型学习从输入到输出的映射。

常见任务与算法:

  • 回归 — 预测连续值。算法:线性回归、决策树回归、SVR
  • 分类 — 预测离散类别。算法:逻辑回归、SVM、随机森林、KNN
# 使用随机森林进行分类
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris

iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(
    iris.data, iris.target, test_size=0.2, random_state=42
)

clf = RandomForestClassifier(n_estimators=100)
clf.fit(X_train, y_train)
print(f"准确率: {clf.score(X_test, y_test):.2f}")

无监督学习

训练数据没有标签,模型自行发现数据中的隐藏结构。

常见任务与算法:

  • 聚类 — 将数据分组。算法:K-Means、DBSCAN、层次聚类
  • 降维 — 压缩特征空间。算法:PCA、t-SNE、UMAP
  • 密度估计 — 估计数据分布。算法:高斯混合模型
# 使用 K-Means 进行客户分群
from sklearn.cluster import KMeans
import numpy as np

# 假设有 100 个客户的消费数据
data = np.random.randn(100, 2)

kmeans = KMeans(n_clusters=3, random_state=42)
labels = kmeans.fit_predict(data)
print(f"聚类中心:\n{kmeans.cluster_centers_}")

半监督学习

训练数据中少量有标签、大量无标签。这种方法在标签获取成本高昂的场景下非常实用。

常用策略包括自训练(self-training)、协同训练(co-training)和基于图的标签传播算法。

标准训练流程

一个完整的机器学习项目通常包含以下步骤:

1. 问题定义

明确业务目标,将其转化为数学问题。是分类还是回归?评价指标是什么?

2. 数据收集与探索

收集相关数据,通过统计分析和可视化理解数据分布、检测异常值。

3. 数据预处理

包括处理缺失值、编码类别变量、标准化/归一化数值特征。

4. 特征工程

创建新的特征、选择重要特征、降维。

5. 模型选择与训练

选择适合问题的算法,在训练集上进行训练。

from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline

pipeline = Pipeline([
    ('scaler', StandardScaler()),
    ('clf', RandomForestClassifier())
])

pipeline.fit(X_train, y_train)

6. 模型评估

使用验证集或交叉验证评估模型性能,避免过拟合。

7. 超参数调优

通过网格搜索或贝叶斯优化寻找最佳超参数。

8. 部署与监控

将模型部署到生产环境,持续监控其性能变化。

常见陷阱

  • 过拟合 — 模型在训练集上表现极好但在新数据上表现差
  • 数据泄露 — 验证数据的信息意外流入训练过程
  • 类别不平衡 — 某些类别样本量远少于其他类别
  • 特征缩放不当 — 不同量纲的特征影响梯度下降和距离计算

理解这些基础概念是深入掌握 AI 技术的必要前提。