机器学习第一阶段
3非监督学习的概念理解:非监督学习是让机器去自己对成千上万的数据进行分类,我们没有为算法提供正确实例,是它自己去区分哪些数据属于同一种,比如你在千问上问ai问题,它回答完会列出参考文章,这些文章就是非监督学习所得出的,人不会一一告诉它问题需要参考具体文章,这就需要ai去自己学习你的问题需要参考哪一类文章,这个“类”就是ai通过非监督学习所整理出来的,你的抖音推荐就是机器把你分类成某一类人,并为你推
一,初步概念
1机器学习包含
监督学习和非监督学习
2监督学习的概念理解:
监督学习是让利用已有的数据集,将它们以x-》y的形式提供给机器供机器学习,随后可以通过已有算法例如线性回归等记住他们,使机器能够自行预测,比如房价,将面积和对应价格给它进行训练,它就能通过算法能预测面积与价格之间的关系,你给它面积,它给你预测价格
监督学习应用场景:
分为两方面
(1)回归:回归偏向于大范围数据的预测,例如给你房面积,它会预测出房价,这个房价可能范围会是很多数,100.2w 130w 150w等等,对于数字的预测,(股票预测)
(2)分类:分类偏向于与几个选项的预测,例如给你大部分的肿瘤图片以及它们是否为良性恶性,机器会根据你的图片预测出他是良性与恶行,其中良性为1恶行为2,这也证实了我们第一句话,分类是几个选项之间的预测.
3非监督学习的概念理解:
非监督学习是让机器去自己对成千上万的数据进行分类,我们没有为算法提供正确实例,是它自己去区分哪些数据属于同一种,比如你在千问上问ai问题,它回答完会列出参考文章,这些文章就是非监督学习所得出的,人不会一一告诉它问题需要参考具体文章,这就需要ai去自己学习你的问题需要参考哪一类文章,这个“类”就是ai通过非监督学习所整理出来的,你的抖音推荐就是机器把你分类成某一类人,并为你推荐这一类人喜欢的视频
非监督学习应用场景:
分类四个方面
(1)聚类:将数据分为几个不同的类别,如客户细分
(2)关联规则学习:发现大量数据集中项之间的有趣关系,常用于购物篮分析
(3)降维:减少数据的维度,尽量保留主要信息,例如pca
(4)异常检测:识别不符合预期模式数据。
二,监督学习的相关算法模型
线性回归
线性回归定义
(1)概念:线性回归是一种用于预测连续变量的统计学方法,通过建立一个或多个自变量与一个因变量之间的线性关系来预测数值。 线性回归的数学表达式通常表示为 𝑌=𝑤𝑋+𝑏Y=wX+b,其中 𝑤w 是直线的斜率,𝑏b 是截距。线性回归的目标是找到最佳拟合直线,以最小化预测值与实际观测值之间的差异,线性回归是最基础的模型,学会它之后还会学习更多的复杂模型
(2)线性回归相关函数:
成本函数(平方误差成本函数):cost function成本函数所做的是,衡量模型预测与y的实际真实值之间的差异

关于成本函数的理解:成本函数其实就是为了找出平方误差最小时w的合适值(最小值),来使模型更有泛化性;w的成本函数的意思是w作为自变量,当w的值不同时,通过上述式子计算出来的j,y=wx+b,我们将b等于0(b=0是并不影响我们寻找最合适的w(我们找的是斜率和误差的关系,))这样计算出来的成本函数是一个二次函数,因为斜率小,误差大,斜率大,误差小,所以j是二次函数,我们可以找出成本函数(误差)最小时的w,此外,我们观察二次函数,其实当b变化时影响的只是成本函数的最小值的大小,不影响最小值对应的w,这个w就是我们最优w
以上说法适用于下图

j使成本函数,w和b是参数,不管b咋变,w最小值永远不变
3d可视化成本函数的w,b,j关系


第一张图是指j,w,b三维函数,即w和b确定,的j的值,右边的图是从上边看,中间的密集的地方是j的最小值的时候,w与b的值,
图片解读:你可以看第一张图,当j最小时,有一组w,b对应的低谷,这是最合适的值,这样及能做到平方误差最小,也能做到w,b最合适
梯度下降
意义:
我们无需手动找出最优解找出等高线,那样并不精准,我们可以让机器通过算法帮我们找出最合适的w,b,这种算法称之为梯度下降,梯度下降不仅适用于下线性模型中的找值,也适用于ai训练中更大更复杂的模型,它适用于多个参数的成本函数,阶梯下降是一种可用于尝试最小化任何函数的算法,而不仅仅是线性回归的成本函数
用法:
使用阶梯下降函数,你需要做的是,你将每次都稍微改变w和b以尝试降低w,和b的成本j知道希望j稳定或接近最小值

实际实现阶梯下降的算法:




导数:
阿尔法是学习率,紫色圈里的是导数,导数为正,w-一个正数向左移j小了,同理w-负数右移,j也小了,合理!我们可以看到,当学习率(下面会具体讲什么是学习率,这里只需要理解是一个人工设定的系数)一定时,导数会随着收敛(w越来越靠近低谷)越来越小,也就是原始w减去的数值越来越小,那么就会慢慢靠近低谷
学习率:
学习率一般是我们自己设置的,学习率太大或者太小都不可以,因为学习率太小它的下降速度会很慢,学习率如果太大,那么会出现w-一个很大的数,可能一下就跳到低谷的对面,如果不收敛(w越来越靠近低谷)那么w的值可能会发散,这样就会与来越差劲
线性回归中的梯度下降:

对上述导数进行推导,如下表


多类特征:
如果你有多个因素x影响价格,那么这种线性模型更加接近现实,它的表达形式如下
列向量:线性代数的概念,表示一类数
通过列向量可以简化线性函数

这种多元素模型也叫多元线性回归模型
矢量化:
在 python 中我们可以用矢量化提高代码运行效率,前两个例子是没有矢量化,最后的例子是矢量化,它调用了并行硬件,更加高效

 向量化使代码更短,运行速度更快,以下是向量化如何工作的:
在 for in 中计算机是一点一点算然后加起来,但是用矢量化把它列成了一个图标,,直接全加起来,这样计算没那么麻烦
多元线性回归和矢量化的结合:
 备注:下图是角标意思(帮助你更好地理解多类特征公式)
 备注:下图是角标意思(帮助你更好地理解多类特征公式)

 解释
i 指的是第 i 套数据(x 的列向量),意思是给出的第 i 套数据,代入 f 中减去预测值乘以第 i 套数据的第一个 x
备注: x 的 右上角角标指的是第几套数据,下角标指的是第几个值.
最后我们将多套数据相加即可
特征缩放:
一、为什么要使用特征缩放(Feature Scaling)
  目的:使梯度下降算法运行速度更快,效果更好
1.首先来看预测房价的例子
          x1表示房子面积(范围较大),x2表示卧室数量(范围较小)
(1)如果初始时,w1设置为50,w2设置为0.1,那么初始计算的price为:100050
(2)如果初始时,w1设置为0.1,w2设置为50,那么初始计算的price为:500(这个相对更合理)

从上面可以看到,如果x1和x2两个特征差距太大,相应的w1和w2两个参数也会差距太大
当x1范围大则w1相应的变化范围就会很小,当x2范围小则w2相应的变化范围就会很大:
2.特征缩放前后效果对比
          下图是x1、x2进行特征缩放前后的f(x1,x2)散点分布图和代价函数J(w,b)的等高线图

如果按原样训练数据。因为J(w,b)轮廓高而细,梯度下降可能会在结束前来回反弹了很长时间都没办法找到全局最小值的方法(因为w1的取值很小,学习率一定时梯度变换的幅度就会很大,就会来回跳,参考之前的内容)。在这种情况下,一个有用的要做的就是缩放特征。这意味着执行一些对训练数据进行变换,使x1的范围现在可以从0到1和x2的取值范围也可以是0到1。这样做的目的是为了让w1w2尽可能范围差距不是很大,从而使学习率相同条件下,梯度下降不会出现反复横跳,从而达到提高梯度下降效率的效果
数据点看起来更像这样左下的散点图;你可能会注意到下面的图的比例现在相当和上面的不一样。关键是x1和x2现在都是可比较的,如果你运行梯度下降在这里找到一个成本函数,使用它重新缩放x1和x2变换后的数据,轮廓看起来会更像圆圈(右下)(为什么会变成圆圈参考绿色字体解释),梯度下降法可以通过更直接的路径到全局最小值,缩放后更容易找到合适的w和b参数值。
二,缩放的方法:
特征缩放的方法一:统一除以最大值

特征缩放的方法二:平均归一化

特征缩放的方法三:z分数归一化
补充知识:标准差:

