单变量
单变量代价函数
$$Hypothesis:\qquad h_\theta(x)=\theta_0+\theta_1x$$
$$Parameters:\qquad \theta_0, \theta_1$$
$$Cost Function:\qquad J(\theta_0,\theta_1)=\frac{1}{2m} \sum_{i=0}^m (h_\theta(x^{(i)})-y^{(i)})^2$$
$$Goal:\qquad minimize_{\theta_0,\theta_1}J(\theta_0,\theta_1)$$
单变量 Batch 梯度下降
$$repeat \ until \ convergence:\qquad \theta_j:=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1)\quad(simultaneously \ update \ j=0 \ and \ j=1 )$$
$\alpha$是学习速率,控制梯度下降的速度。过大可能会导致发散而非收敛;过小可能导致运算量过大。
$\theta$可以有多个
多变量
多变量代价函数
$$Hypothesis:\qquad h_\theta(x)=\theta_0x_0+\theta_1x_1+\theta_2x_2+\theta_3x_3+…+\theta_nx_n$$
$$Parameters:\qquad \theta$$
$$Cost Function:\qquad J(\theta)=\frac{1}{2m} \sum_{i=0}^m (h_\theta(x^{(i)})-y^{(i)})^2$$
$$Goal:\qquad minimize_{\theta}J(\theta)$$
多变量 Batch 梯度下降
$$repeat \ until \ convergence:\qquad \theta_j:=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta)\quad(simultaneously \ update \ for \ every \ j=0 \ ,…, \ n)$$
使特征值的范围相近(缩放),可以较快的进行梯度下降
使用归一化:$x_i=\frac{x_i-u_i}{s_i}$; $u_i$是平均值,$s_i$是范围(标准差或是最大值减去最小值)
可以把特征值使用多项式回归来更好的拟合数据:
$x_1 = a$
$x_2 = a^2$
$x_3 = a^3$
$x_4 = a^4$
或
$x_1 = a$
$x_2 = \sqrt{a}$
如果这样做的话,就必需要对$x_1,x_2,x_3,x_4$进行归一化,否则取值范围相差太大
正规方程直接求解最小值
$$求偏导:\qquad\frac{\partial}{\partial\theta_j}J(\theta)=…=0 \quad (for \ every \ j) \quad Slove \ for \ \theta_0,\theta_1,…,\theta_n\quad\theta\in R^{n+1}$$
$$结论:\qquad\theta=(X^TX)^{-1}X^Ty$$
缺点:
- 计算矩阵的逆时间复杂度是$O(n^{3})$,所以当特征很多的时候,这个方法会很慢,不如使用梯度下降法快(上万个特征就会变慢)
- 不适用于复杂算法
$X^TX$不可逆(奇异矩阵)的情况(pinv
函数依然会计算出伪逆)
- 检查是否使用了相同的特征值
- 特征比训练样本要多很多
- 删除一些特征
- 正规化
向量化-便于求解
$$\theta:=\theta-\alpha\delta \quad \theta\in R^{n+1}, \ \delta\in R^{n+1}, \ \alpha\in R$$
$$\delta=\frac{1}{m}\sum_{i=0}^m(h_0(x^{(i)})-y^{(i)})x^{(i)} \quad \ x \in R^{n+1}, \ (h_0(x^{(i)})-y^{(i)}) \in R$$
直接使用矩阵运算,同时更新所有$\theta$