fastai09-Tabular

表格建模以表格形式接收数据(如电子表格或CSV)。其目标是基于其他列中的值来预测一列中的值。
决策树集合是我们分析新的表格数据集的首选方法。
满足以下条件之一时适合使用神经网络的方法
1. 存在一些高基数的分类变量非常重要("基数"指的是代表类别的离散级别的数量,所以高基数的分类变量就像邮政编码,可以有数千种可能的级别)。
2. 有些列包含的数据最好通过神经网络来理解,比如纯文本数据。
大多数机器学习课程会向你介绍几十种不同的算法,简要解释它们背后的数学原理,可能还会给一个玩具示例。你会被展示的大量技术茫然不知所措,对如何应用它们几乎没有实际理解。

数据集清洗

fastai使用TabularPandasTabularProc清理数据特别方便,详见附录.ipynb文件.

分类变量

结合两张图很好理解, 就是把各类别排序并且用一个数字表示

satty-20240311-18:40:09.png

创建决策树

screenshot_11032024_185931.png
screenshot_11032024_190012.png

随机森林

尽管在数据子集上训练的每个模型会比在完整数据集上训练的模型产生更多错误,但这些错误不会相互关联。不同的模型会产生不同的错误。因此,这些错误的平均值是:零!因此,如果我们取所有模型预测的平均值,那么我们应该得到一个预测,随着模型数量的增加,它会越来越接近正确答案。

基本思想是假设这里有n块区域,每块区域都抽取完整训练集的一部分来创建决策树.当要预测某个样本时,让样本用每个决策树进行预测,取结果的平均值.

袋外误差 | Out-of-Bag Error

我的直觉是,由于每棵树都是用不同的随机选择的行子集进行训练,所以袋外误差有点像想象每棵树也有自己的验证集。该验证集就是那些没有被选中用于该树训练的行。

预测置信度的树方差

我们对使用特定数据行进行预测有多大信心?

这里的方法是让验证集在每一棵树上得到验证, 计算样本在每棵树上验证的结果的偏差,偏差越大,树的预测越不一致.

特征重要性

对于预测特定数据行,最重要的因素是什么,它们是如何影响该预测的?

评价上述问题的指标就是特征重要性.特征重要性算法遍历每一个树的每一个节点,查看该节点的特征是什么,然后给该特征一个改善值(与改组的样本数量有关),这些值在所有树的所有分支中求和,最终将分数归一化,使其总和为1.

这里有点没弄懂,下面是我的猜测.对于下面这个简单的决策树, 我们可以看到根节点有404710个样本,这个节点的特征是Coupler_System,那么模型因为Coupler_System的改善值可能与分裂前的value10.1和分裂后的value=10.21, 9.21有关,改善值乘以样本数404710被添加到Coupler_System的重要性分数中.遍历所有节点,将分数归一化就得到各特征的重要性分数.同样现代库要算这个很简单,见附录.ipynb文件.

satty-20240311-20:30:46.png

其他的几种处理数据的方法

  • 去除低重要性变量

screenshot_11032024_210027.png

  • 去除冗余特征

screenshot_11032024_210105.png

特征依赖

它是为了搞懂这样一个问题

如果一行数据除了感兴趣的特征之外没有变化,那么它会如何影响因变量?

假如要要确定"其他条件相同的情况下, YearMade 会对销售价格产生什么影响".用1950替换 YearMade 列中的每个值,然后计算每次拍卖的预测销售价格,并对所有拍卖进行平均.然后我们对1951年,1952年等进行相同操作,直到我们的最终年份2011年.

screenshot_11032024_213648.png

信息泄漏

下面是一个很好的例子

Jeremy使用随机森林对数据进行建模,然后使用特征重要性来找出哪些特征具有最强的预测能力。他注意到了三件令人惊讶的事情:

1. 该模型能够在95%以上的时间内正确预测谁将获得资助。
2. 显然毫无意义的标识列是最重要的预测因素。
3. 星期几和一年中的日期列也具有很高的预测性;例如,大多数在星期日日期的资助申请被接受,而许多被接受的资助申请日期为1月1日。

对于标识列,每列一个部分依赖图显示,当信息缺失时,申请几乎总是被拒绝。实际上,大学只在资助申请被接受后填写了大部分这些信息。通常,对于未被接受的申请,这些信息只是留空。因此,这些信息实际上在申请接收时并不可用,并且不会对预测模型可用——这是数据泄漏。

树解释器

为了回答这个问题

