吴恩达机器学习

1、监督学习

回归、分类等

2、无监督学习

聚类,异常点检测,降维

3、线性回归学习

cost function代价函数
在这里插入图片描述
其中,h(x)代表训练的函数,也叫假设函数,J(θ0,θ1)代表代价函数,最后一行的minimize J就是模型的目标函数。

代价函数的可视化两种例子
在这里插入图片描述
在这里插入图片描述
上面那幅图比较容易理解,它与下面这幅图的第三张一样。而下面这幅图的第二张是等高线图,相当于用一个平面横切第三张图得到了的椭圆,因此每个椭圆代表了同样的代价函数值。

4、梯度下降求解参数

在这里插入图片描述
gradient decent的特点:选择不同的初始点,可能会得到不同的“最优解”(当然是局部的)。正如上图所示。下面是梯度下降的公式:
在这里插入图片描述
在这里插入图片描述

公式中的α是学习率,α越大,下山越快,反之则越慢。
α前为什么是减号呢?这与后面的导数的符号有关,因为要保证函数值越来越小,只能是减号,这个可以自己验证。
** 如上图中,为什么w走的越来越慢,因为步长不变,但是梯度可以看到越来越小,w=w-αdw,所以在横轴方向上w走的越来越慢。 **
在这里插入图片描述

α如果太小的话,函数迭代会变得很慢,当达到局部最优解时,导数值为0,那么函数值将不会再改变。如果α过大的话,可能导致结果发散,而得不到最优解。

5、多元梯度下降法

在这里插入图片描述
如上图,我们的假设函数h(x)=θ0+θ1x1+θ2x2+…,但是图中有一个多余的x0,那是因为我们想要使得每个θ的梯度下降公式保持一致,因此给θ0也添加了一项x0,并使得x0=1。

6、特征缩放 feature scaling

在这里插入图片描述

在这里插入图片描述
如果特征向量中的每一项都取不同的范围(如上图,x1:1-2000,x2:1-5),对于x1,那么它对应的权重w1的可能值会非常小,而x2对应的权重w2会比较大,那么代价函数的等高线图就会变得非常细长,这样在梯度下降的过程中,其中一个变量的权重将会非常高,从而导致速度变得非常缓慢。因此需要对他们进行标一化处理,这样等高线图就会非常均匀,从而使收敛更快。

7、学习率

判断代价函数收敛的方法:(1)观察代价函数随迭代次数的图像;(2)设置一个阈值e,当代价函数下降的值小于e时,代表已经收敛。
在这里插入图片描述
当观察到的代价函数随着迭代的进行呈上升趋势或者处于波动状态,最有可能的原因就是学习率过大,如上图右半部分。
通常需要尝试一系列不同的学习率值

8、正规方程

在这里插入图片描述
利用矩阵的思想进行求解。该方法存在的问题是它的时间复杂度是n的3次方,因此当n过大时,该方法并不适用,仍然需要采用梯度下降法。并且有很多的一些模型中,像逻辑回归等,正规方程其实也不适用,仍需要梯度下降法。
正规方程中x转置与x的积不可逆,可能的原因是:(1)x矩阵中存在线性相关的两个特征;(2)特征数过多,而数据量过少,即n过大,m过小。
解决的办法:(1)将线性相关的特征删除一个;(2)特征数过多时,可以选择性地删除一些影响不大的特征,或者利用正则化的思想。

9、向量化加速计算速度
10、logistic回归

逻辑回归其实是一个分类模型。它也叫Sigmoid function,它的输出值范围:0-1。
在这里插入图片描述
在这里插入图片描述
如上图所示,如果使用平方误差损失 , 由于 逻辑回归 是非线性的,在加上一个平方后,仍然是非线性的,它的图像可能类似于上面的左图,并不是一个凸图像而不像线性回归的代价函数那样是凸函数 ,因此在梯度下降后,不会得到全局最优值。
因此,设法将其变成一个凸图像,就需要改变他的优化函数,如下图
在这里插入图片描述
因此可以将这个函数的两部分合并为一个函数,如下
在这里插入图片描述
在这里插入图片描述
上面的式子中,第二个式子里的梯度计算,运用到了sigmoid导数,如下所示,将其带入到梯度计算公式后,便可得到上述结果。
在这里插入图片描述