z分数归一化的计算方法
检查梯度下降是否收敛:
导入语:我们前面学习了很多关于梯度下降的公式以及提高梯度下降效率的方法(特征缩放),一切都做好了之后,我们就要去检验我们的梯度下降是否有效,是否真正收敛。

可以借助J(w,b)-迭代次数学习曲线来获取一些梯度下降的信息
1.如果随着迭代次数增加,J(w,b)不降反增,这表示α可能选择的太大,或者程序出现了bug
2.当迭代到一定次数后,J(w,b)趋于平稳,那么就可能意味着经过这些次数迭代J(w,b)收敛
3.不同的代价函数迭代次数不一样,有的30次就收敛,有的1000次,有的100000次,这个次数经过我们绘制学习曲线也会有个比较直观的认识。
具体什么时候达到收敛,我们可以设置一个阈值ε,当迭代过程中代价函数的减少值小于这个阈值就可以认为已收敛。
如何选择一个合适的学习率

1.学习曲线(J(w,b)-迭代次数)
有时候学习率很小但是成本会不减反增,这是因为程序出现了bug

技巧:设置一个非常小的学习率α,如果在这样的学习率下还是会有J(w,b)在迭代中增加,此时就要注意程序内是否存在bug了,这里选择非常小的学习率只是一个调试过程,用于发现程序内可能存在的bug,但不是训练学习算法最好的选择(学习率太小可能会导致需要迭代很多次才能收敛)。
方法:

特征工程:
将线性模型通过修改应用到更加复杂的情境之中
Logistic回归
导入语:我们的线性回归只能适用于监督学习中的回归类问题,如果是分类为问题,线性回归就显得不是那么适用,我们就要用logistic回归
Logistic的定义:
Logistic回归是一种广泛应用于统计学和机器学习中的分类算法,它属于广义线性模型的一种,主要用于估计某个事件发生的概率。在流行病学中,Logistic回归被广泛应用于探索疾病的危险因素,以及预测疾病发生的概率。这一回归分析技术不仅适用于数值型数据,也能处理标称型数据。
使用线性回归预测分类问题:



如果我们使用0.5为分界线,那么第一次拟合的时候该线性回归会正常,但是如果你添加一个新数据,这样0.5对应的x值就会向右偏移,这样就会导致第一次的数据有一部分被覆盖,从而使恶行肿瘤被预测为良性。如上图,这就是使用线性回归来预测分类问题的缺点。因此我们要开始使用Logistic线性模型
使用Logistic线性模型:
Logistic模型的表现形式


Logistic算法的过程:将线性回归的结果输入到激活函数(逻辑函数)中,把他变成0-1之间的一个数,这个数实际上就是结果为1的概率(是肿瘤的概率)
上图解读:两个f(x)不是一个东西,上面的f(x)=z=wx+b,然后将z带入到g(z)函数中,下边的f(x)是重新定义的一个函数,它的作用是预测是否为肿瘤的概率,他的x(因变量)是我们在线性回归中的结果f(x),这个重新定义的f(x)就是是肿瘤的概率,也就是表现为1的概率,如下图

决策边界:
由于我们通过激活函数定义出来的是结果为1的概率,但是我们想要让机器预测为肯定的1或0,因此我们可以通过设置一个阈值,使f(x)在这个阈值上被预测为1,下被预测为0,
我们给函数设置了阈值之后,由于(激活/sigmoid/逻辑)函数是线性的,每一个y都有对应的x,且他们是连续的,当y大于一个值,x也会大于一个值,如下图表示

总结:问:为啥么给x设定范围就可以求出1/0,答:因为在逻辑函数中,它表现出来的是在0-1范围内结果为1的概率,没有准确结果,我们需要设置一个阈值使在阈值以上的概率为是,否则为否,那么z也会有范围,z是什么,z是线性回归中的结果,我们只需要通过多项式回归合理的设置好一个函数,通过调整wb参数,完善逻辑回归模型,这个函数的xy轴都是特征项,在阈值内为是,在阈值外为否。

还可能会有更加复杂的模型

逻辑回归中的成本函数
逻辑回归中的成本函数,又是一个老问题,我们既然已经搞明白怎么确定是与否,并将它与线性回归联系了起来,那么我们还是要去确定这个函数的参数----成本函数

