Logistic Regression (Logistic 回归) 的通俗解释
最近开始学习机器学习(怎么感觉这句话怪怪的),了解了Logistic Regression 的原理。我个人认为,Logistic Regression 是机器学习最基础的模型,它诠释了机器学习的基本原理
先来一张经典的图
Logistic Regression 的目的
我们先忘了上面那张图,来看一张干净简单一点的:(纯手画有点丑)
这个过程很简单,便是根据已有的参数给出一个答案
我们先来看一下这里面的参数:
- x1 和 x2 :输入的参数
- w1 和 w2 :权重(先不用管)
- b :biase(也不用管)
我们再来更形象地描述一下:
比方说你有一个房子,有两个属性:房屋面积 x1 ,卧室数量 x2 (大佬给出的例子)
你现在要通过上图的方法,给出你对这个房子的判断:这是不是个好房子
虽然这个例子主观性过强,但我们假设只要 x1 x2 一定,这个房子就是好房子
总结一下:
输入 x1 x2
输出 一个判断 y
Forward Propagation 正向传播
我们现在讨论的东西,是关于如何给出判断的,图中已经给出了,相信很容易看懂。
我再写一遍:z = w1*x1 + w2*x2 + by = σ(z)
但他们都是什么意思呢?
x1 x2 我们已经知道了,但是w1 w2表示了什么呢?
学过OI的可能知道w是Weight的缩写,译为权重。你可以想象,如果房屋面积 x1 对我很重要,那我就让 x1 乘上一个很大很大的数 w1,那么它就会对最终的值产生更大的影响
哪b呢?b是biase的缩写,译作偏差。很容易理解,如果你的预测总是差了0.00001,那么加上个0.00001不久一劳永逸了么
总结一下:
w : 控制对应 x 对结果的影响
b : 微调结果
σ(z)是啥呢?
来张sigmoid函数的靓照
有点感觉了没有?它把 y 的值切成了两部分 0 ~ 0.5 和 0.5 ~ 1, 分别对应着 z 中 <0 和>0 的范围。
所以σ(z)的作用:把 z 的值转换为判断
σ(z)>0.5 时 判断为真(当然假也行)
σ(z)<0.5 时 判断为假(同上)
Backward Propagation 反向传播
刚才我们解释了怎么用正确的 w 和 b 来判断,但是它们是怎么来的?
……靠蒙的你信吗……
一开始,我们的 w 和 b 都取的是随机数,当然不能给出完全正确的答案。所以呢,我们需要微调 w 和 b ,让最终结果向真正的 y 靠拢。(注意这个图中 y 成了 a ,因为不是最终答案)
下面将是本文中最吓人的部分请洗把脸再看(实际上你不需要过多的了解)
我们既然要让结果向真正的 y 靠拢,就需要一个函数来判断它的偏差,这里就轮到 Loss 函数登场了。(图中最后一个方框的 L )由于方法众多,公式冗长,你可以将它看作方差(y-a)^2
知道了目标,具体的靠拢方法就要请到梯度下降法了(当然还有更多[转载自博客])
是不是挺像下山?我们的目标是 Loss 最小(J 函数是全局的 Loss),求出最小,即使是局部最小,也对我们有极大帮助。
等一下,我们是不是只求出了 Loss 最小,但是 w 和 b 还不知道呢。这时候就需要导数了。当然我们可以不知道,我觉得就是一个神奇的规律,建立在 Loss 和 w 、b 之间。这样,运用那种我们不太熟悉的神奇规律,就能优化 w 和 b 的值了。
现在,我们已经万事俱备,只欠东风了。现在机器已经知道了学习方法,就是时候给它灌教辅资料了。
Training 训练
这里不必多说,机器学习总是建立在大数据之上的,没有大数据的支持,机器学习的存在就没有意义。
现在假设我们拥有很多很多组房屋的数据 x1, x2,和你对它们的看法 y={0, 1}。
你便可以将它们灌给机器,执行一次正向传播,得出偏差之后,再进行一次反向传播,优化 w 和 b。
Test 测试
当你把它们都灌给机器后,你已经得到了近似完美的 w 和 b,现在,你只要输入未知的的 x,
你就能得到近似正确的 y。
好啦,写到这里差不多就这样了,原理从中可以看出,但具体的推导和向量化优化以及跟优化的**函数,还需要进一步的学习。
如果你觉得我文中有不妥或错误,欢迎跟我交流
图形上的意义
如图,圈点代表着好房子,叉点代表着不好的房子
我们求出的,实际是好房子与不好房子的分界线(蓝线)
我们这里解决的是一个二分分类的问题,实际上也是机器学习最基础的也是最早的问题。当然也比较有意思。