zoukankan      html  css  js  c++  java
  • 机器学习-线性回归

    通常我们学习机器学习都是从线性回归模型开始的。线性回归模型形式简单、易于建模,但是我们可以从中学习到机器学习的一些重要的基本思想。

    什么是回归?

    是一种监督学习方式,用于预测输入变量和输出变量之间的关系,等价于函数拟合,选择一条函数曲线使其更好的拟合已知数据且更好的预测未知数据。

    线性回归

    于一个一般的线性模型而言,其目标就是要建立输入变量和输出变量之间的回归模型。该模型是既是参数的线性组合,同时也是输入变量的线性组合。

    线性回归的模型形如:

    线性回归得出的模型不一定是一条直线,在只有一个变量的时候,模型是平面中的一条直线;有两个变量的时候,模型是空间中的一个平面;有更多变量时,模型将是更高维的。

    线性回归模型有很好的可解释性,可以从权重W直接看出每个特征对结果的影响程度。

    线性回归属于有监督学习,因此方法和监督学习应该是一样的,先给定一个训练集,根据这个训练集学习出一个线性函数,然后测试这个函数训练的好不好(即此函数是否足够拟合训练集数据),挑选出最好的函数(cost function最小)即可。

    损失函数

    是用来估量你模型的预测值 f(x)与真实值 YY 的不一致程度,损失函数越小,模型的效果就越好。

    最小二乘法

    实际上,线性回归中通常使用残差平方和,即点到直线的平行于y轴的距离而不用垂线距离,残差平方和除以样本量n就是均方误差。均方误差作为线性回归模型的代价函数(cost function)。使所有点到直线的距离之和最小,就是使均方误差最小化,这个方法叫做最小二乘法。

    其中,

    下面求使J最小的W和b:

    1.偏导数法

    偏导数法是非常麻烦的,需要一个一个地计算w。为了方便,这里以单变量线性回归为例。

    2.正规方程法

    正规方程使用矩阵运算,可以一次求出W向量。但是当变量(feature)个数大于数据个数时,会导致不可逆,这时候就不能用此方法了。

     不可逆,可能有两个原因:

    1.列向量线性相关,即训练集中存在冗余特征,此时应该剔除掉多余特征;

    2.特征过多,此时应该去掉影响较小的特征,或使用“正则化”。

    当样本总数 m 小于等于特征数量 n 时,  一定不可逆。

    使用正规方程法,如果希望得到的模型带有偏置项b,就要先给数据集X增加全为1的一列,这样才会把b包含在W中;如果不添加,那么模型是强制过原点的。

    3.梯度下降

    这里的代价函数J的海森矩阵H是半正定的,因此J一定有全局最小值,所以也可以使用梯度下降法来求解。梯度下降法是一种迭代解法,不仅可以求解最小二乘问题,也适用于其它代价函数的问题。但是需要设置学习率α,α设置的过大或过小,都不能很好地训练出模型,而且梯度下降法需要对数据集进行特征缩放。一般会在数据集特别大的时候或者xTx不可逆的时候使用梯度下降法,后面再做介绍。

    4.其他

    还有一些方法就不一一列举了。例如奇异值分解,QR分解,乔姆斯基分解等等。

  • 相关阅读:
    当Django模型迁移时,报No migrations to apply 问题时
    django--各个文件的含义
    django--创建项目
    1013. Battle Over Cities (25)
    1011. World Cup Betting (20)
    1009. Product of Polynomials (25)
    1007. Maximum Subsequence Sum (25)
    1006. Sign In and Sign Out (25)
    1008. Elevator (20)
    1004. Counting Leaves (30)
  • 原文地址:https://www.cnblogs.com/grasp/p/12051692.html
Copyright © 2011-2022 走看看