1、为什么要预测神奇宝贝的CP值?

CP(Combat Power)值指的是一只神奇宝贝的战斗力,每个神奇宝贝有初始CP值,在抓到一个神奇宝贝后投喂糖果之后就会进化,CP值增加。如果可以精确的预测一只神奇宝贝进化后的CP值,就可以提前决定是否进化这只神奇宝贝,放弃投喂进化后CP值较低的神奇宝贝。

2、Step 1: Model

用X表示一只神奇宝贝,Xcp表示神奇宝贝进化前的CP值,Xs表示神奇宝贝是哪种物种,Xhp表示神奇宝贝的生命值,Xw表示神奇宝贝的重量,Xh表示神奇宝贝的身高,y表示进化后的神奇宝贝的CP值。
比如说,存在这样的函数关系:y=b + w * Xcp,其中b、w是人以参数。可带入任意参数,如下图:

这样就可以得到很多function,其中有些是合理的,有些是很不合理的。这个Model属于Linear model,可以表示成:y=b + ∑WiXi ,其中Xi可以是Xcp、Xhp、Xw、Xh,Wi表示weight,b表示bias因为进化后的CP值可能和这些中的某一项有关,详解如下图:

3、Step 2:Goodness of Function

第二步需要我们判断一个function的好坏,怎么做呢?首先我们需要收集一些训练的资料。这个训练的资料会显示出function的input和output之间的对应。即真的需要去抓一些神奇宝贝,投喂糖果后,看他进化后的CP值。y^表示进化后的真实的CP值。需要多组数据,捕捉多个神奇宝贝。如下图:

假设捕捉十只神奇宝贝,把这十只神奇宝贝原始的CP值以及进化后的CP值画出来就是:如下图:

接下来就可以衡量一个function好坏,其中需要另一个function,也就是需要定义一个 Loss function L,如:

由于function f实际上是由w和b决定的,因为y=b + w * Xcp,所以上面的公式也可以写成:


如果把Loss function L画出来就是下图,其中每个点都是一个function,颜色表示Loss的value,其中红色表示非常的大,蓝色代表Loss的value比较小。图中打叉的地方就是最小的loss大致位置,接下来就是找出它。

4、Step 3 : Best Function

我们需要找一个 f 使得 L(f) 的值最小,记作 f*。如图:

接下来就是需要解出上面的公式,用到线性代数的知识。但是这种方法只对Linear regression有用,其他配置不适用。所以介绍一种更加general的方法,即Gradient Descent(梯度下降)
Gradient Descent(梯度下降)

一、考虑Loss function L现在只和w有关,画出他们的关系图,可以直观的看出哪个w可以使得loss最小。或者更有效的方法,也就是Gradient Descent。首先随机找一个初始位置W0,接下来计算w在W0这个位置对L的微分(也就是找切线的斜率),当其值小于零时,左高右低,应该增加w的值来减小loss,相反同理。如图:

就这样一直计算移动,直到w等于0,这是就卡住了。但是可能选择不同的初始点,最终会停在不同的极小值点,Gradient Descent不能保证每次都可以找到global minima,如图:

二、 现在考虑Loss function L和w、b两个参数有关,如图:

画图出来就是下图,其中颜色代表Loss function的数值,每个点代表一个function。任意选择一点,在该点分别对w和b做偏微分,乘以负lamaga之后得出一个向量,向量会指向等高线的法线方向。更新点后,继续计算偏微分。直到计算出来的偏微分等于0,没有办法前进。

三、存在问题

在一的图中可以明显的发现,有些地方的斜率(微分)结果为0,但是,他可能距离最佳的损失值还很远。如果今天做的是Linear regression(线性回归)的话,就不需要太担心这个问题,因为Linear regression定义的Loss function,它是一个碗的形状,从碗的任意一个地方放球,他都会滚到碗的中间。但是对于更加复杂的model需要考虑着各种体。

5、结果

如果y=b + w * Xcp,大概b = -188.4,w = 2.7(即打叉的位置)的时候,损失值是最小的。下图中的红线就是带入参数后的function的直线。图中e1,e2…表示出错大小。如下图:


之后把所有的e平均起来,得到一个值,即:

但是,我们真正在意的并不是我们已经抓到这些具有真实进化数据的神奇宝贝,我们想要知道的是它对从来没有出现过的神奇宝贝进化后的CP值的预测是否准确。最终,又找来十只从未见过的神奇宝贝做预测,得到的平均错误数据为35.0,大于31.9。如图:

6、 模型复杂化结果

之前我们假设的是y = b + w * Xcp,现在选择另一个复杂一点的model,y=b + W1Xcp + W2(Xcp)2,此时仍然是Linear Model,所谓Linear Model 就是它的参数对它的Output是不是Linear。会发现Average Error明显好多了。如下图:

这时如果一直继续选择更加复杂的model,如:就会发现,训练的Average Error依然是降低的,但是测试的Average Error又升高了。如下图:


所以,一个更复杂的model,不一定会带来更好地结果。这就是过拟合

7、影响进化后的CP值的其他因素

当我们不仅只抓十只神奇宝贝,增加神奇宝贝的数量时会发现,影响CP值的还有其他的,如:神奇宝贝的种类。所以之前的model推翻,重新设计。如图:


