机器学习(二)
作者:互联网
当预测的变量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))
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