线性回归

    机器学习

单变量线性回归

梯度下降做的事就是找到一个值 \(\theta\) 使得代价函数 \(J(\theta)\) 最小

多变量线性回归

  • 通常用 大写、黑体 字母表示矩阵,用小写字母表示标量或向量。
  • 正斜体 总的原则是变量(矢量,张量)等用斜体;数字、确定符号、词汇缩缩、单位等用正体。参考 科技论文书写规范之正斜体问题

符号说明

符号/变量 含义
\(n\) 特征量的数目
\(m\) 训练样本的数量
\(h\) 学习方法的解决方案或函数也称为假设
\(\boldsymbol{x}^{\left(i \right)}\) \(i\)个训练样本的输入特征值
\(\boldsymbol{x}^{\left(i \right)}_{j}\) \(i\)个训练样本中第\(j\)个特征量的值

XgAtXD.png

XgAa0H.png
XgAUne.png

XgAd7d.png

python计算代价函数的代码

1
2
3
def conputeCost (x, y, theta):
inner = np.power(((x * theta.T) – y), 2)
return np.sum(inner) / (2 * len(x))
通过图像,\(y\) 轴是代价函数的最小值 \(\mathrm{min}J(\theta)\)\(x\)轴是迭代次数。如果随着迭代次数的增加,代价函数越来越小,就说明 梯度下降 在正常工作。

梯度下降 vs. 正规方程

梯度下降 正规方程
需要选择学习率 不需要
需要多次迭代 一次运算就得出结果
当特征数量大的时候比较适用 计算 \((\boldsymbol{X^TX})^{-1}\) 如果特征数量很大,则运算的速度就会很慢,矩阵逆运算的时间复杂度是 \(\mathrm{O}(n^3)\),通常来说 n<10000 还是可以接受的。
适用于各种模型 只适用与线性模型

向量化

使用程序计算这样一个线性回归假设函数:\(h_{\theta}(x)=\sum^n_{j=0} \theta_j x_j\),可以写成向量的形式: \[h_{\theta}(x)=\sum^n_{j=0} \theta_j x_j = \boldsymbol{ \theta^T x}\] 非向量化实现

1
2
3
double prediction = 0.0;
for(int j = 0; j<=n; j++)
prediction += theta[j] * x[j];

向量化实现,使用 C++ 数值线性代数库,更简单、更高效的代码

1
double prediction = theta.transpose( ) * x;

  1. 机器学习中的线性代数之矩阵求导
  2. 矩阵转置基本性质
  3. 常见的二范数是什么意思?有什么用?
page PV:  ・  site PV:  ・  site UV: