机器学习-线性回归笔记

线性回归解决的问题的特点是输入多个参数,输出一个数值。

通过一些方法找出最佳的一个函数。

函数形式如:y=b+w*x      ---b:偏移量  w:权重           (1)

或:y=b+w_{1}*x+w_{2}*x^{2}                                          (2)

还可以写成更一般的形式:y=b+\sum w_{i}x^{i}                     (3)

那么我们该如何评价函数的好坏呢,这时候就需要定义一个Loss函数。

通常,我们可以将Loss函数定义为L(f)=L(w,b)=\sum_{i=1} (\widehat{y}-(b+w*x^{i}))^{2}                (4)

即方差,L值越小,那么函数越好。

我们要如何找到最小的L值呢?

我们先考虑一个参数w的情况,及方程为y=w*x.

我们的目的是要收敛Loss到最小,那么就可以借助L函数对w的导数来调整w的走向,此处导数可以理解为L曲线在某一点的斜率。

> 随机选取一个初始值w^{0}

> 计算\frac{\mathrm{d} L}{\mathrm{d} w}|_{w=w^{0}}w^{1}=w^{0}-\eta \frac{\mathrm{d} L}{\mathrm{d} w}|_{w=w^{0}}

> 重复步骤二,更新w值,直到w=0.

观察步骤二,可以发现导数为负数时,w会增加,否则减少。且绝对值越大,步长越大,参数\eta为步长的权重,人为干预收敛的速度。

如果有两个参数的情况怎么办呢?

如L(b,w),我们可以分别对b和w计算偏微分来得到每个参数的偏移量。参考上述步骤。

我们可以发现这种Loss函数不存在local minimal。

现在我们学会了如何在一个model上得到最小Loss。即评价一个函数的好坏。

我们可以构造更复杂的model来train数据,如(2)式。

随着model复杂度变高,training data会得到更好的结果,但是在testing data上可能会得到更差的结果。

这就是overfitting(过拟合)。

解决过拟合可以通过选取合适的model。

还可以给Loss函数增加一个平滑度权值。如L=\sum_{n} (\widehat{y^{n}}-(b+\sum w_{i}x_{i}))^{2}+\lambda \sum (w_{i})^{2}.

此函数弱化了计算出的方差的影响,强调了原本的w值。

这样设计loss函数,我们希望方差小的同时参数也小。这样可以弱化输入数据的变化,使得model对于输入数据的变化变得不敏感。起到正则化的效果。

有时候我们可能会发现无论怎么选取model都无法得到较低的Loss,那么就需要考虑是否有其它的影响因子我们没有考虑进去。

Error来自于什么地方呢?

来自于两个地方,bias和variance.

bias就像你在打靶时,没有瞄准到靶心,从而导致弹痕集中分布在偏离靶心的一个区域内。

variance就是你瞄准到了靶心,但是由于一些机械故障,风速等影响,导致弹痕分布在靶心周围的区域内。

我们要如何找到靶心呢?

问题可以转化为计算mean(\mu)的值。

对于一个有n个点的数据集,我们可以计算出这个数据集的平均值m。注意m\neq \mu.

那么k个不同的数据集会有k个不同的m,对这k个m再取平均值,就得到了\mu。此时的\mu是unbiased(无偏)的。

如何计算数据集的离散程度呢?

我们记数据集的variance为\sigma ^{2}.

设m为数据集中n个点的平均值,s^{2}为方差,即s^{2}=\frac{1}{N}\sum_{n}(x^{n}-m)^{2}.

Biased estimator:

E[s^{2}]=\frac{N-1}{N}\sigma ^{2}      (此处不懂)

越简单的model,viarance越小,反之越大。

因为复杂model受data影响较小。

那对于Bias恰恰相反,越简单的model,Bias越大。

因为简单model包含的范围较小,很难将\widehat{f}包含进去。反之,越复杂的model包含范围越大,越容易将\widehat{f}包含进去。

所以就会出现这种情况,当随着model越来越复杂,bias变得越来越小,viarance变得越来越大。

我们就要找到一个平衡点,综合考虑bias和viarance,使得总体error最小。

如果model不能很好的拟合training data,你就会有较大的bias,这就是欠拟合(underfitting)

如果model可以很好的拟合training data ,但是再testing data上有较高的error,你可能有较大的viarance,这就是过拟合(overfitting)

For bias: 重新设计你的model

> 增加更多的features。

> 增加model的复杂度。

For viarance: 

> 更多data: 很有效,但通常很难收集更多的data。

> Regularization(平滑度):强迫函数曲线变平滑,可能会伤害bias,使得函数不包含\hat{f}.

model选择技巧

(1)误区

    当model在testing data上表现较好时,并不代表在real data上也会有较好的表现。

(2)cross validation(交叉验证)

    将training data 分为两部分:training data 和 validation data。用validation data 来选择你的model。放到testing data上测试时不要轻易更改你的model,参考上述误区。

(3)N-fold cross validation

    将training data分为3部分,选取其中一个作为验证集,剩下2个部分作为training data。

这样会有3中排列组合。如图

我们可以将所有的model在每一种组合上train并算出error,最后每种model会有3个error,计算average error。

选取最小的average errord 的model,在整个training Set上train,最后拿到testing data 上测试。如图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值