机器学习从零到一:监督学习、数据划分与模型评估
10/23/2025
机器学习从零到一:监督学习、数据划分与模型评估
监督学习目标是让模型学会映射:输入特征 → 输出标签。工程上更关注数据质量、特征表达与评估流程,而不仅仅是选择算法。
一、数据与划分策略
- 训练/验证/测试:常见比例 6/2/2,或用交叉验证提高稳定性。
- 时间序列:要按时间切分,避免泄漏未来信息。
- 分层抽样:分类任务中按标签分布切分,保持训练/验证分布一致。
from sklearn.model_selection import train_test_split
X_tr, X_te, y_tr, y_te = train_test_split(X, y, test_size=0.2, stratify=y, random_state=42)
二、特征工程与选择
- 数值标准化:
StandardScaler让不同量纲可比较。 - 类别编码:
OneHotEncoder;高基数可用目标编码或嵌入。 - 文本:TF-IDF、词向量;图像/音频需专用提取。
- 特征选择:过滤法(相关性)、包裹法(递归特征消除)、嵌入法(正则化)。
三、模型与超参
- 线性模型:
LogisticRegression,可解释性好;配合正则化避免过拟合。 - 树模型:
RandomForest、XGBoost,非线性与鲁棒性强。 - 超参搜索:网格/随机/贝叶斯优化;先粗调再精调。
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
pipe = Pipeline([
("scaler", StandardScaler()),
("clf", LogisticRegression(max_iter=1000))
])
pipe.fit(X_tr, y_tr)
四、评估与监控
- 分类:准确率、精确率、召回率、F1、ROC-AUC;关注类别不均衡下的指标。
- 回归:MAE/MSE/RMSE、R²;注意异常值影响。
- 监控漂移:上线后监控特征分布与标签分布,及时再训练。
from sklearn.metrics import classification_report
print(classification_report(y_te, pipe.predict(X_te)))
五、可复现实验与数据版本
- 固定随机种子、记录超参与数据快照;使用 MLflow/Weights & Biases 做实验跟踪。
- 数据版本:用
DVC或数据仓库记录采样与清洗过程,保证复现。
六、常见陷阱
- 数据泄漏:把目标信息错误地泄漏到特征;管道化处理避免在整个数据上拟合。
- 过拟合:训练分数高但测试差;正则化、交叉验证与早停。
- 不合理指标:只看准确率忽略召回,导致业务失败。
结语
机器学习更像一条生产线。数据、特征、模型与评估环环相扣,只有打磨好每个环节,才能把“能跑的模型”变成“可信赖的系统”。