通过计算,可以发现逻辑回归的梯度下降的函数与线性回归
的梯度下降函数相同。但是,其实他们的计算函数完全不同,线性回归是h(x)=θ*X,而逻辑回归是sigmoid函数和线性函数的结合,如下所示:
在这里插入图片描述

11、多分类问题
12、过拟合问题over fitting

过拟合指的是训练得出的模型,能够很好的拟合训练样本,但是对测试数据的效果特别差,也叫高方差。过拟合其实是利用一个高阶的函数来进行拟合,它可以实现对任意数据的高度拟合,但同时存在参数量过多的问题,而并没有足够的数据来进行训练,从而导致无法泛化到新的数据上。
过拟合的解决方案:(1)尽量减少特征的数量;(2)正则化regularization

13、正则化

在这里插入图片描述
如上图,通过给θ3和θ4添加惩罚因子,为了使得代价函数尽可能小,就需要让θ3和θ4都变得非常小才行,这样整个函数就相当于一个二次的函数,从而避免了过拟合问题的出现。
在这里插入图片描述
如上图所示,由于我们不知道那些参数θ应该被正则化,所以需要对每个都添加正则因子λ。正则因子不能过高,如果过高的话,就会使得θ1到θn都趋于0,从而导致代价函数趋于一条水平线,而欠拟合
在这里插入图片描述
如上图运算公式所示,在添加了正则化项后,再进行梯度下降法,它跟原式相比,就是给θj前乘了一个小于1的系数,而后面部分没有改变,因此使得θj比原来更小了一些。
同时,正则化也会防止奇异矩阵的出现

14、正则化逻辑回归

在这里插入图片描述
这里解释一下为什么正则化使得θ变小可以防止过拟合
在这里插入图片描述
正则化可以使得函数图像变得平滑

15、非线性假设

在分类问题中,我们已经学过了有关线性回归,逻辑回归等模型,但是它们并不能很好地对数据进行准确的分类,主要原因在于他们要么不考虑非线性项,要么考虑的少。如下图所示
在这里插入图片描述
当添加了非线性项后,当然可以将数据进行精确的分类,但是出现的问题就是 考虑的参数θ数过多 ,比如当考虑二次方项时,对于100个特征,就有将近5000项,是n的二次方复杂度,当考虑三次方项时是n的三次方复杂度。
在计算机视觉中,对于图像的分类,如下图所示
在这里插入图片描述
在这里插入图片描述

16、神经网络

在这里插入图片描述
上图是一个最基础的神经网络模型,其中,额外添加的x0和a0表示偏置单元,它的值总为1,可以认为是我们之前学习的θ0的系数x0。
在这里插入图片描述
在这里插入图片描述
如上图所示,对于二分类问题,输出层只需要一个神经单元即可;而对于多分类问题,输出层则需要K个神经单元,其中K表示类别的数量,K>=3。
在这里插入图片描述
神经网络的前向传播,如下图
在这里插入图片描述
激活函数
在这里插入图片描述
sigmoid和ReLU的区别
Relu是一个非常优秀的激活哈数,相比较于传统的Sigmoid函数,有三个作用:

  1. 防止梯度弥散 。sigmoid的导数只有在0附近的时候有比较好的激活性(sigmoid在0处的导数为0.25),在正负饱和区的梯度都接近于0,所以这会造成梯度弥散,而relu函数在大于0的部分梯度为常数,所以不会产生梯度弥散现象。
  2. 稀疏激活性 。 relu函数在负半区的导数为0 ,所以一旦神经元激活值进入负半区,那么梯度就会为0,也就是说这个神经元不会经历训练,即所谓的稀疏性。
  3. 加快计算 。relu函数的导数计算更快,程序实现就是一个if-else语句,而sigmoid函数要进行浮点四则运算。

其中,梯度弥散是指梯度消失,在梯度回传的过程中,出现网络的浅层梯度非常小的情况。

