优化均方根误差检验的预测问题

王 茂南 2018年3月9日06:28:18
评论
1265字阅读4分13秒
摘要这一篇文章会叙述如何优化在评价算法是均方根误差的时候的预测结果。给出一种除了在模型上改变之外的方法。

这一篇也是自己在整理文件的时候发现的,是一次在参加数据挖掘比赛的时候看到的。大概内容是关于需要预测一组数据,有三次提交的机会,使用均方根误差来做检验预测是否正确。

在这种情况下,我们除了在改进模型的,还有什么办法可以使得预测得更加精确呢,下面就提供了一种方法。

我还是直接使用手写的公式推导来完成相关的介绍。(感觉这次字写得好丑呀)

优化均方根误差检验的预测问题

下面截一下当时ppt上的图片,帮助理解:

优化均方根误差检验的预测问题

对于上面的公式,我们使用python来实现以下:

  1. import numpy as np
  2. # 计算误差
  3. def rmse(s1,s2):
  4.     return np.sqrt(np.mean((s1-s2)**2))
  5. # -----
  6. # 数据生成
  7. # -----
  8. # 随机产生数据-这个作为要预测的数据,实际我们是看不到的
  9. zhenshi = np.random.randint(1000, size=24552)
  10. # c为第一次预测与第二次预测的差
  11. # c = np.array([10]*len(zhenshi))
  12. c = np.random.randint(100, size=24552)
  13. # diyici为第一次预测的数据,dierci为第二次预测的数据
  14. diyici = np.random.randint(500, size=24552)
  15. dierci = diyici + c
  16. # 计算第一次预测与第二次预测的误差
  17. wucha1 = rmse(zhenshi,diyici)
  18. wucha2 = rmse(zhenshi,dierci)
  19. # -------
  20. # 计算系数
  21. # -------
  22. # k1是实际的,我们正常是不能计算的,因为不知道真实值
  23. k1 = (c.dot(zhenshi)-c.dot(diyici))/c.dot(c)
  24. k2 = (len(dierci)*wucha1**2-len(dierci)*wucha2**2)/(2*c.dot(c))+0.5
  25. # 计算得到优化后的预测值
  26. youhua = dierci + k2*c
  27. # 计算优化后的误差
  28. wucha3 = rmse(zhenshi,youhua)
  29. # ------
  30. # 打印结果
  31. # ------
  32. print('xishu1',k1)
  33. print('xishu2',k2)
  34. print('wucha1',wucha1)
  35. print('wucha2',wucha2)
  36. print('wucha3',wucha3)

我们看一下运行的结果:

优化均方根误差检验的预测问题

对于上面的打印结果,我们分析以下:

  • xishu1是真实的优化系数,是拿真实值计算的,实际情况我们是算不出的;
  • xishu2是我们通过上面的方法计算得到的,可以看到与真实的相差不大
  • wucha1,wucha2分别是前两次预测的误差
  • wucha3是我们优化后的预测值的误差,可以看到比前面两个都小,可以看到是有效果的

以上就是关于优化均方根误差检验的预测问题,希望以后自己在遇到这种问题可以使用到这种优化的方法(其实实际使用下来,误差不会减小这么多,但是也是会减小的,在无法优化模型的情况下,可以使用这种方法进行优化)。

  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南
  • 本文由 发表于 2018年3月9日06:28:18
  • 转载请务必保留本文链接:https://mathpretty.com/9057.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: