深度学习笔记(二十五)结构化机器学习项目之机器学习策略1
作者:互联网
文章目录
- 一、为什么用机器学习策略?
- 二、正交化Orthogonalization
- 三、单一数字评估指标
- 四、满足指标和优化指标
- 五、训练集、开发集、测试集的划分
- 六、开发集和测试集的大小
- 七、什么时候改变开发集和测试集的指标
- 八、什么是人的表现?
- 九、可避免偏差
- 十、理解人的表现
- 十一、超越人的表现
- 十二、改善模型表现
一、为什么用机器学习策略?
我们训练一个模型时,可以从很多方面对模型进行优化
但是,如果是盲目选择方案进行优化,可能的结果是经过几个月的努力,发现自己努力的方向出现了偏差,白费功夫。那么简单来说,机器学习策略就是指引我们朝着更有希望的方向前进。
二、正交化Orthogonalization
举两个例子
- 老式电视机有很多调节旋钮,不同的旋钮可以调节不同的图像属性,比如宽度、高度、旋转角度等,这些旋钮直接互不影响,可以分别调节。
- 汽车有方向盘控制方向属性,有油门刹车控制速度属性,方向和速度两个属性分开调节,试想如果调整方向会带动速度改变,是多么可怕的一件事儿。
尽量使用正交化控制对模型进行优化。
三、单一数字评估指标
- Precision
查准率
真猫在总体中的占比 - Recall
查全率(召回率)
在真猫中你的分类器正确识别出了多少
如选用两个指标判断哪个模型好,是不可取的。有一种折衷的方法,取两者的调和平均值作为指标F1 Score
F
1
S
c
o
r
e
=
2
1
P
+
1
R
.
F1Score=\frac{2}{\frac{1}{P}+\frac{1}{R}}.
F1Score=P1+R12.
多指标难以抉择哪个算法更好,而平均值就直观多了,再举一个例子如下:
四、满足指标和优化指标
简单总结一下满足指标和优化指标(这是两个名词!)
- 满足指标:满足条件即可,比如运行时间不超过100ms,相当于设置一个阈值
- 优化指标:需要优化的指标,取满足指标范围内的最大准确度值
举个例子,语音唤醒设备中
- 满足指标:#false positive 次数要限制在24h 1次,即一天内不能出现超过一次的不唤醒却醒了的情况
- 优化指标:触发字检测系统的准确度
五、训练集、开发集、测试集的划分
给一个机器学习团队开发集和单一指标,他们可以很快找到最佳的模型和方案。但是这里有个坑,开发集和测试集如果来自不同分布,很可能做无用功,比如下图中的例子:
描述形象一点,开发人员会说:“你给我们开发集,让我们尽可能准确地瞄准靶心打,现在你们把靶心移动到另一个位置,这合理吗?”
再举个例子,一个团队开发的系统是预测中收入人群是否有能力偿还贷款,而最后给入的数据竟然是低收入人群,那么,靶心给人家移走了,还怎么准确预测呢?
六、开发集和测试集的大小
前面的学习我们知道一个重要的知识:
开发集和测试集必须来自同一分布!!!
现在考虑开发集和测试集的规模需要多大?
划分数据集的传统法则
- train70%+test30%
- train60%+dev20%+test20%
大数据下的数据集划分
- train98%+dev1%+test1%
没有test的情况
数据集 = 训练集 + 开发集
七、什么时候改变开发集和测试集的指标
这里老师举了比较现实的例子,在猫图像的分类中,有A B两种算法
明显A算法的误差更小是吧,但是A中的3%里把色情图片识别为猫,那么可想而知,在用户的推荐中会收到色情图片的推荐。这合理吗?这离谱了对吧。所以从可用性的角度,会选择B算法。
一般计算Error公式:
1
m
d
e
v
∑
i
=
1
m
d
e
v
L
(
y
p
r
e
d
(
i
)
≠
y
(
i
)
)
\frac{1}{m_{dev}}\sum_{i=1}^{m_{dev}}L(y_{pred}^{(i)}\neq y^{(i)})
mdev1∑i=1mdevL(ypred(i)=y(i))
但是这公式对色情和非色情图片一视同仁,于是我们采用加权的方式求Error
x
(
i
)
∈
x^{(i)} \in
x(i)∈ non-pron,
w
(
i
)
=
1
w^{(i)}=1
w(i)=1;
x
(
i
)
∈
x^{(i)} \in
x(i)∈ pron,
w
(
i
)
=
10
w^{(i)}=10
w(i)=10
E
r
r
o
r
=
1
∑
i
=
1
m
d
e
v
w
(
i
)
∑
i
=
1
m
d
e
v
w
(
i
)
L
(
y
p
r
e
d
(
i
)
≠
y
(
i
)
)
Error=\frac{1}{\sum_{i=1}^{m_{dev}}w^{(i)}} \sum_{i=1}^{m_{dev}} w^{(i)}L(y_{pred}^{(i)}\neq y^{(i)})
Error=∑i=1mdevw(i)1i=1∑mdevw(i)L(ypred(i)=y(i))
新定义的评估指标可以更符合实际地告诉我哪个算法更合适!
正交化这样一个过程,分为两步
- 设置目标,也就是结果的指标
- 分别思考如何优化指标
在另一个例子中,如果你用的指标和开发测试集不符合实际应用,是时候改变你的指标或开发测试集了。
八、什么是人的表现?
为什么对比人和机器学习系统?
- 因为深度学习的发展,机器学习算法威胁到人的表现
- 精心设计机器学习流程,机器学习甚至做得比人更好
绿色的虚线称为贝叶斯最优误差率,是算法所能达到的最高准确度,不能再有所提升了。
为什么机器学习超过人的行为后会大幅度减速发展?
- 人类在很多任务中,距离贝叶斯误差率已经不远了,所以机器学习超过人类后,提升空间已经很小
- 当水平低于人类时,总有方法和工具提升,超过可就不一定了
比较ML和人的表现的好处:
人类擅长做一些任务(比如:肉眼识别猫等),这时ML比不上人类,我们可以做如下工作:
- 人为标记数据
- 人工错误率分析
- 更好的偏差/方差分析
九、可避免偏差
引入方差和偏差的知识点:
- 训练集误差过大------偏差大
- 开发集误差过大------方差大
我们认为人是擅长肉眼识别图像的,将人的表现误差近似看作贝叶斯误差率,即一个最优的标准,训练集误差就会尽可能去靠近贝叶斯误差率,这一段距离称作可避免偏差。将开发集误差尽可能靠近训练集误差,实质上是降低方差。
- 左边的例子中专注减少可避免偏差的潜力更大
- 右边的例子中专注减少方差的潜力更大
这一部分的内容将帮助我们通过人类水平错误率、贝叶斯错误率估决定不同场景下我们应该选择什么优化策略——是使用避免方差策略还是避免偏差策略。
十、理解人的表现
- 要替代贝叶斯误差率,从最低误差率入手,近似看作0.5%
- 要定义人类水平误差率时,要明确目的和场景所在,如果超过某类人,在某些场合部署系统也许正确
当ML接近人类水平时,很难判断到底改进偏差好还是改进方差好,上面的例子中慎重选择贝叶斯误差率发现改进偏差更适合。
十一、超越人的表现
当专家团队误差率0.5%,训练集误差率0.6%时,我们将0.5%作为贝叶斯误差率的估计值,这样问题不大。
当专家团队误差率0.5%,而训练集误差率0.3%时,怎么办怎么办?贝叶斯误差率可能是0.2%,可能是0.1%,甚至更小。那么现有的一些工具就无法指示我们应该从偏差还是方差等方面进行优化了。
在哪些问题上ML可以超过人的表现呢?
- 广告的推荐系统
- 产品建议
- 物流运输时间
- 借贷款能否偿还的预测
这些方面显而易见,机器做得比人好,现在是不是电脑给你推荐的书籍和视频比身边最亲近的人推荐的更符合你胃口?是不是甚至比你自己网上搜索查找得到的结果更好?机器可以访问到大量后台数据,这些数据可能比所有人类所能访问到还多得多,这也是为什么ML可以在这些场景优于人类表现。
需要注意的是,上面四个例子都是从结构化数据中学习来的,他们不是自然感知问题,比如计算机视觉、自然语言处理,人类在自然感知问题上做得非常好,所以机器也很难超越。
在最后吴恩达老师期待大家可以搭建出超越人类的深度学习系统 (/奥力给表情)
十二、改善模型表现
我们学习了方差偏差过大的原因,正交化,如何设立开发集和测试集,用人类水平误差估计贝叶斯误差,如何估计可避免偏差和方差。现在我们将他们组合起来,形成一套指导方针!
监督学习的两点基本假设
- 很好地拟合训练集(可避免偏差)
- 训练集的表现很好地应用于开发/测试集(较小的方差)
来来来 come on!!!干货来了,将之前学到的知识总结成一套经验法则,看看如何降低可避免偏差和方差。
这一部分优化经验在课程中反复提及,所以说真的就是时不时就巩固了一遍,在优化我们自己的模型时,从这几个方面入手,会有不小的帮助!
吴恩达老师说这一部分机器学习策略的知识容易上手,但是难以精通。如果能系统全面地应用这一课的概念,那你已经比现有的大多数机器学习团队更高效、更系统、更有策略地提高机器学习系统的性能。
标签:学习策略,机器,偏差,指标,方差,误差率,贝叶斯,学习 来源: https://blog.csdn.net/qq_16763983/article/details/113445554