种一棵树最好的时间是十年前,其次是现在。
一、机器学习算法分类
机器学习(ML,Meachine Learning)是人工智能的核心领域,让计算机从数据中学习规律并做出预测,本文简单介绍机器学习的算法分类和开发流程。
常见的机器学习算法从学习方式上可以分为以下几类:监督学习
、无监督学习
、半监督学习等其它类型
,其中监督学习是指使用带有标签(已标记)的数据集进行训练,模型通过学习输入特征与标签之间的映射关系进行预测或分类
,监督学习又可以根据输出是否连续分为分类和回归问题,连续的称为回归,离散的称为分类;而无监督学习则是指处理无标签(未标记)的数据集,模型通过算法自行发现数据中的隐藏结构或模式(如聚类、降维)
。
机器学习 算法分类 |
子类 | 定义 | 常见算法 | 应用场景示例 |
---|---|---|---|---|
监督学习 | 分类 | 使用带有标签的数据集进行训练 模型输出离散数据 |
k-近邻算法 贝叶斯分类 决策树 逻辑森林 逻辑回归 SVM 神经网络 |
垃圾邮件检测 图像识别 |
回归 | 使用带有标签的数据集进行训练 模型输出连续数据 |
线性回归 岭回归 随机森林 |
房价预测 销量预测 |
|
无监督学习 | 聚类 | 聚类算法将数据点分组 使得同一组内的数据点相似度高 而不同组的数据点相似度低 |
K-means算法 层次聚类 |
客户分群 文档主题分类 |
降维 | 减少数据集中的特征数量 以简化模型并提高计算效率 |
主成分分析(PCA) | 分析药物主要成分 | |
其它 | 半监督学习 | 结合少量标注数据和大量未标注数据进行学习 | 标签传播 半监督SVM |
医学图像分析 |
自监督学习 | 通过数据自身的结构生成标签进行训练 | Masked Language Model(BERT) 对比学习 |
自然语言处理 图像预训练 |
|
强化学习 | 通过与环境的交互学习最优策略 以最大化长期奖励 |
Q-Learning 深度Q网络(DQN) 策略梯度 |
游戏AI 机器人控制 自动驾驶 |
|
深度学习 | 多层神经网络自动提取特征 可应用于监督/无监督/强化学习 |
CNN RNN |
图像识别 文本生成 |
二、机器学习开发流程
以监督学习为例,但核心步骤适用于所有机器学习任务
2.1 步骤1-问题定义
核心目标:将模糊的业务需求转化为可量化的机器学习任务。
关键操作 | 说明 | 案例 |
---|---|---|
确定任务类型 | 分类/回归/聚类? | 用户流失预测 → 二分类任务 |
定义成功指标 | 选择与业务目标一致的评估指标 | 欺诈检测 → 高召回率(宁错杀不放过) 推荐系统 → 精确率 |
约束条件分析 | 时延要求、可解释性需求、计算资源限制 | 医疗诊断 → 需要可解释性(选择决策树而非神经网络) |
可行性评估 | 数据是否足够?特征是否可获取? | 使用数据矩阵草图验证特征覆盖率 |
常见陷阱:
- 将回归问题错误定义为分类问题(如将销售额预测转为"高/中/低"三分类)
- 忽略业务成本(如信用卡欺诈中误判好客户的代价)
2.2 步骤2-数据收集
数据类型 | 获取方式 | 预处理难点 |
---|---|---|
结构化数据 | SQL查询、数据仓库导出 | 处理缺失值 |
文本数据 | API抓取、日志解析 | 分词、去停用词 |
图像数据 | 爬虫、公开数据集 | 尺寸归一化 |
时序数据 | IoT传感器、用户行为日志 | 处理时间漂移 |
2.3 步骤3-数据预处理
核心目标:将原始数据转化为信息密度更高的特征。
2.3.1 数据清洗
缺失值处理策略:
方法 | 适用场景 |
---|---|
删除样本 | 缺失率<5%且随机缺失 |
中位数/众数填充 | 数值型/分类型特征 |
模型预测填充 | 高价值数据且缺失有模式 |
增加缺失标志位 | 缺失本身包含信息 |
2.3.2 特征工程
特征变换技巧:
- 数值特征:对数变换(右偏分布)、Box-Cox变换
- 时间特征:提取"小时/星期几/是否节假日"
- 文本特征:TF-IDF、Word2Vec嵌入
- 组合特征:用户年龄 × 商品价格(交互效应)
降维策略对比:
方法 | 保留信息 | 可解释性 | 线性假设 | 适用场景 |
---|---|---|---|---|
PCA | 全局结构 | 低 | 需要 | 图像预处理 |
t-SNE | 局部结构 | 中 | 不需要 | 高维数据可视化 |
LDA | 类别区分 | 高 | 需要 | 分类任务特征压缩 |
自编码器 | 非线性 | 低 | 不需要 | 复杂数据表示学习 |
2.3.3 数据分割
把处理好的数据按一定比例划分训练集、测试集、验证集。
2.4 步骤4-模型选择与训练
简单算法选型决策树:
scikit-learn的算法选择决策:
计算优化技巧:
- 使用GPU加速(CUDA)
- 分布式训练(如Spark MLlib)
- 增量学习(partial_fit)处理超大数据
2.5 步骤5-模型评估
评估指标全景图:
分类任务:
┌─宏观指标──准确率(Accuracy)
├─类别平衡─┤
│ └─F1-score(F1)
│
├─概率评估─AUC-ROC曲线
│
└─业务对齐─精确率(Precision)/召回率(Recall)权衡
回归任务:
├─绝对误差─MAE(平均绝对误差)
├─放大异常─MSE(均方误差)
└─比例解释─R²(决定系数)
典型问题诊断:
- 准确率高但AUC低 → 模型无区分力
- 验证集表现远差于训练集 → 过拟合
- 某些类别召回率极低 → 样本不平衡
2.6 步骤6-模型调优
调优方法对比:
方法 | 搜索效率 | 并行性 | 适用空间大小 | 代码实现 |
---|---|---|---|---|
网格搜索 | 低 | 高 | 小(<10维) | GridSearchCV |
随机搜索 | 中 | 高 | 中(<100维) | RandomizedSearchCV |
贝叶斯优化 | 高 | 低 | 大 | BayesianOptimization |
遗传算法 | 中 | 高 | 极大 | TPOT |
调优黄金法则:
- 先粗调(大范围随机搜索)
- 再精调(小范围贝叶斯优化)
- 最终确认需在测试集上只评估一次。
2.7 步骤7-模型部署与监控
简单的部署架构示例:
用户请求 → API网关 → 预测微服务 → 模型缓存
↓
监控系统(Prometheus)
↓
日志分析 → 模型性能仪表盘
监控关键指标:
- 预测分布变化(PSI群体稳定性指数)
- 特征漂移检测(KL散度)
- 业务指标关联性(如推荐系统CTR变化)
可参考的迭代触发机制:
监控警报规则:
- PSI > 0.25 → 严重漂移
- 精度下降 > 15% → 需要重新训练
- 新数据量 > 10倍原始数据 → 自动触发增量训练
模型版本管理参考:
- 使用MLflow/DVC跟踪实验
- A/B测试流量分配(10%新模型 vs 90%旧模型)
动态流程调整: