Supervised learning demo

监督学习案例

规范

  • 假设函数: 使用h(hypothesis, 假设)表示
  • 输入(input value): x
  • 输出(output value): y
  • 参数(Parameters): \(\theta\)

房价的Size和Price的预测

  • 建立一个线性模型: \(h_\theta(x) = \theta_0 + \theta_1x\)
  • 要让我们fit的model与y差异最小, 称之为最小化(minimize)
    • 在这个案例中使用\[J(\theta_0, \theta_1) = {1\over2m}\sum_{i = 0}^m(h\theta(x^{(i)}) – y^{(i)})^2\]
    • 上面的就是我们的代价函数(cost function), 因为我们有让得到的和除以了2m, 所以我们的到函数也称之为平均误差函数(squared error function), 注意: cost function的自变量时theta_0和theta_1, 不在是我们熟悉的x了
    • \[{minimize_{\theta_0\theta_1}} J(\theta_0, \theta_1)\]表示求出一个\(\theta_0\)\(\theta_1\)使得\(J(\theta_0, \theta_1)\)的值最小, 我们称之为最小化的过程, 上面的这个表达式就是我们的优化目标(optimization objective), 也就是我们的目标函数
  • 对于线性回归模型来说, 它的\(J(\theta_0, \theta_1)\)目标函数是一个凸函数(没有局部最优点, 只有一个全局的最优点), 在二维上是抛物线, 在三维上是一个碗状, 对于三维的(J有两个theta参数), 一般使用等高线图来替代三维凸函数
  • 使用gradient regression梯度降维求出最优解, 梯度降维的公式为\(\theta_0 := \theta_0 – \alpha \times {\partial\over\partial\theta_0}J(\theta_0, \theta_1)\), 对于另一个\(\theta_1\)也是一样的, \(\theta_1 := \theta_1 – \alpha \times {\partial\over\partial\theta_1}J(\theta_0, \theta_1)\), 上面的是公式, 在实际更新我们的参数\(\theta_0, \theta_1\)的时候, 应该保证\(\theta_0, \theta_1\)同步更新, 所以应该这样子\[tmp0 := \theta_0 – \alpha \times {\partial\over\partial\theta_0}J(\theta_0, \theta_1)\] \[tmp1 := \theta_0 – \alpha \times {\partial\over\partial\theta_0}J(\theta_0, \theta_1)\] \[\theta_0 := tmp0\] \[\theta_1 := tmp1\], 在最后同步更新\(\theta_0\)\(\theta_1\)的值
  • 关于梯度下降公式的细节
    • 公式中, \(\alpha\)表示学习率, \({\partial\over\partial\theta_0}J(\theta_0, \theta_1)\)表示梯度下降的方向, 所以\(\alpha \times {\partial\over\partial\theta_0}J(\theta_0, \theta_1)\)表示\(\theta_0\)要更新多少的值, 形象一点就是说, 一个人在一个山顶上, 他步子的大小为\(\alpha\), 他希望尽快下山的方向为\({\partial\over\partial\theta_0}J(\theta_0, \theta_1)\), 这样我们就可以更新\(\theta_0\)的值了
    • 虽然我们在公式中规定了\(\alpha\)学习率, 但是并不代表我们走的每一步就是不变的, 因为导数是在变化的, 为最低点的时候为0, 在其他地方有时别的值
    • 要应用梯度下降法, 我们需要为\(\theta_0\)\(\theta_1\)进行初始化, 一般来说都初始化为0, 但是也要视情况而定
    • 什么时候停止梯度下降, 我们可以规定一个阈值, 当我们的\(\alpha \times {\partial\over\partial\theta_0}J(\theta_0, \theta_1)\)小于这个阈值的时候停止
  • 其他
    • 对于这个房价的模型, 我们除了使用梯度下降的方法求出我们的目标函数之外还可以使用matrix的方法来求, 这个更加的简单
    • 我们每求一次\(J(\theta_0, \theta_1)\)的值就要遍历一遍所有的数据, 因为the definition of the \(J(\theta_0, \theta_1)\) is \[\sum_{i=1}^{m}{1\over2m}{(h(x^{(i)}) – y^{(i)})^2})\], 这种方式我们称之为Batch梯度降维