机器学习笔记

发布于:2024-10-10 ⋅ 阅读:(18) ⋅ 点赞:(0)

飞书崩了,在这里记录吧。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得分:调和平均值

 

决策树用来分类任务

学习过程:

1.每个节点怎么选择分裂的特征。

          最大的纯度(比如一个特征分类可以把全部的动物分成猫或者不是猫)

2.什么时候停止分裂:

       a 当一个节点百分百是一种类别,即是与否

       b 当一个结点的分裂会导致树到达最大深度。

       c 纯度分数低于阈值(接下来会提到纯度分数)

       d 在一个节点上的例子低于某个阈值

纯度分数:

熵:

右边的函数作图,正好是左边的图。 

举例子:

 信息增益:

在决策树的学习中,熵的减少成为信息增益

 选择熵减少最多的。

构建决策树:p92

1.从根节点的所有训练示例开始。

2.计算所有可能特征的信息增益,选择最高的一个信息增益进行分割。

3.根据选择的特征进行分裂数据集,并且创建树的左右分支,将训练示例发送到左右分支。

4.一直重复分裂过程直到满足停止标准:

        a当节点百分百是一种类别

        b当节点分裂会导致树达到最大深度

        c一个额外的分裂获取的信息会小于阈值

        d如果节点的示例低于阈值

通过构建较小的决策树来构建整体的决策树。

one-hot编码:所有特性中总有一个特性具有价值,那是最热门的功能。

引入:特性具有两个以上的离散值

连续的有价值特征:

尝试不同的阈值,做通常的信息增益计算,并用选定的阈值对连续纸进行拆分,如果给了最好的信息,那么从其中获得分裂。

决策树用来做回归任务

耳朵特征作为分裂点因为其具有最大的方差减少。

使用多个决策树:

三个结果最终进行投票,因此预测结果是猫。

随机森林算法

第二个树分列时从n-1个特征中选取特征进行分裂(比如第一次选了鼻子这个特征,第二次就从排除鼻子中的特征中选取,以此类推),假如n的数量很大,也可以采取n的平方根选取特征。

XGBoost

用多个模型进行整合,他们的结果相加,作为最终的预测结果。

树按照顺序依次训练。

是否引入新的节点,看原来的目标函数是否大于新的目标函数,如果新的目标函数小,则需要引入新的节点。

【XGBoost详解】https://www.bilibili.com/video/BV1Zk4y1F7JE?vd_source=17a05ec77f5defb9eb6a5d0e24db6038

xgboost:

代表了极端的梯度提升,是boost树的开源实现,有默认良好的的分裂和停止分裂的标准。内置了正则化以防止过拟合。

什么时候用决策树? 

飞书又可以了,回到飞书。