机器学习公开课笔记(1):机器学习简介及一元线性回归

初步介绍

监督式学习: 给定数据集并且知道其正确的输出应该是怎么样的,即有反馈(feedback),分为

  • 回归 (Regressioin): map输入到连续的输出值。
  • 分类 (Classification):map输出到离散的输出值。

非监督式学习: 给定数据集,并不知道其正确的输出是什么,没有反馈,分为

  • 聚类(Clustering): Examples: Google News, Computer Clustering, Markert Segmentation.
  • 关联(Associative):Examples: 根据病人特征估算其病症.

一元线性回归

假设(Hypothesis):$h_\theta(x)=\theta_0+\theta_1 x$

参数(Parameters):$\theta_0, \theta_1$

代价函数(Cost Function):$J(\theta_0, \theta_1) = \frac{1}{2m}\sum\limits_{i=1}^{m}\left(h_\theta(x^{(i)}) - y^{(i)}\right)^2$,最小二乘法

目标函数(Goal): $\min\limits_{\theta_0, \theta_1}J(\theta_0, \theta_1)$

梯度下降算法(Gradient descent)

基本思想:

  • 初始化$\theta_0, \theta_1$
  • 调整$\theta_0, \theta_1$直到$J(\theta_0, \theta_1)$达到最小值, 更新公式($\theta_j = \theta_j - \alpha\frac{\partial}{\partial \theta_j}J(\theta_0, \theta_1)$)

对于一元线性回归问题,对$J(\theta_0, \theta_1)$求偏导数可得
$$\frac{\partial J}{\partial \theta_0} = \frac{1}{2m}\sum\limits_{i=1}^{m}2\times\left(\theta_0 + \theta_1x^{(i)} - y^{(i)} \right) = \frac{1}{m}\sum\limits_{i=1}^{m}\left( h_\theta(x^{(i)}) - y^{(i)} \right)$$
$$\frac{\partial J}{\partial \theta_1} = \frac{1}{2m}\sum\limits_{i=1}^{m}2\times\left(\theta_0 + \theta_1x^{(i)} - y^{(i)} \right)x^{(i)} = \frac{1}{m}\sum\limits_{i=1}^{m}\left( h_\theta(x^{(i)}) - y^{(i)} \right)x^{(i)}$$
从而参数$\theta_0, \theta_1$的更新公式为
$$\theta_0 = \theta_0 - \alpha\frac{1}{m}\sum\limits_{i=1}^{m}\left( h_\theta(x^{(i)}) - y^{(i)} \right)$$
$$\theta_1 = \theta_1 - \alpha\frac{1}{m}\sum\limits_{i=1}^{m}\left( h_\theta(x^{(i)}) - y^{(i)} \right)x^{(i)}$$
其中$\alpha$称为学习速率(learning rate),如果其太小,则算法收敛速度太慢;反之,如果太大,则算法可能会错过最小值,甚至不收敛。另一个需要注意的问题是,上面$\theta_0, \theta_1$的更新公式用到了数据集的全部数据 (称为“Batch” Gradient Descent),这意味着对于每一次 update ,我们必须扫描整个数据集,会导致更新速度过慢。

线性代数复习

  • 矩阵和向量定义
  • 矩阵加法和数乘
  • 矩阵-向量乘积
  • 矩阵-矩阵乘积
  • 矩阵乘法的性质:结合律,交换律不成立
  • 矩阵的逆和转置:不存在逆元的矩阵称为“奇异(singular)矩阵”

参考文献

[1] Andrew Ng Coursera 公开课第一周

posted @ 2015-12-07 11:38  python27  阅读(3497)  评论(0编辑  收藏  举报