而对于稀疏性,我们在这里讨论稀疏激活性不是模型稀疏性,也不是数据稀疏性(缺少信息),其中数据稀疏性通常是不好的
我们这里的稀疏激活只是指的是在做预测时,并不是所有的神经元都会被激活。并不是说模型在训练过程 中的某些神经元直接失活,这代表着模型的稀疏,这是ReLU的一个缺点,通常是 由于梯度或者学习率过大,导致该神经元一直处于负值,从而输出为0,导数也为0,进而没有产生作用,导致失活。
为什么模型稀疏性好?如果我们考虑一下人工神经网络试图模仿的生物神经网络,这在直觉上是有意义的。尽管我们体内有数十亿个神经元,但并非所有时间都为我们所做的所有事情激发。相反,它们具有不同的作用,并由不同的信号激活。
稀疏性导致简洁的模型, 这些模型通常具有更好的预测能力和更少的过拟合 。在稀疏网络中,神经元更有可能实际上正在处理问题的有意义的方面。例如,在检测图像中猫的模型中,可能存在可以识别耳朵的神经元,如果图像是关于建筑物的,则显然不应激活该神经元。

在训练的过程中,ReLU神经元比价脆弱容易失去作用。例如当ReLU神经元接收到一个非常大的的梯度数据流之后,这个神经元有可能再也不会对任何输入的数据有反映了,所以在训练的时候要设置一个较小的合适的学习率参数。

为什么RELU可以提供非线性

首先线性函数的意思是在整个定义域上都是线性的,而relu显然不是线性的。那么它是如果提供非线性的呢?下面通过图像来分析:

下面来做两个实验:
在这里插入图片描述
在这里插入图片描述
可以看到对于stack操作,你无论stack多少次,最终的函数图像都只能是一边是全零,一边是斜率为正或负的线性函数。

但是对于加法操作,可以很大程度上改变图像的样子,我这里做了四个add操作,函数图像就有点像二次函数了。当你add操作足够多,结合stack操作和bias(为了有负值),理论上是能拟合绝大部分在闭区间上的连续函数的。(事实上,Relu函数无法真正意义上拟合所有函数,但对于神经网络来说,已经够用了)

对于深度神经网络,在每个隐藏层添加Relu激活函数,一次前向传播过程中,层与层之间在做stack操作;两层之间,上一层经过Relu后,传入下一层,下一层的每个神经元里面含有了上一层的add操作。这样,stack和add操作相互交融,使得Relu有了非线性表达能力(多分段线性)

反馈传播
在这里插入图片描述
反向传播其实就是前向传播的逆过程,首先计算输出的误差,然后乘上上一层的权重,得到上一层的误差。在这里插入图片描述

神经网络中的梯度检验

在这里插入图片描述
在这里插入图片描述
利用上面求导的方法检验和反向传播计算出来的导数DVec是否相似。

随机初始化

随机初始化即为所有的权重进行初始化赋值。

注意,不能将所有权重都初始化为0,这样的话,会使得网络中每一个神经单元的参数值都相等,而学习不到有效的特征,只能学习到一个特征。

所有的参数可以初始化为接近0,而不等于0的值。

隐藏层层数选择以及神经单元数选择

对于输入和输出层,它们的神经单元数是确定的,但是隐藏层是不确定的。
通常一层隐藏层是最为常见的。当然,隐藏层的数目当然是越多越好,这样可以学习到更为深层次的特征,但是也伴随着学习量的增多。
每层中神经元的数量通常为输入层的二三四倍。

神经网络的训练步骤

1、构建神经网络结构,并随机初始化,通常初始化为很小的值,接近于0
2、进行前向传播
3、计算代价函数
4、执行反向传播,计算偏导数项
5、进行梯度检验,将反向传播计算得到的偏导数值和用数值方法得到的偏导数值进行比较
6、在计算了偏导数后,可以利用一些优化参数的方法进行参数的更新。
在这里插入图片描述
在这里插入图片描述

17、评估假设函数

将数据随机分为训练数据和测试数据

这里测试数据集知识用来评估模型的泛化能力

因此,对于对于模型选择的问题,并不能知识将数据分为训练集和测试集,而需要分为训练集,验证集和测试集。其中,通过验证集来的误差大小来选择最好的模型,然后再通过测试集来测试模型的泛化能力,而不能既通过测试集选择模型,又通过测试集评估泛化能力。
在这里插入图片描述

18、诊断偏差和方差

偏差和方差问题其实就是解决欠拟合和过拟合问题。在这里插入图片描述

在这里插入图片描述

对于欠拟合的情况,我们可以发现,模型在训练集和验证集上的误差都很大。
对于过拟合的情况,我们可以发现,模型在训练集上的误差非常小,而在验证集上的误差非常大。

