本文旨在列出逻辑回报,因为它的简单,实用和高效在行业中广泛使用。注意,“逻辑”是“逻辑”音译的缩写,并不是说该算法有多么逻辑。
机器学习算法中的监督学习可以根据是否可以分为返回值或是否可以将返回值分为:
尽管逻辑回归称为“回归”,但已解决,但它是一个离散的问题,即分类,例如预测肿瘤的良性,电子邮件是欺诈电子邮件等,等等,“分类”是目的和目的逻辑返回的结果,但中间过程仍然是“回归”。
您怎么说?因为通过逻辑回归模型,我们得到的结果是某物的概率(不是),而值域则是[0,1]。然后,将此概率添加到阈值中。例如,上述肿瘤为0.5,例如,当肿瘤的可能性大于或等于0.5时,可以判断该肿瘤为良性肿瘤。
考虑最简单的线性回归模型,也就是说,只有一个自变量。例如,广告输入X与销售量y之间的连接,以下分散的点映射说明了x和y之间的一个yuan之间的关系。
但是,在实际问题中,因为可变y是一种分类类型,即仅采用0或1个值,而不是上面的相应关系(y可以任命)。
假设我们有这样一组数据:要为不同用户放置不同数量的广告,记录其购买广告产品的行为,1代表购买,0表示UNB购买,如下所示:
目前,仍考虑线性回归模型,并将直线结合在一起:
可以看出,不仅有几个点落在直线上,而且似乎分散的点和直线无关。也就是说,中值为0.5。当输出y> 0.5时,它被认为属于1类,即,它将购买产品,反之亦然,而不是购买。不买。} 1,f(x)> 0.5 0,f(x)le 0.5 end {matrix} ight。$
由于拟合方程为$ y = 0.34x $,因此您可以使用y的阈值替换y来求解x.47的阈值,以使上述段函数均衡:$ y =左beginin {beginin {matrix} 1,x> 1.47 0,x le 1.47结束{matrix} ight。$,此表单和单位跳跃功能非常相似:$ y = left {begin {matrix} 1,z> 0 0.5,z = 0 0,z <0 end end {matrix} ight。$,图像如下:
我们发现,如果您将步骤 - 跳跃函数移动到右侧,则可以更好地拟合上面的散点图!但是步骤跳转功能存在问题,这不是连续的函数。无连续函数并不容易合适,因此理想的情况就像是线性回归的函数。X和Y之间的关系由单调函数描述。BELOW我们介绍了处理功能以解决:
实际上,当我们使用逻辑回归算法时,常用的拟合函数是Sigmid函数。函数表达式为:$ f(z)= frame {1} {1+e^{ - z}} $。图像如下:
Sigmoid函数是S形曲线,就像台阶 - 跳跃功能的温和版本一样。步骤函数是在0到1之间的突然跳跃,而Sigmoid具有平滑的跃迁。
从图形的角度来看,Sigmoid曲线就像弯曲后的线性返回到一条直线一样,值范围(-∞,+∞)的范围在(0,1)之间映射。事件发生
我们经常使用概率来描述事件的可能性。
可能性依次是,这意味着事件实际上已经发生。在推动什么参数条件下,该事件的概率具有最大的概率。
使用数学公式表达上述含义,即:
参数$ heta $对应于类似的函数的值。当$ heta $更改时,$ l(heta | x)$也会更改。当我们获得一定的参数时,like -grant函数的值达到了最大值,表明x事件最有可能发生在此参数下,即此参数是最合理的。
因此,最好的$ heta $是最有可能出现当前观察到的数据的$ heta $。
在双重分类的问题中,y只需0或1,就可以结合y的概率:
$ p(y)= p(y = 1)^{y}*p(y = 0)^{1-y} $
更严格的写作方式需要功能X和参数$ heta $:
$ p(y |(x,heta))= p(y = 1 |(x,heta))^{y}*p(y = 0 |(x,heta))^{1-y} $
如前所述,$ frac {1} {1+e^{ - boldsymbol {x} boldsymbol {heta}}}}}} = p(y = 1)$指示p(y = 1),在上公式中替换:
$ p(y mid x,heta)=左(框架{1} {1+e^{ - x heta}}} ight)^{y} left(1-frac {1} {1+e^{ - x heta}}}}}} ight)^{1-y} $
根据上一节的最佳定义,即最大化样本数据的概率是下一个公式的最大值。
$ mathcal {l}(heta)= prod {i = 1}^{n} pleft(y {y {i} mid x {i},heta ight)= prod {i = 1}^{n} left(frame {1} {1+e^{ - x i heta}}} ight)^{y i}左(1-frac {1} {1+e^{ - x {i} heta}}}} ight)^{1-y {i}} $
这种构造是怎么来的?这真的很容易。
正如我之前说的,$ p(x | heta)$ = $ l(heta | x)$,对于某个观察值$ y_i $,似然函数$ l(heta | y_i)的值等于条件概率概率价值$ p(y_i | heta)$。
此外,我们知道,如果事件A与事件B彼此独立,则两者的概率同时出现为P(a)*p(b)。yn $我们观察到,它们同时发生的概率是。 ight)$
因为一系列$ x_i $和$ y_i $是我们实际观察到的数据(或我们收集的数据集),所以公式中只有$ heta $。因此,问题现在成为L($ heta $)的最大值($ heta $)当您服用$ heta $时。
l($ heta $)是所有观察到的Y的概率的产物。这种情况的最大值更麻烦。通常,我们将首先采用该数字,然后将产品转换为添加。
数字获取后,转换将转换为下一个公式:
$ log Mathcal {l}(heta)= sum {i = 1}^{n}左(左[y {y {i} cdot log左(frame {1} {1+e^{ - x {i} {i}}}}}}}}}}}}} ight) ight]+左[左(1-y {i} ight)左侧cdot log(1-frac {1} {1+e^{ - x_ {i} heta}}}} ight) ight] ight)$
然后找到一种方法来找到上一个公式的最大值。在求解之前,我们需要提及逻辑回归的损失函数。
在机器学习领域,丢失功能的概念始终不可避免。损失函数用于衡量预测值和实际值的偏差程度,即模型预测的误差程度。单词,值越小,模型效应越好。如果您是一个极端的示例,如果预测完全准确,则损耗函数值为0。
在一篇在线文章中,我们使用的损失功能是残留广场和SSE:
$ q = sum {1} {n}左(y {i} -hat {y} {i} ight)^{2} = sum {1}^{n}左(y {i} -x} heta ight)^{2} $
这是具有全局最佳解决方案的凸功能。
如果逻辑回归也使用正方形损失,则是:
$ q = sum {1}^{n} left(y {i} -frac {1} {1+e^{ - x_ {i} ight)^{2} $
不幸的是,这不是凸功能,也不容易优化,并且很容易属于局部最小值,因此逻辑函数将其他形式的函数用作损耗函数,称为日志损失函数。
数字的损失是,在喜欢采用上一节的数量之后,采取了相反的数字:
$ j(heta)= -log Mathcal {l}(heta)= -dum {i = 1}^{n}左[y {y {i} log pulft(y {y {i}) ight)+左(1-y {i} ight)左原木(1-perft(y_ {i}) ight) ight) ight] $
在文章的开头,假设我们有一组样本来建立逻辑回归模型p(y = 1)= f(x)。样本A之一是:
该公司花费了x = 1000元来进行广告取向。用户在看到广告后购买了它。目前,实际y = 1,f(x = 1000)计算出0.6,在这里的偏差为-0.4,在逻辑回归中进行了iTTersection,它没有根据差异的差异计算。它使用数字损失,因此其偏差定义为log0.6(实际上,这也是一个很好的理解,为什么我们计算出P(y = 1),如果计算出的预测值完全等于1,然后log1 = 0,偏差为0)。
样本B:x = 500,y = 0,f(x = 500)= 0.3,偏差为log(1-0.3)= log0.7。
根据日志函数的特征,自变量为[0,1]之间的值,对数为负,并且损失通常由正值表示,因此以相反的数字表示。因此,总损失A和B的属于:-log0.6 -log0.7。
以前,我们解释了梯度下降的梯度下降算法的过度降低减少。在下面,我们使用梯度减少方法来找到损耗函数的最小值(您还可以使用梯度上升算法来找到相似函数的最大值。
头痛的公式推导部分是开始。不要害怕。我们仍然从最简单的地方开始,它非常容易理解。
首先,对于sigmoid函数$ f(z)= frame {1} {1+e^{ - z}} $,f'(x)等于多少?
如果您仍然记得指南数量中的这两个公式,那很容易做(如果您不记得,这都不重要,这将为您列出):
$ begin {array} {l}左(frac {1} {x} ight)^{prime} = -frame {1} {x^{2}}}左(e^{x} ight)^{prime} = e^{x}结束{array} $
根据前两个公式,得出:
$ f^{prime}(x)=左(frame {1} {1+e^{ - x}}} ight)^{prime} = -frac {left(e^{ - x} ight)^{prime}} {left(1+e^{ - x} ight)^{2}} = frac {e^{ - x}}} {left(1+e^{ - x} ight)^{2}} $
它还没有到这里,我们发现$ 1-f(x)= frax {e^{ - x}}} {1+e^{ - x} $,$ f^{prime}(x)$恰好可以是分为$ frac {e^{ - x}} {1+e^{ - x}} cdot frac {1} {1+e^{ - x}} $,这意味着:
$ f^{prime}(x)= f(x)cdot(1-f(x))$
当然,现在我们的X已知。我们知道的最后一件事是$ heta $,所以后者是$ heta $的指导,请记住:
$ frac {1} {1+e^{ - x {i} heta}}} = fleft(x {i} heta ight)$
类型$ frame {1} {1+e^{ - x {i} heta}}} = fleft(x {i} heta ight)$替代以前的损失功能:
美元 ight) ight)+左(1-y {i} ight)左原木(1-五(x {i} heta) ight) ight) ight] = -dum {i = 1}^{n} gleft(heta {i},x {i},y_ {i} ight)$
为了简单起见,不要看数字,看$ g(heta,x,y)$。我们将在其中挑选$ f(x_i heta)$,并单独查看$ heta_j $ in $ heta $ polumess中的$ heta_j $。什么是部分指导。
根据上述指导公式,有:
$ frac {partial fleft(x {i} heta ight)} {partial heta {j}} = fleft(x {i} heta ight)cdotleft(1-fleft(x {i} heta ight) ight)CDOT X_ {I J} $
$ y = begin {bumatrix} y_1 y_2点ym end {bumatrix},x = begin {bmatrix} 1&x {11}}&x {1n} 1&x&x&x {21}点&点&dots&dots&dots&dots&dots&dots&dots&dots&dots&dots&dots&dots&dots&dots&dots&dots&dots&dots&dots&dots1&x {m1 {m1}}&dots&x__{mn} end {bumatrix},heta = begin {bmatrix} heta_0 heta_1 dots heta_n end end {bumatrix} $
请注意,这个$ xi $实际上是指i -i示例的特征向量,即$左(1,x {i 1},ldots,x {i p} ight)$,只有$ x {ij} $将乘以$ heta_j $,因此在指导指导之后,只有$ x {ij} $在指导之后留下。
了解我之前提到的内容,以下简化很容易:
$ begin {Aligned} frac {partial gleft(heta {i},x {i},y {i} ight)} {partial heta {j}}&= y {i} frac {1} {fleft(x {i} heta ight)} frac {partial fleft(x {i} heta ight)} {partial heta {j}} - 左(1-y {i} ight)frac {1} {1-fleft(x {i} heta ight)} frac {partial fleft(x {i} heta ith)} {partial heta {j}}&= left(frame {y {i}}} {fft(x {i} heta ight)} -frac {1-y {i}} {1-fleft(x {i} heta ight)}} ight)cdot frac {partial fleft(x {i} heta ith)} {partial heta {j}}&= left(frame {y {i}}} {fft(x {i} heta ight)} -frac {1-y {i}} {1-fleft(x {i} heta ight)}} ight)cdot fleft(x {i} heta ight)cdotleft(1-fleft(x {i} heta ight) ight)cdot x {i j}&= left [y {i} left(1-fft(x {i} heta) ight) ight)-Left(1 -y {i} ight)fleft(x {i} heta ight) ight] cdot x {i j}&= left(y {i} -fleft(x {i} heta) ight) ight)CDOT X_ {I J}结束{Aligned} $
加上总数:
$ frac {partial j(heta)} {partial heta {j}} = -dum {i = 1}^{n}左(y {y {i} -fleft(x x {x {x {i} heta heta heta heta heta heta ight) ight)cdot x {i j} = sum {i = 1}^{n} left(frame {1} {1+e^{ - x {i} ight)CDOT X_ {I J} $
通过部分指导,有一个梯度G,即由部分引导函数组成的向量。
本文重现了自我 - 使用Jane Coco -zhihu.com文章,以解释逻辑回归-Zhihu.com。