Machine Learning入门(二)——机器学习的一般过程

本入门教程主要参考以下教材/教程
李宏毅2021春机器学习课程https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.html
李航《统计学习方法》第二版

之前说机器学习是要找到一个函数,那么怎么找到这个函数呢?一般分为如下三步:

  1. 初始化一个带有未知参数的函数(最简单的就是一次函数,也可以是二次,三次等等)
  2. 为测试数据定义合适的损失函数(Loss Function)
  3. 优化(Optimization)

在这里我们使用一个具体的例子来进行具体理解:GDP预测任务

目前有中国从1960年至2020年以美元计价的GDP生产总值表格[可下载]的数据,下表是部分数据
年份19601961196219632017201820192020
GDP(单位:亿美元) 597.16500.57472.09507.07123104.1138948.2142799.40147227.30
GDP预测数据集的部分数据
  1. 请你预测未来几年的中国GDP数据。
  2. 美国2020年GDP为208937.46亿美元;根据你的预测,假设美国GDP不变的前提下,中国在哪一年可以超过美国?

回顾:这个任务属于回归还是分类?

Tips:这个任务本质就是利用以前的数据设计一个最好的函数,用这个函数预测后几年的GDP数据。

一、初始化函数

第一步需要写出一个带有未知参数的函数,我们先选择最简单的一次函数进行猜测

$$y=b+\omega \cdot x_{1}$$

  • \(y\)是要预测的GDP值
  • \(x_{1}\)是对应的年份
  • \(w, b\)是未知参数,需要通过机器学习得到

特征(Feature):在这个训练中,\(x_{1}\)是已知的也就是对应的年份,我们把它叫做特征。(在这里似乎不好理解,这是因为我们简化了这个问题;实际上GDP应该会和人口,人民币与美元汇率等等因素相关,这些有关的因素就是特征,相当于函数的自变量。)

参数(Parameter):在这个训练中, \(w, b\)为未知参数\(w\)是与特征相乘的参数 ,称为Weight\(b\) 是直接加上的参数,称为Bias(偏移)。

模型(Model): 带有未知参数的函数即为模型。

这里不妨初始化直线为:

$$y=100+50 \cdot x_{1}$$

二、定义损失函数

损失函数(Loss Fuction):Loss也是一个函数,输入是模型中的参数 \(w, b\) ,输出的结果说明这个参数设定为某一值的时候,这个数值好不好。

如何计算Loss?需要通过已给的数据来进行判断;就是函数预估的结果(记为 \(\widehat{y}= b+\omega \cdot x_{1} \) )和实际的结果(记为 \(y\) )之间的差距。衡量差距的方式不只一种,但是这里使用最简单的\(\left| y-\widehat{y}\right|\) [L1 Loss] 确定Loss函数的值。

标签(Label):真实的y值

为什么需要Loss函数?从Loss函数的定义易知,其值越小,预估的 \(\widehat{y}\)和实际的 \(y\)差距越小,模型吻合的越好。 我们可以通过最小化(Minimize)Loss函数的方式,遍历所有可能的 \(x_{1}\) 取值,计算出每一个Loss值并求和。

这个数据集有从1960开始到2020共61年的数据,自变量 \(x_{1}\)有61个取值。计算Loss函数的时候应该充分考虑不同 \(x_{1}\)对应的值 ,不妨记Loss值对应为\(e_{1960},e_{1961},…,e_{2020}\) ,考虑初始化函数,对应的值则为:

$$e_{1960}=\left|y-\hat{y} \right|=\left|597.16-(100+50*1960) \right|$$

最后的Loss函数可以设为:

$$Loss: L=\frac{1}{N}\sum_{i=1960}^{2020}e_{i}=\frac{1}{N}\left ( e_{1960}+e_{1961}+…+e_{2020}\right )$$

Tips:这里使用的Loss计算方式称为L1 Loss,或者MAE(mean absolute error);当然还有L2 Loss,即为平方相减求绝对值得到,也称为MSE(mean square error)。

最后一个部分优化涉及导数的相关内容,将在补充后继续讲解。

留下评论