19、正则化和偏差,方差的关系

在这里插入图片描述
上图中,分别列举了λ过大,过小和始终的模型拟合情况。
在这里插入图片描述
下图所示的是,在训练集和验证集上的代价函数与λ的变化关系
在这里插入图片描述

20、学习曲线

在这里插入图片描述
学习曲线是训练集和验证集上的误差随着训练样本容量的增大而变化的曲线。从上图可以看出,随着训练样本容量的增大,模型在训练集上的误差也在不断增大,不可能做到将每一个点都完美拟合,而在验证集上的误差则变得越来越小,因为训练得越多,泛化能力也会变得更强
在这里插入图片描述
对于高偏差值(high bias)的模型,如上图,随着训练数据的增多,模型在训练集上的误差变得越来越高,最后趋于稳定;模型在测试集上的误差逐渐下降,最后也不会再下降而趋于稳定了,但是两者都维持在了一个较高的误差水平上。因此,对于高偏差值的模型,添加训练数据量并不会减少模型的误差。
在这里插入图片描述
对于高方差的模型,随着训练数据的增多,模型在训练集上的误差会逐渐增大,但保持很小的水平;模型的验证集上的误差会逐渐的减小,因为泛化能力会增强,但是依旧很大。他们两者之间有很大的距离。
因此,对于高方差的模型,可以通过增加训练数据量来降低模型的误差。

21、决定下一步该做什么

根据前面学到的这些知识,**当出现模型在测试集上的误差比较大时,**我们接下来可以确定下一步到底需要做什么,如下图所示
在这里插入图片描述

1、获取更多的训练数据,根据学习曲线可以得出,只有在高方差的时候,通过训练更多的数据可以减小误差,而在高偏差时,效果并不明显。
2、尝试减少特征的数量,同样,在高方差时可以通过减少特征数量来降低误差
3、选择更多的特征,通常是因为模型的假设太过简单,在高偏差时使用该方法
4、增加多项式特征,例如x12,x22,x1x2等等, 这其实也是一种增加特征的方法,同样也是修正高偏差的问题
5、减少正则系数λ的值,根据偏差和方差与λ的关系图可知,减少λ,可以修正高偏差问题
6、增加正则系数λ的值,修正高方差问题

22、分类问题的误差分析

真阳性,真阴性,假阳性,假阴性
在这里插入图片描述
Precision(查准率)等于真阳性的数量除以所有检测结果为阳性的数量,它越高医生告诉患者,我们检测出来的你患癌症的概率是多少
Recall(召回率)等于真阳性的数量除以所有阳性患者的数量,他表示医生检测为阳性的准确率,医生可以正确地告诉患者你需要进行治疗。
因此,对于这种非常偏斜的分类问题(即两种类型的数量差距非常大,这样的话,只用模型预测结果的准确率,并不能判断它的好坏,例如99.5%的正常人和0.5%的患者,如果模型预测有99%的准确率,1%的错误率,这样显然不能表示模型预测结果很好),我们可以通过precision和recall来判断模型的分类效果。它们的值越高,则模型越好。

查准率和召回率的权衡问题,这里我们不能像之前的评估方法那样,利用一个数值来评估模型的好坏,因为我们有两个数值,precision和recall。因此提出了一种F1Score来进行模型的判断,如下图所示在这里插入图片描述

23、支持向量机SVM

SVM的优化函数是在逻辑回归的基础上进行改进的,如下图所示
将逻辑回归看做是A+λB,那么支持向量机就是CA+B
在这里插入图片描述
1、将逻辑回归中A和B的系数m去掉,这并不影响取函数最小值时的θ值的大小
2、将逻辑回归的A中两部分写成cost1和cost0,其中1表示标签y取1时的函数,0表示标签y取0,其中他们的函数图像如下,横坐标是z=θTX,可以看出,y=1时,当z>=1时,才会有cost值为0,y=0时,当z<=-1时,才会有cost值为0,但是非严格来讲,我们说z>=0或者z<=0即可
在这里插入图片描述

