李宏毅机器学习Regression

1.回归定义

  • regression就是寻找一个函数,通过输入特征,然后输出一个数值

2.模型步骤

  • Step1:模型假设,选择模型框架(linear model)
  • Step2:模型评估,如何判断众多模型的好坏(loss function)
  • Step3:模型优化,如何筛选最优的模型(Gradient Descent)

Step1:模型假设–linear model

一元线性模型(单个特征):最简单的模型(线性模型),并且假设因变量只有一个,即宝可梦进化前的cp值,则表达式为 y = b + w ⋅ x c p y=b+w\cdot x_{cp} y=b+wxcp
多元线性模型(多个特征):对单变量模型进行泛化,生成多变量线性模型,表达式为 y = b + ∑ w i x i y=b+\sum w_ix_i y=b+wixi。其中 x i x_i xi表示的是每个特征的取值, w i w_i wi表示的是每个特征对应的权重,b表示的是偏置(bias).
李宏毅机器学习Regression_第1张图片

Step2:模型评估–loss function

  • 使用损失函数(loss function)来衡量模型的好坏

统计10组原始数据 L ( f ) = L ( w , b ) = ∑ n = 1 10 ( y n − ( b + w ⋅ x c p n ) ) 2 L(f)=L(w,b)= \sum_{n=1}^{10} ( y^n−(b+w⋅x _{cp}^n)) ^2 L(f)=L(w,b)=n=110(yn(b+wxcpn))2的值,和越小模型越好。
其中 y y y表示的是真实值,后者表示的是预测值。
公式是对所有样本的误差求平方和。
李宏毅机器学习Regression_第2张图片

Step3:模型优化–Gradient Descent

从理论上来说,如果存在评估标准和函数空间,就可以使用穷举法选择出最优函数。但实际上来说,这是不可取的,因为计算量太大而且耗时太长。所以我们需要在有限时间内(而且不能太慢),求出最优函数。
由此引出梯度下降法:
李宏毅机器学习Regression_第3张图片
李宏毅机器学习Regression_第4张图片
这里需要引入一个学习率的概念:移动的步长,上图中的 η \eta η

  • 步骤1:随机选取一个 w 0 w^0 w0
  • 步骤2:计算微分,也就是当前的斜率,根据斜率来判定移动的方向:
    • 大于0减小w值
    • 小于0增加w值
  • 步骤3:根据学习率移动
  • 重复步骤2和步骤3,直到找到最低点
    李宏毅机器学习Regression_第5张图片
    梯度下降存在的问题
  • 局部最优点
  • 学习率太低导致迭代至收敛太慢
  • 学习率太高导致直接越过谷底,算法发散

不过对于局部最优点,线性回归问题不大,因为线性回归中的损失函数为凸函数,所以不存在局部最优点

3.验证模型好坏

  • 使用训练集和测试集的平均误差来验证模型的好坏

训练集上
李宏毅机器学习Regression_第6张图片
测试集上
李宏毅机器学习Regression_第7张图片
测试集上的误差大于训练集上的误差很正常。
但是是否存在更好的函数,使得训练数据和测试数据的评估误差都变小呢?根据泰勒公式,任何形式的函数都可以近似表示为若干个多项式函数之和。而我们现在使用的是线性函数,则可以尝试使用多项式函数降低数据误差。

4.优化模型

Step1:1元N次线性模型

李宏毅机器学习Regression_第8张图片
可见,二次模型在训练集和测试集上的表现都比之前更优秀。
然后可以再试试三次,四次,五次……

  • 注意:其实不是只有图像是直线的就是线性模型,其他各种复杂的曲线也可以是线性模型,因为把 x c p 1 = ( x c p ) 2 x_{cp}^{1}=(x_{cp})^2 xcp1=(xcp)2看作一个特征,那么 y = b + w 1 ⋅ x c p + w 2 ⋅ x c p 1 y = b + w_1\cdot x_{cp} + w_2\cdot x_{cp}^1 y=b+w1xcp+w2xcp1其实就是线性模型

结果显示,到四次的时候,训练和测试综合效果最好,而五次中虽然训练误差最小,但是测试误差很大,此时过拟合——即在训练集上表现很好,但在测试集上表现很差(相对为欠拟合——训练集和测试集上表现都很差)。

由于高幂次函数空间包括了低幂次函数空间。虽然幂次的上升,会使得训练数据的误差不断减小,但是可能也会使得测试数据的误差急剧增加。
李宏毅机器学习Regression_第9张图片

Step2:步骤优化

通过对Pokemons种类判断,将4个线性模型合并到一个线性模型中:
李宏毅机器学习Regression_第10张图片
李宏毅机器学习Regression_第11张图片
李宏毅机器学习Regression_第12张图片
加入宝可梦种类作为自变量以后,即使是线性模型,训练和测试误差都很小:
李宏毅机器学习Regression_第13张图片
考虑把宝可梦的体重、身高、HP都加入到自变量中:
李宏毅机器学习Regression_第14张图片
把宝可梦种类加入到自变量中,如果使用二次函数进行拟合,就会出现过拟合的现象:
李宏毅机器学习Regression_第15张图片

Step3:正则化

  • 更多特征,但是权重w可能会使某些特征权值过高,仍旧导致overfitting,所以加入正则化
  • 注意正则化项不包括偏置项
    李宏毅机器学习Regression_第16张图片
  • 正则化公式中的 λ \lambda λ取值越大,会使得函数越平滑。这是由于 λ \lambda λ的值越大,在尽量使损失函数变小的前提下,就会使得w越小,w越小就会使得函数越平滑(在很多应用场景中,并不是w越小模型越平滑越好,但是经验告诉我们 w 越小大部分情况下都是好的)。
  • λ \lambda λ本质上表示的是惩罚项,惩罚项过大可能就会影响学习的效果,因为惩罚项过大,就会导致参数空间变得比较小,所以最终结果一般。
    李宏毅机器学习Regression_第17张图片

你可能感兴趣的:(机器学习,人工智能)