ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

机器学习(二)

2022-09-03 11:05:05  阅读:153  来源: 互联网

标签:box 0s 机器 学习 amp em 0px border


当预测的变量y是一个离散值的情况下的分类问题

在分类问题中分为正类和负类,通常情况下认为没有某样东西是父类

二元分类算法及多元分类算法

使用线性回归算法对数据进行拟合,可能会得到一个假设,如果想要做出预测,对分类器输出的阈值设定,这里的阈值是一个纵坐标,分类问题可以设置一个阈值,当超过这个阈值的时候为1,低于这个阈值时为0

不推荐将线性回归用于分类问题

逻辑回归算法(分类算法的一种)

  希望分类器的输出值在0和1之间

假设这是使用线性回归时的假设形式

 

 

将h(x)转换为sigmoid函数为

 

 

 

 

 sigmoid函数(S型函数)

Sigmoid函数的数学形式是:

  <span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; display: inline-block; position: relative; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word; width: 6.773em; height: 0px; font-size: 19.2px;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; position: absolute; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word; clip: rect(0.68em, 1006.77em, 3.128em, -999.997em); top: -2.185em; left: 0em;"><span id="MathJax-Span-2" class="mrow" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; display: inline; position: static; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word;"><span id="MathJax-Span-3" class="mi" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; display: inline; position: static; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word; font-family: MathJax_Math-italic;">f(x)=11+e−x

 

 

 

sigmoid函数连续,光滑,严格单调,以(0,0.5)中心对称,是一个非常良好的阈值函数。在x超出[-6,6]的范围后,函数值基本上没有变化,值非常接近,在应用中一般不考虑。Sigmoid函数的值域范围限制在(0,1)之间,可以和分类联系1起来

Sigmoid函数的导数是其本身的函数,即<span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; display: inline-block; position: relative; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word; width: 9.794em; height: 0px; font-size: 19.2px;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; position: absolute; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word; clip: rect(1.253em, 1009.69em, 2.607em, -999.997em); top: -2.185em; left: 0em;"><span id="MathJax-Span-23" class="mrow" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; display: inline; position: static; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word;"><span id="MathJax-Span-24" class="msup" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; display: inline; position: static; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; display: inline-block; position: relative; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word; width: 0.888em; height: 0px;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; position: absolute; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word; clip: rect(3.128em, 1000.58em, 4.378em, -999.997em); top: -4.008em; left: 0em;"><span id="MathJax-Span-25" class="mi" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; display: inline; position: static; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word; font-family: MathJax_Math-italic;">f′(x)=f(x)(1−f(x))

<span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; display: inline-block; position: relative; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word; width: 6.201em; height: 0px; font-size: 19.2px;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; position: absolute; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word; clip: rect(0.68em, 1006.2em, 3.232em, -999.997em); top: -2.185em; left: 0em;"><span id="MathJax-Span-481" class="mrow" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; display: inline; position: static; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word;"><span id="MathJax-Span-482" class="mi" style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; transition: none 0s ease 0s; display: inline; position: static; border: 0px; vertical-align: 0px; line-height: normal; overflow-wrap: break-word; font-family: MathJax_Math-italic;">函数形式:p=11+e−η(θ)

    

Sigmoid函数的数学形式是:

 

 

如何拟合逻辑回归模型的参数θ(定义用来拟合参数的优化目标或者是代价函数)

 

对于给定的训练集如何选择或者如何拟合参数θ,之前建立线性回归模型时,使用了这个代价函数,把这个写成不同的形式

 

 ,将其替换成其他的形式,如果将上标去掉的话,可以看到这个地方是相当于1/2的平方误差,输出是预测值h(x),实际标签是y的情况下的误差的平方。使用这个代价函数,会变成参数θ的非凸函数

 

 因为h(x)=1/(1+e^(-θ^Tx)是很非线性的函数,所以显示出来的函数图像有很多的局部最优解,如果使用梯度下降法寻找最优解的话会很麻烦,这样是一个非凸函数,我们想要的是一个凸函数,可以保证梯度下降法可以收敛到该函数的全局最小值,我们需要寻找一个其他的代价函数使得可以是凸函数

 

 这个是用在逻辑回归上的

 

 

 

y轴相当于是cost值

 可以看到y=1时,预测的h(x)的值也为1,那么代价值就为0,当h(x)趋向于0时,代价函数就会激增,这就相当于我们对病人说,你有一个恶性肿瘤的概率是0,但是如果这个人本身的结果确定为恶性肿瘤,那么我们会用非常大的代价惩罚这个算法;

当y=0时,预测的h(x)为1是同样会付出很大的代价

 cost是用来衡量模型和实际的偏差,所选的代价函数会给我们一个凸优化问题整体的代价函数,没有局部最优值(凸函数其实在国内的定义时凹函数)

 

将单训练集的代价函数的理念发展,变为整个训练集的代价函数的定义

 

 

 逻辑回归的代价函数,J(θ是整体的代价函数),将cost函数的两个式子合并为一个等式

cost(h(x),y)= -ylogh(x)-(1-y)log(1-h(x))

y只有两个结果0或者1,在不同的结果下所得到的的cost的值也是不一样的,正好可以对应上方的结果

用它自己减去

 

 找出让J(θ)取得最小值的参数θ(可能会得到某组参数θ),之后为了得到一个预测可以给我们一个新的x,可以用拟合训练样本的参数θ输出预测的值

 

 如果想要最小化J(θ)的话,我们可以使用梯度下降法,去反复更新每一个参数

 

这里还有一个1/m在α前面

 

 如果有n个特征就有一个θ的向量组θ1,θ2,。。。。θn,同时更新所有θ的值,这里和线性回归的梯度下降法一样,那么逻辑回归和梯度下降法的区别在于,在逻辑回归中这个式子的定义发生了变化h(x)是不同的

在线性回归中提到了监控梯度下降法以确保其收敛,将其同样用在逻辑回归中,监测梯度下降使用向量化或者for循环,逐步更新θ=θ0.。。θn的值

同样的特征缩放也一样适用于逻辑回归算法

 

 

 

使用逻辑回归解决多类别分类问题(‘一对多’的分类算法)

多类别分类:邮件的tag。家人,朋友,工作或者兴趣,这样的话y=1,或y=2,或y=3进行类别分类表示

 

 

 

包含三个类别,转换为三个独立的二元分类问题

先从三角形代表的类别1开始,创建一个新的伪训练集,类别2和类别3设定为一样的负类,类别1设定为正类,拟合一个分类器h^1(x),将三角形的值认定为1,圆形认定为0,训练一个标准的逻辑回归分类器,我们可以根据这个得到一个判定边界,其他的做同样的处理

也就是我们做出三个分类器,让i,=1,2,3,

 

 拟合出h^i(x),给定x和θ时,估计出y=i的概率,h(x)估计出的是一个概率,然后选择最大的h(x),也就是可行度最高的,我们预测y就是那个值

 

标签:box,0s,机器,学习,amp,em,0px,border
来源: https://www.cnblogs.com/xxsadd/p/16641364.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有