3、将逻辑回归中的B的系数λ去掉,同时在A前加上系数C
这样,SVM的目标优化函数就如图中最有一个式子所示
4、支持向量机输出的并不是一个概率值,而是根据优化得到的θ,与输入x进行相乘,根据sigmoid函数,如果值大于0,则输出1,否则输出0。
在这里插入图片描述
支持向量机又称为最大间距分类器,要理解这个,首先需要讲解一下决策边界的知识,如下图所示
在这里插入图片描述
从上图的一个逻辑回归模型可以看出,如果得出的θ向量为[-3,1,1],根据sigmoid函数,要使得输出的概率为1,就要是的函数值大于0,即-3+x1+x2>=0,从上面的图像中可以看出,直线将样本很好的分成了正负两部分,那么该直线就是决策边界

关键部分来了,如果将θ向量绘制在图像中,就可以发现它与直线是相互垂直的,这可以通过最简单的一元线性函数得出

这里再附一张图帮助理解,如下
在这里插入图片描述
下面开始解释为什么SVM被称为大间隔分类器
根据SVM的目标优化函数CA+B,我们将系数C设为非常大,那么为了使目标函数最小,我们就需要使得A为0,即
在这里插入图片描述
因此,它的目标优化函数就只剩下了B这一项,即上面方框中所示。
在这里插入图片描述
从上图我们可以看出,SVM的目标优化函数可以看作是θ向量的二范式,即它的欧式距离,而θTX可以看出是X向量在θ向量上的投影p乘以θ向量的长度。那么,
在这里插入图片描述
从上面左边图像中可以看出,如果决策边界是绿色直线,那么θ向量是与它相垂直的。对于样本x1,x2来说,他们在θ向量上的投影p将会非常短,对于x1来说,由于y=1,为了使p*||θ||的值>=1,则需要θ的长度非常长才行,对于x2来说,同理。但是我们的优化目标是使得θ的长度变得尽可能短才是,显然这种划分方法不合理。
而从右边的那副图像可以看出,这种决策边界的画法,使得x1和x2在θ上的投影变长了,从而使得θ向量的长度变短了。
因此,从右图可以看出,支持向量机使得正负样本之间的距离变得相当长,从而叫它大间距分类器。

核函数

在这里插入图片描述
对于支持向量机来说,它的优化函数中,并不是θTXi,而是θTFi,其中F就是核函数,它是一种特征函数,代表了样本Xi标记点landmark之间的相似程度。其中,核函数可以是高斯等函数,对于SVM来说,标记点就是输入的每一个样本点。
下面介绍一下非线性的决策边界问题,来更好的理解核函数和标记点,如下图所示
在这里插入图片描述
对于上图的分类问题,要想分类,一种方法是需要定义多个定义一个非常复杂的多项式特征的集合,这种方法有一个很大的问题是我们并不清楚我们需要最高多少阶的特征,这样就会存在很大的问题如右边的方框公式所示,另一种方式是定义新的特征向量f1,f2,f3…,来取代θ的系数,它们的个数取决于得到的标记点的个数
在这里插入图片描述
如上图所示,我们定义了3个标记点,所以特征函数就有3个,代表了样本点与各个标记点之间的相似程度
在这里插入图片描述
如果样本点与某个标记点之间的距离很近,则对应的特征函数值就为1,这里以高斯函数为例,如果样本点与某个标记点的距离很远,则对应特征函数值为0。
在这里插入图片描述
这样的话,从上图右式可以得出,对于某些部分的点,它的函数值大于0,而其他部分点的函数值是小于0的,从而完成了这种非线性的分类问题。
下图是SVM的优化函数中两个参数的大小与偏差和方差的关系
在这里插入图片描述

SVM的使用

在使用SVM进行训练时,我们需要提前确定好参数C和核函数的选择。
在这里插入图片描述
如上图所示,如果不需要核函数(也叫线性核函数),那么就直接使用输入数据X来作为参数θ的系数。它适用于特征数量n很大,但数据量m很小的情况。对于高斯核函数,它适用于特征数量很小,数据量很大的情况,不过需要提前确定好参数δ的值。
在这里插入图片描述
上图展示了一些其他可以用选择的核函数,像:多项式核函数,字符串核函数等。但是它们的使用非常少。

SVM解决多分类问题

在这里插入图片描述
如果有k类,则定义k个特征函数。

24、K-Means聚类

步骤:
1、首先需要定义需要分类的类别数k,并随机定义k个聚类中心点
2、根据距离的远近将数据分为k类
3、根据每一类中数据的均值来改变中心点的位置,进入步骤2

k均值的目标优化函数

