一、机器学习分为三步:
Step1、Function with unknown(带有未知数参数的函数)
根据所存在的数据集(训练集)提出一个模型 F ( y = b + wx):
x: 输入值(数据来自训练集)即为 feature
w: 权重 -- weight
b:偏移 -- bias
y :根据x得出预测值 即输出值
Step2、Define loss
Loss 就是 函数 即为 L(b , w)
含义: 表示此b,w 所确定的model,其得出的预测值y与真实值之间差距
eg:如下图:
其中
关于e 计算方式有三种,即损失函数有三种情况:
利用相同的训练集,训练不同的w与b,得到一个图形,该图形横坐标为W,纵坐标为b,其线表示对应w与b的Loss
那么如何找到min的L呢?
就需要第三步,参数优化
Step3、optimation
通过一种方式,优化L,使L最小化,从而得到最优的参数w,b
如何优化L呢?
其中一种方式为 梯度递减 Gradient Descent
为了方便起见,以一个参数来表示梯度递减运行思路,如下图:
1、首先、随机初始化参数
2、其次、计算此处的微分,即该点 的斜率,判断此处微分(斜率)是>o or <o
若>o, W这个参数向左移动(减小W值);否则增大
3、最后、直到W移动到error surface 的最低点即停止,因为此时该点的微分为0
Ps:1、关于W参数移动的步长有两因素组成:对应点的微分值; (learning rate)
2、关于使用梯度递减,只会到达error surface的local minma 而非global minima 是伪命题
实际对于两个参数 求其中Loss最小值,如下图:
(根据梯度递减,不断优化L,只有得到参数w,b的最优解)
Ok,此时我们假装自己不知道未来的数据,其实我们是根据过往的数据, 即训练集来训练出最终的model (y = 0.1k + 0.97x)。而这个model的L = 0.48k (即误差为0.48k)
但我们真的会在意这个次数吗?
不是的,我们真正关心的是对于未来的数据,是否能预测出正确的数值。
所以,接下来,我们用这model (y = 0.1k + 0.97x)用test数据集 预测未来的数值
其误差值L' = 0.58k
那么能不能做的更好呢?
在此之前,我们先用model (y = 0.1k + 0.97x)与 test数据集画图,找关系
你会发现,他们是有周期性的,每隔7天一个循环
那我们知道这个model是个烂的,因为此model是每隔1天
而我们应该升级model,使model每隔7天
所以,这个过程就是对model(模型)进行修改,而对于模型的修改往往来自于我们对问题的理解,就是Domain Knowledge。
而一开始,当不理解问题时,我们是随便写的一个model,之后根据结果误差,发现可以更新。如下图:
这样的model,有个共同的名字:Linear models
二、基本概念
回归 -- 函数输出值为数值(scalar)
分类 -- 给定多个classes,函数输出正确的class