此时设计的model,仍然是Linear Model ,这是因为上图的公式可以写成这样,如下图;

画出每种神奇宝贝的测试结果,会发现Average Error均降低了。如下图:

也许其他的因素如:重量,生命值…也会影响神奇宝贝进化后的CP值,没关系把所有的因素统统加进来。如图:


这样会发现,Testing Error更加高了,所以有些无关的因素是需要排除的。现在介绍另外一种方法,我们可以修改Loss Function。如图:

机器学习笔记(二)-预测神奇宝贝CP值相关推荐

  1. 李宏毅机器学习[1]-宝可梦CP值预测

    最近在B站上学习李宏毅的机器学习的课程(2020版),他讲了一个预测宝可梦CP值的例子让我对机器学习有了一个大概的了解,或者说是让我明白了机器学习是要干嘛.下面是我对这个例子的认识和理解. 目标:预测 ...

  2. 机器学习笔记 时间序列预测(基本数据处理,Box-Cox)

    数据调整 调整历史数据通常会导致更简单的预测任务. 在这里,我们处理四种调整:日历调整.人口调整.通货膨胀调整和数学变换. 这些调整和转换的目的是通过消除已知的变化源或通过使整个数据集的模式更加一致来 ...

  3. 机器学习笔记(二)模型评估与选择

    2.模型评估与选择 2.1经验误差和过拟合 不同学习算法及其不同参数产生的不同模型,涉及到模型选择的问题,关系到两个指标性,就是经验误差和过拟合. 1)经验误差 错误率(errorrate):分类错误 ...

  4. 机器学习笔记二 单型线性回归

    线性回归 (一)介绍 (二) 数学模型 2.1 一元线性回归公式 2.2 方差 - 损失函数 Cost Function 2.3 优化方法 Optimization Function 2.4 算法步骤 ...

  5. 机器学习笔记二十四 中文分词资料整理

    一.常见的中文分词方案 1. 基于字符串匹配(词典) 基于规则的常见的就是最大正/反向匹配,以及双向匹配. 规则里糅合一定的统计规则,会采用动态规划计算最大的概率路径的分词. 以上说起来很简单,其中还 ...

  6. 机器学习笔记 时间序列预测(最基本的方法【benchmark】)

    1 最基本的方法 这些方法将作为这个系列的benchmark 有时,这些简单方法中的一种将是可用的最佳预测方法: 但在许多情况下,这些方法将作为基准而不是选择方法. 也就是说,我们开发的任何预测方法都 ...

  7. 吴恩达机器学习笔记二之多变量线性回归

    本节目录: 多维特征 多变量梯度下降 特征缩放 学习率 正规方程 1.多维特征 含有多个变量的模型,模型中的特征为(x1,x2,-xn), 比如对房价模型增加多个特征 这里,n代表特征的数量, x(i ...

  8. 脑电图机器学习笔记(二):SVM 脑电波原信号和傅立叶变换的 癫痫信号检测

    使用SVM进行癫痫检测 背景: 这是一片论文的简单复现,只是还原思想,不知道是不是我看的不够仔细,我觉得论文说的也就是这样简单的操作 论文名称:Seizure prediction with spec ...

  9. 李弘毅机器学习笔记:第二章

    李弘毅机器学习笔记:第二章 回归定义和应用例子 回归定义 应用举例 模型步骤 Step 1:模型假设 - 线性模型 一元线性模型(单个特征) 多元线性模型(多个特征) Step 2:模型评估 - 损失 ...

最新文章

  1. OO第一单元作业总结
  2. linux无法访问mysql_Linux下MySQL无法访问问题排查的基本步骤
  3. docker安装flowable-ui
  4. HaaS 物联网极客大赛来了!奖金丰厚等你来!
  5. HDU4311(排序+二分)
  6. openkm zip 导入乱码问题解决
  7. 泛型算法STL中的迭代器,泛型算法,萃取机的一个实现案例
  8. 【深度学习】——物体检测细节处理(NMS、样本不均衡、遮挡物体)
  9. [轉]数据挖掘工具的选择
  10. 干货|亲测有效的N倍学习效果笔记法
  11. goland远程调试Docker
  12. PS教程第十六课:图层是Ps的基石
  13. 一些常用且实用的原生 JavaScript函数[转]
  14. 苹果手机的隔空投送怎么使用?
  15. 【热聘】蚂蚁金服-系统软件和安全资深/高级/专家/工程师
  16. java jeditorpane 自动换行_java – JTextPane JScrollPane自动换行?
  17. 概率扩散模型 Probabilistic Diffusion Model
  18. 艾宾浩斯记忆曲线背单词
  19. 读书印记 - 《自私的基因》
  20. 微信小程序开发WXML语法之条件渲染用法

热门文章

  1. GetMessage底层机制分析
  2. 软件工程师(Java后端)-工作感想/小技巧
  3. 基于JAVA印染公司信息管理系统计算机毕业设计源码+系统+数据库+lw文档+部署
  4. 如何把Windows下的字体添加到Linux中
  5. 自由Windows软件
  6. css table设置边框_(代码示例)css实现等高布局的三种方式
  7. linux系统中如何解压rar文件
  8. autojump的简单使用
  9. Linux Apache 配置 websocket wss
  10. 智能语音技术如何切C端市场,科大讯飞交出这样一份答卷