文章目录
如何思考机器学习问题 + 机器学习工作流程:
机器学习有关于问题设置的选择,识别客户需求和长期目标。
一、构建机器学习问题
1. 识别相关的重要人物
- 客户
- UI设计师
2. 选择正确的性能指标
- 商业指标
- 机器学习指标
- 好的机器学习指标不一定是好的商业指标
- 混淆矩阵
- accuracy(分类指标)
- recall(查全率)
- precision(查准率)
- IoU
3. 是否真的需要机器学习方法
4. 数据需要什么
- 自己获取数据
- 使用公开数据集
- 记住你的目标和你的算法应用场景
- domain gap:在一个数据集训练很好的算法在另一个却不能用。数据集分布之间的不同。
5. 使用的评价指标是什么
- 模型性能并不总是首要的,比如推理时间(模型输出预测结果的时间)有时候更重要
二、有关数据的挑战
1. 实验性数据分析(exploratory data analysis):
分析新数据并提取机器学习问题相关信息的过程是至关重要的,可以了解数据集并发现潜在的挑战
2. 机器学习算法对domain shift敏感
- 天气/光照条件
- 传感器不同
- 环境(车流量大小)
3. 交叉验证:评估模型泛化能力的一系列方法
- 使用验证集评估比较模型性能、选择模型参数
- 测试集:交叉验证结束之后再使用
- 小心数据泄露:训练数据流入验证数据
- LOO(Leave One Out) or k-fold(深度学习不怎么用)
4. 过拟合
- 失去了泛化能力
- 模型过于复杂
- 模型开始学习噪音而不是有意义的特征
- 使用训练数据与测试数据
5. bias-variance折衷:
创建高性能机器学习模型并保证对新数据的泛化能力。
一般很难创建平衡模型,我们希望
l
o
w
V
a
r
low Var
lowVar 和
l
o
w
B
i
a
s
low Bias
lowBias,但是
l
o
w
B
i
a
s
low Bias
lowBias 会导致
h
i
g
h
V
a
r
high Var
highVar(过拟合)。
- T e s t E r r o r TestError TestError(在测试数据上的错误率)= V a r Var Var + B i a s Bias Bias + ϵ \epsilon ϵ。
- V a r i a n c e Variance Variance: 对训练数据的敏感度(如果改变数据,我们模型的错误率会改变多少;泛化好就低)
- B i a s Bias Bias: 拟合的质量(给定训练数据,我们的模型有多好)
三、模型测试
1. 模型选择
- 建立baseline:为了更好了解模型质量
- 上限(最高性能期待):人类的水平预测结果
- 下限(最低期待性能):算法随机预测的结果
- 如果低于下限,看看是不是有什么问题
- 选择模型(动态的,需要多次迭代)
- 从简单模型开始逐渐增加复杂度
- 选择模型——训练集训练模型——验证集验证模型——选择模型(循环)
- 不要改变训练、验证数据
- 如果增加了数据则从简单模型开始重新循环
2. 错误分析
- 了解模型的局限性
- 通过loss function value、accuracy和其他指标进行分析
- 根据loss分类数据进行分析
- 发现错误数据中的pattern