对于预测特定数据行,最重要的因素是什么,它们是如何影响该预测的?

用瀑布图展示贡献是最清晰的方式.

screenshot_11032024_214843.png

外推问题 | The Extrapolation Problem

随机森林只是对多棵树的预测结果进行平均。而一棵树只是预测叶子中行的平均值。因此,一棵树和一个随机森林永远无法预测超出训练数据范围的值。

screenshot_11032024_215328.png

寻找领域外数据

这里我只能复述它的思路, 它将训练集和验证集合并在一起,构建了一个判断每行是否为验证集的随机森林.从特征重要性的指标中发现训练集和验证集之间有三列存在显著差异: saleElapsed , SalesIDMachineID .然后分别剔除这三者算均方差损失,发现能够移除 SalesIDMachineID 而不会失去任何准确性.

screenshot_11032024_220420.png

使用神经网络

见附录.ipynb

一些先进的技术

集成 | Ensembling

使用多个模型并平均它们的预测结果,这种技术被称为集成。

例如随机森林和神经网络的集成模型

提升 | boosting

  • 训练一个欠拟合你的数据集的小模型。
  • 计算该模型在训练集中的预测。
  • 从目标值中减去预测值;这些被称为“残差”,代表训练集中每个点的误差。
  • 回到第一步,但是不要使用原始目标,而是使用残差作为训练的目标。
  • 继续执行此操作,直到达到某个停止准则,比如最大树数量,或者观察到验证集错误变得更糟。

使用提升树集成进行预测时,我们计算每棵树的预测值,然后将它们相加。

💡
请注意,与随机森林不同,使用这种方法时没有任何阻止我们过拟合的机制。在随机森林中使用更多的树不会导致过拟合,因为每棵树都是独立的。但在增强集成中,拥有更多的树会使训练误差变得更好,最终你会在验证集上看到过拟合。

将嵌入与其他方法结合

从训练好的神经网络中获得的嵌入,在作为输入特征时显著提升了所有测试过的机器学习方法的性能

screenshot_11032024_223356.png

建议

  • 随机森林是最容易训练的,因为它们对超参数选择非常弹性,并且需要很少的预处理。它们训练速度很快,如果有足够的树,不应该过拟合。但它们可能会略微不够准确,特别是在需要外推的情况下,比如预测未来时间段。
  • 在理论上,梯度提升机的训练速度与随机森林相同,但在实践中,您将不得不尝试许多不同的超参数。它们可能会过拟合,但通常比随机森林更准确。
  • 神经网络需要最长的训练时间,并且需要额外的预处理,比如归一化;这种归一化在推断时也需要使用。它们可以提供很好的结果并且能够很好地外推,但只有在您小心处理超参数并避免过拟合时才能实现。
我们建议从随机森林开始分析。这将为您提供一个强大的基准线,您可以确信这是一个合理的起点。然后,您可以使用该模型进行特征选择和部分依赖分析,以更好地理解您的数据。
从这个基础上,你可以尝试神经网络和GBM,如果它们在合理的时间内在验证集上给出了显著更好的结果,你可以使用它们。如果决策树集成对你有很好的效果,尝试将分类变量的嵌入添加到数据中,看看这是否有助于决策树学习得更好。
Google Colaboratory

Read more

fastai14-Resnet

卷积神经网络有这样两个问题 * 我们需要大量的步长为 2 的层来使我们的网格在最后变成 1×1 * 无法在除我们最初训练的尺寸之外的任何尺寸的图像上工作 全卷积网络 | fully convolutional networks def avg_pool(x): return x.mean((2,3)) 前面正常卷积, 剩下的直接求平均 def block(ni, nf): return ConvLayer(ni, nf, stride=2) def get_model(): return nn.Sequential( block(3, 16), block(16, 32), block(32, 64), block(64, 128)

By kamado nezuko

pt命令行做种

发布种子各站点都有教程, 奈何使用的qb下载器为qbittorrent-nox, 没有直接生成torrent文件的选项, google发现可以使用transmission-cli命令行生成torrent 安装 sudo apt install transmission-cli 生成torrent种子 transmission-create -p -o path/to/example.torrent --tracker tracker_announce_url --piecesize 2048 path/to/file_or_directory * -p: 私有种子,不使用 DHT * -o: 生成 torrent 文件路径 * -t: tracker 地址 * -s: 每个文件块大小(参考下表) 文件大小 文件块大小 0 GB - 0.5 GB

By kamado nezuko