多特征的假设函数:
具有多个变量的线性回归也被称为“多元线性回归”。
: 训练集第 i 个向量中的第 j 个元素(第 i 行第 j 列)
: 训练集第 i 个向量(第 i 行)
: 总共 m 行
: 总共 n 列
适应这些多特征的假设函数的多变量形式如下:
使用矩阵乘法的定义,我们的多变量假设函数可以简洁地表示为:
其中
多变量梯度下降:
代价函数:
多个变量的梯度下降,同时更新 n 个变量。
将对代价函数求导化简为:
其中
梯度下降实践1-特征缩放:
特征缩放包括将输入值除以输入变量的范围(即最大值减去最小值),导致新的范围仅为1。
均值归一化包括从输入变量的值中减去输入变量的平均值,从而导致输入变量的新平均值为零。
1. 特征缩放
特征缩放让特征值取值范围都比较一致,这样在执行梯度下降的时候,“下山的路线”会更加简单,更快的收敛。通常进行特征缩放都会把特征值缩尽量缩放到 [-1,1] 之间或者这个区间附近。
即
2. 均值归一化
其中, 是特征值的所有值的平均值, 是值的范围(最大 - 最小),或者 是标准偏差
当然 就不需要经过上述的处理了,因为它永远等于1,不能有均值等于0的情况。
梯度下降法实践2- 学习率
学习率 太小:会导致收敛速度过慢的问题。
学习率 太大:代价函数可能不会在每次迭代中都下降,甚至可能不收敛,在某种情况下,学习率 过大,也有可能出现收敛缓慢。
可以通过绘制代价函数随迭代步数变化的曲线去调试这个问题。
的取值可以从 0.001,0.003,0.01,0.03,0.1,0.3,1 这几个值去尝试,选一个最优的。
特征与多项式回归
可以通过改造特征值,例如合并2个特征,用 来表示
在多项式回归中,针对 ,我们可以令 降低次数。
还可以考虑用根号的式子,例如选用
通过上述转换以后,需要记得用特征值缩放,均值归一化,调整学习速率的方式调整一下。
正规方程
正规方程法相对梯度下降法,它可以一步找到最小值。而且它也不需要进行特征值的缩放。
样本集是 的矩阵,每行样本表示为 ,第 i 行第 n 列分别表示为 , m 行向量分别表示为
令
是这样一个 维向量。每行都对应着 i 行 0-n 个变量。
再构造几个矩阵:
X 是一个 的矩阵, 是一个 的向量,Y 是一个 的矩阵。
对比之前代价函数中,
代入到之前代价函数中,
正规方程是通过求解下面的方程来找出使得代价函数最小的参数的(对代价函数求各个参数的偏导令其等于0,其各个从参数的值,一下的F符号等于J):
最后利用正规方程解出向量
但是这里有一个前提条件是 是非奇异(非退化)矩阵, 即
其中的推导过程详见(转载自halfrost):https://blog.csdn.net/qq_36782366/article/details/89021658
梯度下降与正规方程的比较:
梯度下降 | 正规方程 |
需要选择学习率?(缺点) | 不需要选择学习率? |
需要多次迭代(缺点) | 一次运算得出 |
当特征数量?大时也能较好适用(优点) n>=10^6都可以很快的计算 | 需要计算(???)−1 如果特征数量?较大则运算代价大,因为矩阵逆的计算时间复杂度为?(?3),通常来说当?小于 10000 时还是可以接受的 |
适用于各种类型的模型 | 只适用于线性模型,不适合逻辑回归模型等其他模型 |
正规方程及其不可逆性
导致 不存在逆矩阵有2种情况:
- 多余的特征,存在冗余性。特征之间呈倍数关系,线性依赖。例如其中两个特性线性相关,x1=kx2,k为常数。
- 过多的特征。当 的时候,会导致过多的特征。解决办法是删除一些特征,或者进行正则化。
所以解决 不存在逆矩阵的办法也就是对应上面2种情况:
- 删掉多余的特征,线性相关的,倍数关系的。直到没有多余的特征
- 再删除一些不影响结果的特征,或者进行正则化。