机器学习之一(读书笔记)

这篇博客介绍了机器学习的基本概念,包括回归问题、梯度下降算法以及bias和variance的重要性。通过实例详细解释了线性回归的模型构建、损失函数与优化,并讨论了过拟合和正则化解决方法。
摘要由CSDN通过智能技术生成
  • Regression
  • Gradient Descent

一、绪论

机器学习就是找函式。
寻找函式的方法----Gradient Descent
在这里插入图片描述15个知识点。

  1. Regression:输出一个数值
    List item
  2. Binary Classification:输出值只有Y或N

在这里插入图片描述
3. Multi-class Classification:输出值在很多个中选一个
在这里插入图片描述
4. Generation:生成
在这里插入图片描述
5.Supervised Learning:给机器有label的资料
在这里插入图片描述
5. Unsupervised Learning:给机器无label的资料
6. Reinforcement Learning:Reward
在这里插入图片描述
7. Transfer Learning:训练集和数据集不一样也能生成
在这里插入图片描述
8. 函式的Loss:评判一个函式的好坏
在这里插入图片描述
9.
在这里插入图片描述

二、Regression(回归)

  task:预测PM2.5;预测股票系统;预测自动车;推荐系统;预测出的结果应该是一个数值。
  以宝可梦为例(根据十只宝可梦预测CP值):
在这里插入图片描述

Step1:Model
y = b + w ⋅ x c p y = b + w \cdot x_{cp} y=b+wxcp
=>Linear model:
y = b + ∑ w i x i y = b + \sum{w_{i}x_{i}} y=b+wixi
其中, x i x_{i} xi:input feature(各种不同的属性);
w i w_{i} wi:weight;b:bias

Step2:Goodness of Function
y = b + w ⋅ x c p y = b + w \cdot x_{cp} y=b+wxcp
x n x^{n} xn表示第n个object, y ^ n y\hat{}^{n} y^n表示第n个output。
在这里插入图片描述

输出是一个数值。
  Loss function L:衡量函式多不好,它的input:function;
  output:how bad it is.
         L ( f ) = L ( w , b ) L(f) = L(w , b) L(f)=L(w,b)
= ∑ n = 1 10 ( y ^ n − ( b + w ⋅ x c p n ) ) 2 =\sum_{n = 1}^{10}(\hat{y}^{n} - (b + w \cdot x_{cp}^{n}))^{2} =n=110(y^n(b+wxcpn))2
(以上选择estimation error定义L,也可选择其他的方式)
Step3:Best Function
穷举所有的w b使L最小
在这里插入图片描述

也可以用Gardient Descent(梯度下降):

1.只有一个参数w时:

(随机)选一个初始点 w 0 w^{0} w0,计算在 w = w 0 w =w^{0} w=w0位置参数w对Loss的微分;假如微分(即切线斜率)为负,则w越大,L越小,则应该增加w的值(增加一个step size);反之,减少w值。

step size取决于两件事:

  1. 现在的微分值 d L d w \frac{dL}{dw} dwdL多大,若越大,移动距离越大
  2. learning rate η \eta η
    假如微分值为负,则应增加w值,step size为 η d L d w \eta\frac{dL}{dw} ηdwdL是负的,应该减去它,即
    在这里插入图片描述

  接下来,在 w 1 w^{1} w1位置继续计算微分,以此类推,直到 w T w^{T} wT的位置到达local minimum ,微分为0

2.有两个参数w和b时:
(随机)选一个初始点 w 0 w^{0} w0 b 0 b^{0} b0,计算在 w = w 0 w =w^{0} w=w0 b = b 0 b =b^{0} b=b0位置对Loss的偏微分;
在这里插入图片描述
  不过,可能有好几个local optimal(局部最优)值,取决于初始值
但linear regression不用担心这个问题,因为它 No local optimal,是convex(凸形)
回到宝可梦:
在这里插入图片描述

最终得到一条结果如图:
在这里插入图片描述

  若想知道做的多好或者多不好可以计算一下error:
  即每个蓝点到红线的距离,相加再平均
在这里插入图片描述

  training data到此结束,再抽新的10只宝可梦作为testingdata,再计算error。
  可以看到这个model在x很小和很大时是不准确的,如何做得更好呢?
  重新设计一个二次式的model:
   y = b + w 1 ⋅ x c p + w 2 ⋅ ( x c p ) 2 y = b + w_{1} \cdot x_{cp} + w_{2} \cdot (x_{cp})^{^{2}} y=b+w1xcp+w2(xcp)2
  然后根据training data再进行Gradient Descent得到新的best functon:
在这里插入图片描述

可以看到error变小了。
如何做得更好呢?
可以考虑设计一个更复杂的model:
y = b + w 1 ⋅ x c p + w 2 ⋅ ( x c p ) 2 + w 3 ⋅ ( x c p ) 3 y = b + w_{1} \cdot x_{cp} + w_{2} \cdot (x_{cp})^{^{2}} + w_{3} \cdot (x_{cp})^{^{3}} y=b+w1xcp+w2(xcp)2+w3(xcp)3
再通过training data再进行Gradient Descent得到新的best functon:
在这里插入图片描述

model为加到四次式:
在这里插入图片描述

结果居然比上一个model更糟。
当model加到五次式,结果比四次式更糟糕。

统计五次model得到的training data–average data的图:
在这里插入图片描述
  统计五次model得到的testing data–average data与training data–average data的对比图:
在这里插入图片描述

  得到结论:复杂的model在training data在有好的结果,但是在testing data上不一定有好结果,这叫做Overfitting(过度拟合)。

  但是宝可梦还会受到种类的影响,假如分为Pidgey、Eevee、Weedle、Caterpie四种,然后回到设计function model:
