机器学习笔记
飞书崩了,在这里记录吧。continue
1方差和偏差
1学习曲线
高偏差
平均训练误差在一会后会平,因为随着训练数据的增多,拟合的曲线不会有太大的变化
如果一个数据有很高的偏差,那么获得更多的训练数据本身并没有多大帮助。所以在投入很多的训练数据之前要检查算法是否具有很高的偏差。
高方差
高方差在训练集上做的好
当增大训练集时,对于算法有用,会使得jtrain升高到标准水平,使得jcv降低到标准水平
2方差和偏差决定下一步做什么
房价预测的回归模型
如果在预测中出现了很大的错误,接下来应该怎么做?
1.如果是高方差:①获取更多的训练集②更少的特征属性③增加正则化参数λ
2.如果是高偏差:①获取更多的特征属性②增加额外的多项式属性③减少正则化参数λ
3方差和偏差与神经网络
大型神经网络在小中数据集上是低偏差的,即如果神经网络足够大,总能够很好的适应你的训练。
神经网络中的正则化,代码实现。
总结两点:
1.拥有一个更大的神经网络几乎没有坏处,只是因为硬件问题导致训练速度等变慢,但不会损坏算法本身的性能
2.如果神经网络足够大,那么他会是一个低偏差的机器,非常适合非常复杂的功能。
2应用
1.机器学习的发展历程
迭代循环
诊断:查看算法的偏差和方差,以及误差分析,根据这些做出决定扩大神经网络或者更改正则化参数λ或者添加更多数据或者添加或减少特性等,然后循环迭代
构建垃圾邮件分类器的例子
1.训练一个分类器
2.怎样去减少分类器的错误呢?
2误差分析
流程:
如果出现大量的错误分类数据,那么可以随机抽取例如10%抑或20%来做和上图相同的工作。
3添加数据
1数据增强
1简单例子
以识别字母为例,对输入x施加失真或者变换 ,创建像A差不多的额外示例。
2更高级的示例
通过扭曲A船舰一个更丰富的字母A示例库。
3.数据增强的技巧
对数据做的扭曲或者修改,应该代表测试集中的噪声或者失真类型。即让数据更加嘈杂。
2数据合成
左边是真实世界中截取的图片数据,右边是用 计算机上的字体合成生成的图片数据。
两种不同关注点:
4 迁移学习:使用其他任务中的数据
允许使用来自不同任务的数据来实现
1复制神经网络
除了最后的w5其他可以全部迁移至新的神经网络中。
1.应用别人的数据集进行复现的过程成为监督预训练(Supervised pretraining)。
2.将初始化的参数或监督预训练的值进一步进行梯度下降微调权重成为微调(Fine tuning)。
最终适应识别数字的具体应用
从这海量的数据中训练的模型即便有100万张和需要实现的数字识别不一致,也会是模型具有很好的性能。
为什么迁移学习有用?明明是不同的特征?从猫、狗->数字
检测的都是事物的边边角角等基本形状。
预训练的一个局限是输入的类型必须相同。即如果你的预训练模型是机器视觉,那么你想通过微调实现一个语言大模型是不可取的。
总结迁移学习:
1.下载(或者自己训练)带有参数的已经在大型数据集上预训练过的并且与应用程序具有相同的输入类型的神经网络
2.根据自己的数据进一步训练或者微调网络。
3.机器学习的发展过程
以语音识别为例
1确定范围-》2收集数据-》3.训练模型(有可能会重新回到第二步)-》4.部署模型
如果想部署一个巨大的模型,一下是必须要考虑的。
4.精确率和召回率
参考自己写的博客,二分类任务。这两个值都高,则说明算法是很有用的。
精确率和召回率的权衡:
提高阈值:
提高了精度,降低了召回率
j降低阈值:
一般都这样:阈值随着不同的应用程序来选择和确定。
F1得分:调和平均值
决策树:
学习过程: