改善R^2 (1) | ML#Day24

如同「决定系数篇」所介绍,R^2的数字越趋近於1,模型能够解释的能力越强,那麽我们就是追寻更好的R^2数字。

除了尝试挖掘更多派得上用场的参数,总结我们这段时间摸索下来,认为值得一提的两个经验,分作两篇说明。


1. 增加资料笔数

首先考虑资料的偏颇,如果只收集单一一天客户的资料,会不会这一天购物状况刚好比较有起伏,其实距离平均值有点落差?

那麽多拉几天的时间分别收集可能有帮助,甚至可以的话,收集资料的时间拉得越长,应该越贴近平均状况。

另一方面,如果资料笔数太少,会不会对结果有显着影响呢?Vertex要求资料集至少需要有1000笔资料,但我们无法确认这1000笔资料是否足够。

第一次准备的资料笔数刚好1000笔整整,R^2是0.22。

第二次拉长抓取资料时间的周期,2000笔,R^2是0.2。

第三次藉由rolling window的方式增加资料量,凑到10000笔,R^2是0.21。

以上的结论是否代表,1000笔资料就已经足够了呢?其实不一定,R^2是一个糟糕的数字,会不会是已经太糟糕了,所以笔数多寡在这个模型的训练已经不是影响的关键,也许在R^2不错的时候,有可能有显着的影响也不一定。

重点是为了增加笔数,我们学会rolling window的方法,这个方法十分实用,某一种程度可以不需担心资料笔数的问题,不过无法增加变异性更多的资料就是了。

所谓rolling window,简单来说就是部分重叠地使用旧资料,加上部分新的资料,凑成新的资料。举例而言,有个阵列如下:

[1,2,3,4,5,6,7,8,9,10]

如果我们是两两取一组,间隔地取,只能拿到5组

[1,2]
[3,4]
[5,6]
[7,8]
[9,10]

但如说是重叠地取,可以取得更多资料,如下就有9组的资料

[1,2]
[2,3]
[3,4]
[4,5]
[5,6]
[6,7]
[7,8]
[8,9]
[9,10]

而在每个数字都代表着离散的资料,而且不破坏其次序,这样的使用方式合理。

顺便一提,在股票市场用的移动平均线,就是使用rolling window


<<:  DAY 17 制作 Nav Bar - Header

>>:  Day-20 Process

python os.walk鬼打墙

os.walk 找子目录下特定类型档案,鬼打墙好几天。也写了一两篇po上来,就当是"叠床架...

EP05 - 从零开始,在 AWS 建置 Gitlab 使用 Terraform

配置 Gitlab 环境 昨天我们使用 Terraform 创建好一个给 Gitlab 使用的 EC...

Day27 - GitLab CI 如何让工作流程流水线跑快一点?之一 从 .gitlab-ci.yml 大部分解

在专案过程中,透过 GitLab CI 建立流水线,让研发过程中如编译、测试、打包、部署等工作都得以...

[Day32] Angular Material

虽然我们的网站终於整个都布署到云端上,而且功能都正常了,但是,我们的页面外观仍然是丑到不忍直视,虽然...

第三天:Gradle 的 5 个重要观念

Gradle 可以做的事情实在太多了,导致初学者很容易被其强大又神秘的架构吓到。因此笔者觉得有必要把...