简单说明
线性回归
最小二乘法,也叫最小二乘估计,具体概念自行查询,下面我举个比较通俗的例子
可以解决的问题
如果给你一个人(18~22岁)的体重,让你预测他(她)的身高,你会怎么做?
第一步:从身边的人收集一些数据,并观察规律;
样本1:身高 150cm 体重 45kg样本2:身高 161cm 体重 54kg样本3:身高 171cm 体重 65kg样本4:身高 185cm 体重 78kg样本5:身高 156cm 体重 46kg样本6:身高 165cm 体重 50kg样本7:身高 180cm 体重 80kg样本8:身高 160cm 体重 67kg样本9:身高 175cm 体重 66kg样本10: 身高 ?cm 体重 60kg样本11: 身高 ?cm 体重 70kg
第二步:绘制散点图,并找到一条合适的线
根据常识,我们知道一般越高的人,体重越重,所以我们大胆的假设身高和体重是线性关系接下来,根据感觉,找到几条比较合适的线,并最终选择y2(后续会提供两种优化方式)
y1 = 1.1 * x + 100y2 = 0.8 * x + 120y3 = 0.5 * x + 140
第三步:将上述样本带入,求解
y2 = 0.8 * x + 120样本10: 身高 168cm 体重 60kg样本11: 身高 176cm 体重 70kg
总结:上面描述的只是一种方法,其中存在一些问题,比如:数据太少,不具有代表性(可以通过增加样本量来解决);根据经验判断身高和体重一定呈某种线性关系;第二步,为什么选择y2 ?
选择合适的方程
上面的的问题:假设样本 和 估计值真的是线性关系,那么我们如何选择一条合适的线性方程?也就是
中 a 和 b 的值?梯度下降标准方程
梯度下降
这里只是简单介绍一下梯度下降,具体细节自行查询
通过梯度下降的方式计算 函数
中, 的最小值第一步:随机选取一个点,作为初始值 A(1,3),并计算这个点的导数
初始点可以随机选择 A 或者 B 或者 其它的点第二步:选取合适的学习率 ,并重复计算n次(迭代次数)
根据经验选择合适的值这里我们选择 ,
计算公式
根据梯度下降算法,第五次计算出
,带入公式,计算出
结论:
由于此函数是凸函数,所以我们可以根据 ,来计算出最小值 通过梯度下降算法,推算出 函数,最小值
注:1. 梯度下降是推算最小值的一种方式,还需要合适的参数 才能计算出最小值
2. 可以在非凸函数中寻找到局部最小值
线性回归 - 梯度下降
假设数据
样本1:身高 150cm 体重 45kg样本2:身高 161cm 体重 54kg样本3:身高 171cm 体重 65kg样本4:身高 185cm 体重 78kg样本5:身高 156cm 体重 46kg样本6:身高 165cm 体重 50kg样本7:身高 180cm 体重 80kg样本8:身高 160cm 体重 67kg样本9:身高 175cm 体重 66kg
设方程为
,求解a 和 b?
损失函数 (预测值
真实值: )
计算a 和 b的值
偏导数
设初始值学习率
迭代次数
标准方程
数据:
假设数据为 n行p列(p维)的数据数据格式定义:如果不理解,后续可以不用看了。某个人的特征特征+身高 集合变换参数W
可以理解为 中的推导
矩阵求导,令
验证
数据
设函数
等价于
带入上述公式:
结论:
和我们上面肉眼估计出来的值
相差不大
标准方程和梯度下降的区别
标准方程优点:不需要 、不需要迭代、不需要特征缩放,少量数据时可以直接计算出结果。缺点:运算量大,当训练集很大时速度非常慢。当样本数<特征数量时, 不可逆,无法求解(可以通过正则化来解决)
梯度下降优点:大批量数据也可以较快的计算出结果缺点:属于优化算法,需要选择合适的 ,迭代次数等;虽然线性回归的损失函数是凸函数,但是梯度下降很大概率只能计算出最小值的近似点;