在这里插入图片描述
如上图所示,其中c(i)表示第i个样本点所处的类的索引,1~k
μk表示第k个聚类中心的位置坐标
那么k均值的目标优化函数就如上图最后一个方框所示,等式右边表示所有样本点距自己类中心点的距离的平方和,目标是使得它最小。

k均值中心点的初始化

可以在所有的样本数据中随机寻找k个点作为聚类中心点,这样随机的初始化可能会得到不好的局部最优解,因此可以经过多次的随机初始化,最后得到最好的一组,不过这种方法只适用于有2,3,4,5,6等较少类别的情况
在这里插入图片描述
如上图所示,可以运行100次K均值聚类,每一次都用一种不同的随机初始化,这样便得到了100种不通过的聚类中心,最后选择代价函数值最小的那种。

k均值类别数目k的确定方法

通常情况下,对于类别数目的确定,最常用的方法观察法,当然也存在一些其他的方法,但是有时候他们并不是非常有效。
肘部法则
在这里插入图片描述
如上图所示,我们通过对类别数目进行遍历,并将每个的cost function记录,如果能够得到类似于左图的图像,显然,k=3为最好的结果,但是,通常情况下,我们更多的是得到右边的图像,那样的话,我们就不能得到一个确切的结果来。
第二种方法是根据题目或者市场等要求,通过提问,我们分类的目的是什么等问题,来对k进行赋值

25、主成分分析法PCA

降维是我们学习的第二种无监督学习方法
PCA实现降维的方法就是通过找一条直线,一个平面,或者其他维度的空间来对数据进行投影,使得投影的距离和最小
在这里插入图片描述

PCA和线性回归的关系

在这里插入图片描述
它们两个是截然不同的算法,从上图可以看出,左图,线性回归是原始值和预测值之间的距离最小,从图中反映就是他们的竖直距离最短,而PCA是样本数据点到低维空间的投影距离(即垂直距离)最短

PCA算法的步骤

1、对所有数据进行标准化处理
2、计算协方差矩阵,然后计算它的特征向量矩阵
在这里插入图片描述
3、确定最小的k值,通过保留方差的99%或者95%来选择
在这里插入图片描述
4、取特征向量的前k列作为低维空间,将输入数据与该特征矩阵相乘,得到m*k的矩阵z

应用PCA时的建议

1、 进行数据压缩,从而减少内存和磁盘的存储容量;
加速学习算法的速度;
进行可视化,将数据压缩为2或3维。
2、不建议使用PCA的方法来防止过拟合,通常就可以使用逻辑回归中的正则化来预防,而不是pca。 原因是pca是无监督的学习算法,他在运行时会忽略到标签y的一些信息,即使你保留了99%的方差,仍然会丢失,而回归就不一样,当使用正则化时,所有的标签信息仍然被考虑了进去。
在这里插入图片描述
例如,当原始特征数量是10000,样本数据量是1000时,在经过降维后,特征数量变为了1000。如果使用原始数据,由于样本数据量比特征数量少,因此就可能出现过拟合的现象,在经过降维后,这样的情况确实得到了缓和,但是这是bad
3、一般在设计模型时,不要一开始就是用pca算法。 我们一般先直接使用原始数据来作为模型的输入,只有在这样做到不到目的的情况下,再考虑使用pca。

26、异常检测

利用高斯进行异常检测的步骤:
1、选择特征变量xi
2、计算每一个特征的μ和δ2,
3、根据新给出的样本x,计算p(x),即高斯概率,如果p(x)<epsilon
在这里插入图片描述

异常检测和监督学习的区别

在异常检测中,它的数据其实是倾斜数据,即正负样本数差距很大,将数据划分为训练集,交叉验证集和测试集,其中训练集只包含绝大部分的负样本,而不包含正样本,这样可以通过训练集来训练出高斯函数的所有参数μ和δ,正样本被分在了验证集和训练集中。同时由于是倾斜数据,因此不能用预测的准确率来进行模型的评估,而需要利用precision和recall,以及F1-score值来进行评估。
对于异常检测来说,它的数据集中的正样本数量(即y=1)只占很小的比例,而负样本(y=0)的数据量很大,如果利用监督学习算法的话,则不能在这些很少的正样本数据中学到有效的知识。
监督学习算法中,在合理范围内,会有大量的正负样本。
在这里插入图片描述

