一、监督学习(Supervised learning)
给予每一个Input
-->对应一个output
1.1:样例:
- 也就是针对每一个输入样例
input
,我们都给他制定一个function
,使得它有确定的Output
映射输出。
1.2:两大监督学习经典样例:
1)、回归算法(Regression Algorithm)
利用线性回归来进行预测
- 它学习从无限多的可能数中预测数字
2)、分类算法(Classification Algorithm)
根据我们所提供的"映射规则"来进行"优/劣"的分类
- 它对一个类别进行预测,所有的输出都是一小组
1.3)、监督学习总结(Supervised learning Summarize)
二、无监督学习(Unsupervised learning)
- 对于每一个
Input
,我们不对它给予任何"标签"
,我们仅仅是想要找到一些"有趣"
的数据 - 恰恰相反,对于每个输入给出,我们要求机器自己弄清楚什么是
"有趣"
的,或者对于这个特定的数据集,找出这个数据中可能含有的什么模式
或结构
2.1:三大无监督学习经典样例:
1):聚类算法(Clustering Algorithm)
获取没有标签的数据并且尝试将他们自动分组到集群当中
- 例如谷歌新闻,它就是每天查看互联网上的数十万新闻文章,并且把相关文章组合在一起
- 在这个样例中,没有任何人告诉机器去查找包含
pandas
、twin
、zoo
这个词的文章,因为新闻话题每天都在变化,相反,算法必须在没有监督的情况下自行计算出今天的新闻集群是什么
- 这也就是所谓的用户分类,再针对不同的组别,进行不同的服务
2):异常检测(anomaly detection)
---用来检测异常事件---,"在金融量化中",针对异常交易进行发现/解决
3):降维(dimensionality reduction)
可以用来将一个大数据集神奇地压缩成一个小得多地数据集,同时丢失尽可能少的信息
2.2:无监督学习总结:
在无监督学习中,数据仅仅带有输入x,而没有输出标签y,并且算法必须在数据中去寻找一些模式/结构。
三、线性回归模型(linear regression )
-
这属于监督学习
也就是根据我们的数据集,训练出一条线性方程,来进行数据的预测
- PS:(x^(i)^,y^(i)^)表示第
i
组测试样例
3.1:线性回归模型的训练步骤
1)、统计训练数据集(training set)
2)、学习算法模型
3)、训练函数模型(function)进行预测或估计 ( y − h a t y-hat y−hat表示预测值)( y y y表示真实值)
输入size(input)--> 函数func-->预测值 price(estimated)
3.2:如何表示 f f f函数(在线性中)
- 和一次函数基本一致
四、代价函数(cost function)
用来度量训练优/劣的的运行情况
4.1:代价函数公式
- 1、对于线性回归方程 f ( x ) = w x + b f(x)=wx+b f(x)=wx+b,我们需要做的是选择
w
和b
的值,以便得我们从f
获得的直线以某种方式很好的拟合数据
- 2、因此,我们将构造一个成本函数来衡量训练函数的优/劣
- 注意:此处的
1/2
只是为了后面的计算好算而乘上的一个常数
4.2:代价函数理解分析
- 1、为了简便理解代价函数,我们对model关系
f
进行简化 - f ( x ) = w x + b − − − > f ( x ) = w x f(x)=wx+b--->f(x)=wx f(x)=wx+b−−−>f(x)=wx
- 此时,我们可以构造出代价函数 J ( w ) J(w) J(w)的函数图像
此时,我们可以发现当 w = 1 w=1 w=1时, J ( w ) = m i n i m i z e = 0 J(w)=minimize=0 J(w)=minimize=0,我们可以成功找到最恰当的训练模型😄
4.3:可视化代价函数
首先,让我们回顾一下目前位置所用到的公式
- 在 4.2 4.2 4.2中,我们令 b = 0 b=0 b=0来观察代价函数,在 4.3 4.3 4.3中,我们来分析完全的model函数
f ( x ) = w x + b f(x)=wx+b f(x)=wx+b - 函数图像为:(因为有两个
input
所以变成了三维)
- 把这个三维图像进行切片,可以得到它的二维简化表示,此时,我们可以非常清晰的看到训练模型的情况
4.4:可视化举例:
我们来看几组样例来观察这两个图像的关系,可以清晰看到何时训练效果最佳
可以看到下图训练效果最佳
五、梯度下降
在"四"中,我们找到了最佳的训练模型,如果我们有一种更系统的方式来找到"w'和"b"的值,
这会导致更小的成本,事实证明,"梯度下降"可以做到这一点
5.1:梯度下降的概念
在"四"中,我们利用图像来进行推测,现在,让我们来重新审视这个问题
1):其实,我们所需要做的只是对 w w w和 b b b初始值的预测(因为在线性回归中,初始值并不重要,我们我们可以把他们都设置为 0 0 0来进行操作)
2):使用梯度下降算法,我们要做的是,我们每次都稍微改变参数 w w w和 b b b的值,以尝试降低成本 j j j,直到希望 j j j稳定或者接近最小值。
5.2:梯度下降的可视化
让我们来观察一下,梯度下降的过程中都做了什么操作
1):此时,你处于一个极大值
,你想要尽快的到达一个极小值点
2):首先,你将旋转360度,然后问自己,我想要尽快下山,我该往某个方向走一小步?
3):不断重复这个操作,我们可以迅速到达一个局部最小值,这个过程,就是梯度下降
5.3:梯度下降的实现
梯度下降的实现其实就是利用不断增大/减少"w","b"的值,使得"w","b"的值最符合条件
1):让我们来看看公式
- 注意:此时 w , b w,b w,b要同时变化,否则会导致 b b b计算时, w w w已经发生了变化,这会使得公式不一致
- 让我们重新回到公式,看看每个变量都是什么意思,我们先把 w w w拎出来观察它的图像
2):观察 J ( w ) J(w) J(w)的图像,我们可以发现偏导的奇妙之处,可以发现无论此时, w w w是在min的右边/左边,我们减去 ( − ) (-) (−)偏导值都会使得 w w w往正确的方向移动!!!
3):不仅如此,当 J ( w ) − > m i n J(w)->min J(w)−>min时,函数变得平缓,此时,导数的绝对值也变得小!!
5.4:学习率
学习率过大/过小都会影响训练的效率
1):如果学习率非常小
- 此时,训练的效率变得非常低,使得梯度下降的过程变得非常漫长
2):如果学习率非常大
- 此时,可能会导致无法达到最小值min,甚至有可能变得发散
3):局部最小值
当函数不是凸函数时局部最小值!=最小值
- 当 w − > m i n w->min w−>min时,会发现此时 w w w不再变化,即找到了局部最小值(极小值)
六、用于线性回归的梯度下降
我们已经学习了"平方误差函数""梯度下降""线性回归",现在让我们把他们串起来拟合一个模型
6.1:用于线性回归的梯度下降的公式推导
- 联立公式我们可以得到如下公式
1):让我们来推导一下公式(此处会解释为什么会有 1 / 2 1/2 1/2)
2):此时, w w w和 b b b仍然需要同时更新
七、运行梯度下降
让我们来观察一下当我们为线性回归运行梯度下降时,会发生什么
可以发现同样也可以达到 J ( w ) J(w) J(w)的最小值min
7.1:批量梯度下降(Batch gradient descent)
- 指的是再梯度下降的每一步中,我们都在查看所有的训练示例,而不仅仅是训练数据的一个子集。