这里的成本函数是不行的,因为这个成本函数是陡峭的山坡式的看,这将使我们无法进行梯度下降,因此吴恩达老师使用了另一种方法,重新定义一个损失函数(代价函数包括成本函数和损失函数,其实成本函数和损失函数都是用来计算实际值和预测值之间的误差的,而成本函数计算的是整个训练集的误差和,而损失函数使计算每一个训练项的误差并将他们加到一起,或之和或除一个数,经过处理之后的损失函数求和再除数之后所求的就是我们逻辑回归中的成本函数。)这个损失函数长这样
这是实际值=1时的函数图

实际上我们预测值只能在0-1之间,因此我们只看0-1之间的函数就好了。上图左侧是我们的图像
图像解释:我们都会算ln函数,(没写底数就是ln函数)当我们预测值(logictic函数算出来的数)为x时,实际值为1,如果x越接近1,在函数中就越小,这样算到成本函数误差是不是就越小,同理,如果越接近零,我们预测是不是就越错误,那他函数越大,算到成本函数误差就越大,
这是实际值=0时图像

这是损失函数合在一起的成本函数,


logistics的成本函数通过重新定义回归了凸函数的性质,这样就可以继续梯度下降了。
逻辑回归梯度下降的实现:

逻辑回归的梯度下降的式子与线性回归的梯度下降的式子相同,当时实际上他俩的区别在于他们的f函数的定义不同,以下是他们的区别

线性回归f(x)时线性函数,逻辑回归中f(x)函数时激活函数
欠拟合和过拟合(高方差)问题
过拟合问题表现

第一张图是欠拟合,第二张图是合适的时候,第三张图是过拟合
解决过拟合
解决过拟合一共有三种方法

第一种方法:收集更多数据,通过新模型的中和作用,使过拟合的模型回归于正常。
第二种方法:特征选择工程,通过选择有用的特征,对正确预测有用的特征,使预测更加有效,说白了就是选有用的特征,去掉无用的或者影响不大的特征。
第三种方法:正则化,正则化是一种数学方法,通过正则化线性回归和逻辑回归里的成本函数和损失函数,以及对应的梯度下降公式参数,我们可以有效的减少作用微乎其微的特征x的参数,从而达到让每一个特征x都有属于他自己的合适的权重。
正则化线性回归:
正则化线性回归跟逻辑回归一样,都包括两个步骤,第一个步骤,正则化成本函数(注释:成本函数和损失函数都是代价函数,它们都用来衡量模型的性能,但它们在不同的模型和上下文中有不同的形式和用途。在线性回归中,我们通常使用成本函数;而在逻辑回归中,我们使用损失函数。),为什么要正则化成本函数,因为我们的目的是为特征x找到合适的参数,从而使无用的特征x的参数尽可能的小,第二部就是找出正则化之后梯度下降时候的参数w和b的表达式,以下是具体细节。
正则化的成本函数

正则化之后的参数梯度下降表示:

正则化逻辑函数:

道理跟上面的一样,这里就不重复了。
------------------—————————————————————————————————————
以上呢是机器学习中的第一部分内容,是吴恩达老师的课程的第一阶段,到了这里你学习到了两个基础的模型,线性回归和逻辑回归,并且掌握了机器学习中的一些个基础知识,让我们梳理一下吧,从训练模型开始,我们就要收集数据,分组,我们会根据我们的目标目的,选择监督学习还是无监督学习内容训练ai,假如我们选择监督学习,我们可以选择线性回归或者逻辑回归,根据问题的不同,数字预测类选择线性回归,判断选择类选择逻辑回归,随后,我们要去选择多类特征,选出有用的特征方便计算,在我们把这些特征以数字化表示出来之后,我们就要选择合适的代价函数,包括成本函数和损失函数,选择好函数之后,我们开始计算合适参数,也就是训练模型了,我们使用矢量化来简便公式,并且列出相应的代价函数公式,随后我们用w和b的梯度下降公式寻找合适的参数,在这个过程中,为了确保梯度下降给更加有效,我们会用特征缩放,再然后选择合适的学习率,然后训练合适的参数,让模型更有泛化性,更加强大,预测更加准确。此外在逻辑回归中,使用方法让函数预测出是 是 的概率,表现为0.5 0.8这样的数字,我们同样使用损失函数找出合适的函数,训练完模型之后,模型可能会出现过拟合,我们有三种方法解决问题,收集数据,选择特征,正则化特征,大概就这样,这是第一阶段的个人理解和概括,让我们进入下一个阶段吧
更多推荐
 
 



所有评论(0)