在这里插入图片描述

综合起来就是:
在这里插入图片描述得到的结果:
在这里插入图片描述

得到的结果比之前更好。
  但是可能还有很多因素没有考虑进去,为了更好可以再考虑因素加入model中(比如使model变为二次式,再加上生命值和高度值):
在这里插入图片描述

但是得到的结果过度拟合了。
  可以通过Regularization(正则化)来解决这个问题(重新定义Loss function,w越小得到的function越平滑):
  重新定义loss function:在原有的lossfunction后面加上额外的term即 λ ∑ ( w i ) 2 \lambda \sum{(w_{i})^{2}} λ(wi)2,其中 λ \lambda λ为常数,后面的表示把所有的 w i w_{i} wi平方后相加,即:
在这里插入图片描述

三、bias和variance

  要想得到平滑的function考虑的有两项error和smooth, λ \lambda λ越大代表考虑smooth的那个regularization那一项的影响力越大, λ \lambda λ越大得到的function越平滑(在做regularization时没有考虑bias:b,因为对平滑程度没有影响)
在这里插入图片描述

  error的两个来源:bias和variance(方差)
   f ∗ f^{\ast } f is an estimator of f ^ \hat{f} f^,两者的距离来自于bias或variance。
  一个estimator(估计值)的bias和variance:假如现在有一个变量x,要估计它的mean(平均值) μ \mu μ,假设它的variance是 σ 2 \sigma ^{2} σ2

  1. 取样N个{ x 1 , x 2 , . . . , x N x^{1},x^{2},...,x^{N} x1,x2,...,xN}
  2. 计算这N个点的平均值得到m: m = 1 N ∑ n x n m = \frac{1}{N}\sum_{n}x^{n} m=N1nxn
    但是 m ≠ μ m \neq \mu m=μ,且多次计算的m都可能不等于 μ \mu μ,但是m的期望值一定是等于 μ \mu μ的(unbiased)
  3. m的期望值:
    E [ m ] = E [ 1 N ∑ n x n ] = 1 N ∑ n E [ x n ] = μ E[m] = E[\frac{1}{N}\sum_{n}x^{n}] = \frac{1}{N}\sum_{n}^{}E[x^{n}] = \mu E[m]=E[N1nxn]=N1nE[xn]=μ
  4. m在 μ \mu μ的周围散布情况取决于m的variance:
    V a r [ m ] = σ 2 N Var[m] = \frac{\sigma ^{2} }{N} Var[m]=Nσ2
    variance值取决于取了多少个sample,即N
    估测variance的方法:1.先按照刚才的方法估测出m;2.再计算 s 2 = 1 N ∑ n ( x n − m ) 2 s^{2} = \frac{1}{N}\sum_{n}^{}(x^{n} - m)^{2} s2=N1n(xnm)2,这个 s 2 s^{2} s2可用来估计 σ 2 \sigma ^{2} σ2,但是 s 2 s^{2} s2的期望值并不等于 σ 2 \sigma ^{2} σ2,是biased, s 2 s^{2} s2的期望值: E [ s 2 ] = N − 1 N σ 2 ≠ σ 2 E[s^{2}] = \frac{N - 1}{N}\sigma ^{2} \neq \sigma ^{2} E[s2]=NN1σ2=σ2

   bias就是你射中的位置的期望值距离中心的偏移;variance就是你射中的位置距离瞄准的位置的偏移;如图
在这里插入图片描述

Bias: E [ f ∗ ] = f ˉ E[f^{\ast }] = \bar{f} E[f]=fˉ ,此与 f ^ \hat{f} f^的距离即为bias;
在这里插入图片描述

   比较简单的model,它的bias比较大,但variance比较小;比较复杂的model,它的bias比较小但variance比较大;这张图,从左到右,bias逐渐下降,但variance越来越大;若error来源于variance很大,这种情况叫做Overfitting;若error来源于bias很大,这种情况叫做Underfitting。
  如果你的model没办法fit你的training examples 说明bias大(Underfitting);
在这里插入图片描述

  如果在training data上得到小的error,但是在testing data 上得到一个大的error,意味着model的variance比较大(Overfitting)。

解决bias大和variance大的方法:
  bias大说明model你们根本没有包含target,这个是时候redesign你的model,比如重新设计model式子,把更多feature加进去(这种情况collect更多data没用);
  variance大的话,第一种方法就是可以增加data,不会伤害bias(由于可能无法收集到更多data ,可generate fake training data,比如手写字的training data,可旋转角度,或颠倒图片,比如语音识别只有男声没有女声,可将之前的男声用变音器转换一下);第二种方法就是regularization(正则化),让曲线变得平滑(可能会伤害bias)。

如何trade-off(平衡)bias和variance?
Cross Validation(交叉验证)

  把你的training set分为两组,一组是training set(train model),一组是validation set(选model);将model1、2、3在training set上train好后,再放在validation set(如果担心分开后training data变少,可以在定好最好的performance的model之后拿这个model在原来的training data再train一次)上看每个的performance即error;将performance最好的model apply在public testing set上。
在这里插入图片描述

  如果在testing set上得到的结果大于选择的model的error,不建议返回去再改变什么,因为这样就把testing data的bias考虑进去了。

  如果担心分坏training data,可以做N-fold Cross Validation(N次交叉验证):比如做3-fold把你的training set分为3份,拿其中一份做validation set,另外两份当training set;每次选择不同的一份做validation set,共三种情景,每个情境下算一次每个model的error,然后算一下它的average error;然后把performance最好的那和model放在完整的training set上再train一次,最后再去apply在testing set上。


本文是对blibli上李宏毅机器学习2020的总结,如有侵权会立马删除。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值