机器学习- 线性回归(1)
一元线性回归
本章机器学习名词:
假设函数:用来拟合数据的函数
损失(代价)函数:假设函数与损失值的映射
学习率:控制损失函数向下的步幅
特征:数据的‘特点’(如下面房子的面积就是房子的一个特征)
-
问题
现有一批房子信息的数据(房子的大小,楼层,户型。。。,价格),根据已有房子的数据,预测别的房子的价格
为了方便,暂时只使用房子的面积信息(数据自己编的),数据如下
-
解决方式
寻找一个函数去尽量拟合大多数点 -
假设函数
H(x) = w*x+b
x: 本次为房子的面积
w:权重 b:偏置项
拟合大多数的点,可以转化成每个点到函数曲线的距离总和最短,这里我们使用欧氏距离。
函数预测的值与真实值之间的偏差(距离)我们成为“损失(代价)”
因此,每个假设函数都对应一个损失,所以可以有假设函数为自变量,损失为因变量构建损失函数(假设函数有w,b共同确定因此可以转为w,b为自变量)
- 损失函数
m:数据的数量,这里为房子的数量(12)
y:真实值,这里为房子真实的价格
为什么要平方:保证损失一直为正,不会造成有的损失为正,有的损失为负时的相互抵消
为什么不用绝对值:
1 绝对值在转折点不可导(后面会求导数)
2 平方可以令损失变化率在误差大时变大,在误差小时变小 - 梯度下降
现在的任务是将损失函数变小,我们知道梯度的方向指向函数的最高点,而我们想要损失函数降低只需要计算损失函数的梯度并向梯度的反方向前进即可
首选分别计算J对于w与b的偏导:
因此,可以可调整参数:
反复重复这两步,让w,b更新到接近‘谷底’(损失函数最小值处)的位置,反复更新的过程便是学习的过程,而这种更新方法称为‘梯度下降法’
α:学习率(步幅)这是一个超参数,需要自己调整向‘谷底’的步子大小,如果步子过大则会越过谷底造成损失函数增大,如果步子过小则会让学习的时间加长
- 正规方程
其实我们还有一种方法可以直接找到w和b使损失函数最小,那便是直接令两个偏导等于零,求得w与y的值
不过这个方法有一个缺点:当特征数量过多时,会造成计算量过大,向量化时可能会导致矩阵不可逆(向量化后续说)
但是在特征数较少时(小于1w时)可以优先考虑正规方程
完。。。