改善R^2 (2) | ML#Day25

接续上一篇,第二种改善R^2的经验。

2 . 减少极端值的影响

所谓的模型输出的准确性,也可以这麽想:

如果输出的结果是如预期,输入的该资料刚好是模型可以解释的部分。

如果输出的结果是不如预期,输入的该资料是模型无法解释的部分。

那麽如果事先知道,哪些是模型无法解释的资料并且去除,那麽模型解释的能力是不是更好?


2-1. 移除超过上下界的资料

所以「假设」有部分的资料还是可以解释的,那麽去除极端值,训练出来的模型R^2应该有显着的提升,如果完全没有可以解释的部分,那麽就还是会一样烂。

幸运的是我们经由统计比较好的夥伴,做一些资料分布的分析,发现我们资料还是有某一定的规律。

但有一些超过上界的资料,数值与其他的比较起来太过极端,可能对於模型训练有严重影响,提出先把超过上界资料去除的想法,所以我们重新逐笔处理资料,一但发现答案栏的数值有超过上界的数值,该笔raw data直接先移除。

调整之後,根据该夥伴的说法,在他自己电脑训练出来的的模型,R^2高达0.9以上。

我们将处理过後的资料重新丢到vertex建立新的autoML模型,R^2的结果大概是0.5左右。

虽然我们尚不清楚autoML内容是怎麽做,为什麽跟夥伴跑出来的模型R^2有一段差距,不过至少验证了去除极端值,对於改善R^2有显着的帮助。


2-2. 资料转换

如果去除明显的的极端之後,仔细检视资料距离中心点两端的分布状况,还是有些偏差的状态不尽人意呢?

本来现实中采集的资料,大部分时候就不会很漂亮,尝试做一些资料上的转换(transmation),有利於更多的状况理解。

由於订单金额是一个蛮大的数字,我们选择开根号的做法。

开根号可以减少资料彼此间的距离,下面简单举个例子:

未经处理分数由小到大如下:

4 ,9, 11, 23, 45, 49, 71, 82, 91, 93

开根号之後如下:

2, 3, 3.3, 4,8, 6.7, 7, 8.4, 9, 9.5, 9.6

预测的落点在1~10,会相对1~100的状况容易许多,而实际使用的时候则须将得出预估值乘以平方。

当然这个最後的结果会更加不精准,不过原本预期就是会有个误差范围的结果,在可以接受的误差又何妨呢?

於是经过开根号处理的资料,模型训练出来的R^2得到了0.6。

另外也可以选择取对数(log)的方式做资料转换。


2-3. vertex 提供的改善选项

我们回到Vertex在训练新模型的步骤,「训练选项」的进阶设定,提供了3个选项:

  • 均方根误差(预设)
  • MAE
  • RMSLE

根据我们前面「其他名词解释」说明的MAE和RMSLE,搭配这篇去除极端值影响的讲解,应该可以理解两者是相似的方式。

原始资料R^2用均方根误差跑出的结果只有0.2左右,用了MAE会有0.3,用了RMSLE则到了0.4。

或许比起我们事先处理过资料再下去跑的状况差了一点,但看来都是所有改善。


小结:

对於我们这种资料科学的新手团队,或许vertex能够帮助就到这边了,如何改善模型R^2值以及抓出更好的参数,或做出更好的资料还是得靠我们自己。

不过我们还是给vertex高度的肯定,因为有这样的工具,很大程度地保障了「训练」、「部署」、「应用」这些重要的工作,让我们需要专心对付的事情,范围缩小了许多。


<<:  EP18 - [TDD] 订单 API 串接 (1/2)

>>:  Day21 xib传值的小教室2

ASP.NET MVC 从入门到放弃(Day24)-MVC删除资料介绍

接下来讲讲删除 部分... 在查询的View那边可以看到下方程序码 @Html.ActionLink...

DAY7 浅扒网路 - 估计被扒皮的是我不是网路

「将127.0.0.1改成内网IP」,这是上一篇的某个步骤,没浅浅扒一下网路基础,对学习有点影响~~...

【资料结构】树_实作-二元树的前中後追踪&&最大最小值&树叶

tree-二元树的前中後追踪&&最大最小值&树叶 实作练习 说明 实习课的一...

网站不想你爬

这边想说一下,关於上一篇有讲到我利用superagent()来获得网站资讯,结果抓取失败。这是因为不...

#13. Split Landing Page(原生JS版), #14. RGB to Hex Converter(原生JS版)

#13. Split Landing Page 今日的挑战比较偏向CSS,是做出一个有滑动效果的La...