Supervised learning demo
Posted megachen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Supervised learning demo相关的知识,希望对你有一定的参考价值。
监督学习案例
规范
- 假设函数: 使用h(hypothesis, 假设)表示
- 输入(input value): x
- 输出(output value): y
- 参数(Parameters): ( heta)
房价的Size和Price的预测
- 建立一个线性模型: (h_ heta(x) = heta_0 + heta_1x)
- 要让我们fit的model与y差异最小, 称之为最小化(minimize)
- 在这个案例中使用[J( heta_0, heta_1) = {1over2m}sum_{i = 0}^m(h heta(x^{(i)}) - y^{(i)})^2]
- 上面的就是我们的代价函数(cost function), 因为我们有让得到的和除以了2m, 所以我们的到函数也称之为平均误差函数(squared error function), 注意: cost function的自变量时theta_0和theta_1, 不在是我们熟悉的x了
- [{minimize_{ heta_0 heta_1}} J( heta_0, heta_1)]表示求出一个( heta_0)和( heta_1)使得(J( heta_0, heta_1))的值最小, 我们称之为最小化的过程, 上面的这个表达式就是我们的优化目标(optimization objective), 也就是我们的目标函数
- 对于线性回归模型来说, 它的(J( heta_0, heta_1))目标函数是一个凸函数(没有局部最优点, 只有一个全局的最优点), 在二维上是抛物线, 在三维上是一个碗状, 对于三维的(J有两个theta参数), 一般使用等高线图来替代三维凸函数
- 使用gradient regression梯度降维求出最优解, 梯度降维的公式为( heta_0 := heta_0 - alpha imes {partialoverpartial heta_0}J( heta_0, heta_1)), 对于另一个( heta_1)也是一样的, ( heta_1 := heta_1 - alpha imes {partialoverpartial heta_1}J( heta_0, heta_1)), 上面的是公式, 在实际更新我们的参数( heta_0, heta_1)的时候, 应该保证( heta_0, heta_1)同步更新, 所以应该这样子[tmp0 := heta_0 - alpha imes {partialoverpartial heta_0}J( heta_0, heta_1)] [tmp1 := heta_0 - alpha imes {partialoverpartial heta_0}J( heta_0, heta_1)] [ heta_0 := tmp0] [ heta_1 := tmp1], 在最后同步更新( heta_0)和( heta_1)的值
- 关于梯度下降公式的细节
- 公式中, (alpha)表示学习率, ({partialoverpartial heta_0}J( heta_0, heta_1))表示梯度下降的方向, 所以(alpha imes {partialoverpartial heta_0}J( heta_0, heta_1))表示( heta_0)要更新多少的值, 形象一点就是说, 一个人在一个山顶上, 他步子的大小为(alpha), 他希望尽快下山的方向为({partialoverpartial heta_0}J( heta_0, heta_1)), 这样我们就可以更新( heta_0)的值了
- 虽然我们在公式中规定了(alpha)学习率, 但是并不代表我们走的每一步就是不变的, 因为导数是在变化的, 为最低点的时候为0, 在其他地方有时别的值
- 要应用梯度下降法, 我们需要为( heta_0)和( heta_1)进行初始化, 一般来说都初始化为0, 但是也要视情况而定
- 什么时候停止梯度下降, 我们可以规定一个阈值, 当我们的(alpha imes {partialoverpartial heta_0}J( heta_0, heta_1))小于这个阈值的时候停止
- 其他
- 对于这个房价的模型, 我们除了使用梯度下降的方法求出我们的目标函数之外还可以使用matrix的方法来求, 这个更加的简单
- 我们每求一次(J( heta_0, heta_1))的值就要遍历一遍所有的数据, 因为the definition of the (J( heta_0, heta_1)) is [sum_{i=1}^{m}{1over2m}{(h(x^{(i)}) - y^{(i)})^2})], 这种方式我们称之为Batch梯度降维
以上是关于Supervised learning demo的主要内容,如果未能解决你的问题,请参考以下文章
Self-supervised learning and computer vision
CSE 6363 - Machine Learning Homework MLE, MAP, and Basic Supervised Learning
Semi-Supervised Learning---半监督学习