27、选择需要使用的函数

在进行异常检测前,我们需要选择使用哪种检测算法**,最常用的选择方法就是画出输入数据的直方图** ,例如,如果我们需要使用高斯来进行异常检验,那么我们的数据就得符合高斯分布。虽然对于不符合高斯分布的数据来说,如果不将它转换为高斯分布的话,我们依然可以使用高斯算法来进行检验,但是它的运行的结果并不好。
其中进行转换的方法有很多,像将数据对数话,开方,开三次方,等等

28、推荐系统recommender system
(1)基于内容的推荐系统

以电影为例,基于内容的推荐系统就是我们已知了每部电影的特征向量,通过训练用户对每部电影的评价分数,来预测是否推荐一部电影给用户。

(2)协同过滤

在这里插入图片描述

29、学习大数据集

在这里插入图片描述
如果需要训练的数据集很大,那么不可能直接将所有的数据集用于模型的训练,因为我们还不清楚自己的模型是否是科学有效的,因此,可以先通过学习曲线来进行确定,即通过减小数据集的大小,然后逐步增加,观察该模型是否适用于大数据集,如上图所示。

随机梯度下降

当我们使用大数据集进行训练时,利用批梯度下降算法(即一次迭代需要训练所有的训练数据),它的计算量将会非常大。因此需要使用随机梯度下降,它的训练速度要快的多,计算步骤如下:
1、将所有m个数据进行随机排序
2、针对每一个样本进行迭代,在计算梯度,即偏导数时,不是通过计算所有样本的误差实现参数更新,而是只计算该样本的误差,然后实现对所有n个特征参数的更新,这样就可以使得所有参数在求得一个误差后就更新一次,加快了更新速度,如下图
在这里插入图片描述
在这里插入图片描述
从上图可得,随机梯度下降是通过计算每个样本的误差来对参数进行更新,从右边等高图中粉色折线可得,每次经过更新后的误差并不能保证都在向最小值的方向前进,但是总体上是这样的

Mini-batch梯度下降

我们使用Mini-batch梯度下降而不是用随机梯度下降的最主要原因是它可以进行向量化运算,从而使得运行效率更快更高。如下图所示
在这里插入图片描述

30、随机梯度下降收敛

验证模型的梯度是否在下降中,我们的方法是绘制出cost function随迭代次数变化的曲线图。在批梯度下降算法中,一次迭代需要训练所有的数据,所以绘制它的曲线图的时间成本太大。而在随机梯度下降中,我们每训练一个样本就会对所有的参数进行更新,从而可以很容易的绘制出曲线图,但是并不是更新一次就绘制一个点,而是通过设置一个值,如1000,即每1000次迭代就计算一次平均cost值,绘制出曲线,从而观察是否梯度在下降。
在这里插入图片描述
如上图,从第一幅图中可以得出,对于较大的学习率α,他绘制出来的曲线震荡程度比较大,而将α调小,算法的学习变慢,代价函数下降也变慢了,这样就会收敛到一个更好的结果
从第二幅图中可得出,如果每1000个样本计算一次cost值,那么绘制出来的曲线图可能会有较大的震荡,但是总体上是在下降的,而如果每5000次计算一次cost值,它绘制出来的曲线就显得更平滑一些。
从第三幅图中可以看出,如果对于1000来说,它的曲线图震荡幅度比较大,而且总体并不显示有下降趋势,我们可以尝试增加到2000,3000这样,可能曲线图就会有下降趋势,但也不是绝对的,如果该值增加到一定程度,可能仍然显示水平。
从第四幅图中可以看出,随着迭代次数的上升,它的cost值反而在增大,那么很显然梯度是发散的,这是就需要使用更小的学习率α
在这里插入图片描述
如上图所示,当我们使用一个固定的学习率α进行训练时,在最后,我们得到的结果并不是一个最优值,而是附近的一个震荡值,如果我们想要它更好的收敛,可以在收敛的过程中逐渐减小α的值,公式如上图的方框所示,结果如下图所示,
在这里插入图片描述
可以看出,随着α的逐渐减小,cost值的震荡幅度也变得越来越小。
通常不管将α减小与否,都是适用的。而如果选择要将α逐渐减小,那么从公式可得,它就多了两个参数需要确定,这可能是影响效率的一点。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值