📊 机器学习

经典算法、模型评估与工程实践

什么是机器学习?

机器学习(Machine Learning)是人工智能的核心方法之一,其基本思想是让计算机从数据中自动学习规律,而非通过显式编程。学到的规律可以用于预测、分类、聚类等任务。

💡 核心公式

机器学习的本质是找到一个函数 f: X → Y,使得在训练数据上学到的映射关系能很好地泛化到未见过的数据上。

机器学习的三大范式

1. 监督学习(Supervised Learning)

使用带有标签的训练数据,学习输入到输出的映射关系。

常见算法:

2. 无监督学习(Unsupervised Learning)

使用无标签数据,发现数据中的内在结构和模式。

3. 强化学习(Reinforcement Learning)

智能体(Agent)通过与环境交互,根据奖励信号学习最优策略。

模型评估方法

分类任务评估指标

回归任务评估指标

交叉验证

K 折交叉验证是评估模型泛化能力的标准方法:将数据分为 K 份,轮流用 K-1 份训练、1 份验证,取平均性能。

特征工程

特征工程是机器学习中最关键的环节之一,好的特征往往比复杂的模型更重要。

过拟合与正则化

过拟合是指模型在训练数据上表现很好,但在新数据上表现差。常见应对方法:

🎯 实践建议

在实际项目中,建议先用简单的基线模型(如逻辑回归)建立 benchmark,再逐步尝试更复杂的模型。同时,数据质量和特征工程往往比模型选择更重要。

实战代码示例

以下是使用 scikit-learn 进行机器学习任务的典型代码模式:

分类任务:垃圾邮件检测

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import classification_report

# 准备数据
X_train, X_test, y_train, y_test = train_test_split(
    emails, labels, test_size=0.2, random_state=42
)

# 特征提取:文本转 TF-IDF 向量
vectorizer = TfidfVectorizer(max_features=5000)
X_train_vec = vectorizer.fit_transform(X_train)
X_test_vec = vectorizer.transform(X_test)

# 训练朴素贝叶斯分类器
model = MultinomialNB()
model.fit(X_train_vec, y_train)

# 评估
y_pred = model.predict(X_test_vec)
print(classification_report(y_test, y_pred))

回归任务:房价预测

from sklearn.ensemble import GradientBoostingRegressor
from sklearn.model_selection import cross_val_score
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline

# 构建 Pipeline(推荐做法)
pipe = Pipeline([
    ('scaler', StandardScaler()),        # 特征标准化
    ('regressor', GradientBoostingRegressor(  # 梯度提升回归
        n_estimators=200,
        max_depth=5,
        learning_rate=0.1
    ))
])

# K 折交叉验证评估
cv_scores = cross_val_score(pipe, X, y, cv=5, scoring='neg_mean_squared_error')
print(f"CV RMSE: {-cv_scores.mean():.2f} ± {cv_scores.std():.2f}")

# 全量训练
pipe.fit(X_train, y_train)
predictions = pipe.predict(X_test)

聚类任务:客户分群

from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt

# 标准化特征
scaler = StandardScaler()
X_scaled = scaler.fit_transform(customer_features)

# 肘部法则选择最优 K
inertias = []
for k in range(2, 11):
    km = KMeans(n_clusters=k, random_state=42, n_init=10)
    km.fit(X_scaled)
    inertias.append(km.inertia_)

# 训练最终模型
kmeans = KMeans(n_clusters=4, random_state=42)
customer_segments = kmeans.fit_predict(X_scaled)

模型选择指南

不同场景适合不同的算法,以下是常见任务的推荐方案:

场景 推荐算法 理由
表格数据分类 XGBoost / LightGBM 表格数据王者,自动处理特征交互
表格数据回归 LightGBM / CatBoost 支持类别特征,训练快
文本分类 朴素贝叶斯 / SVM 高维稀疏数据表现好
图像分类 CNN / Vision Transformer 自动提取图像特征
时间序列预测 Prophet / LSTM 捕捉时间依赖关系
推荐系统 协同过滤 / 矩阵分解 利用用户-物品交互模式
异常检测 孤立森林 / One-Class SVM 无需标签数据,适合无监督场景
小样本快速验证 逻辑回归 / 决策树 可解释性强,作为 baseline

机器学习实战工作流

一个完整的机器学习项目通常遵循以下流程:

# 典型的 ML 项目工作流
1. 问题定义    → 明确任务类型(分类/回归/聚类)和评估指标
2. 数据收集    → 获取并清洗数据,处理缺失值和异常值
3. 探索性分析  → 可视化数据分布,理解特征关系
4. 特征工程    → 提取、选择、变换特征
5. 模型选择    → 根据任务和数据选择合适的算法
6. 模型训练    → 交叉验证调参,避免过拟合
7. 模型评估    → 在测试集上评估泛化性能
8. 模型部署    → 导出模型,提供 API 服务

常用工具与库

📚 scikit-learn

经典机器学习库,包含几乎所有传统算法实现,统一的 API 接口,适合快速原型开发。

🌳 XGBoost / LightGBM

梯度提升树的高性能实现。LightGBM 训练更快、内存占用更低,Kaggle 竞赛首选。

🔥 PyTorch

深度学习框架,动态计算图设计,调试友好,是学术研究和工业界的主流选择。

🐼 pandas + NumPy

数据处理和数值计算的基础库,pandas 处理表格数据,NumPy 提供高性能矩阵运算。

🚀 学习路线建议

先掌握 scikit-learn 中的经典算法 → 学习特征工程和模型评估方法 → 进阶到 PyTorch 深度学习 → 最终结合大模型(LLM)探索前沿应用。工具是为解决问题服务的,不要追求“最新最复杂”,而要选择“最适合当前问题的”。