看了不少有关逻辑回归的文章,感觉讲的对新手不是很友好。
所以冒昧写一篇,权当抛砖引玉。本人精力能力有限,个人理解可能与正确情况存在偏差,欢迎大家指正。
在写具体的逻辑回归之前,先想说下分类的基本思路与步骤
1.分类的基本思路与步骤
- 我们需要一个基本模型。给这个基本模型输入一系列样本的数据,依据这个模型的输出来判断这个样本属于哪一类。
- 假定右边的那个y=x就是我们的基本模型,我们在分类的时候,可以规定当输出值,也就是y的值,大于0时(y轴右半边),可以将这个输入对应的样本分为正类;当y小于0时,将它分为负类
- 对待不同的问题,这个模型需要不同的优化调整,以达到分类相应问题的能力。
比如一个样本有两个属性值,分别为1,-1。权重分别为2,1。样本为负类。我们计算的时候,发现21-11=1,在y轴右边,应该分类为正类。是错误分类,所以我们可以调整权重为1,2或者改变模型为y=x-2。 - 为了优化这个模型,我们需要寻找一个优化函数,就是代价函数,需要依据这个函数,来优化我们的模型。
比如我们需要让属于一个类的点之间的距离小等等
在对模型进行优化调整的时候,一般是从两个方面入手。
- 调整函数参数,达到调整函数模型的目的
- 调整样本属性数据的权重,达到目的
绝大多数情况下,我们是选择后者来进行调整模型
2.逻辑回归
逻辑回归中,它也确定了一个基本函数模型,叫做逻辑回归模型。表达式如下
它的函数图像是这样的:
对于逻辑回归的介绍,可以从两个角度来思考。
从对数几率的角度理解,下回再说
1、从概率的角度来考虑
1)当我们进行分类问题的时候,如果有一只猫,我们需要去判断它的性别。我们用一个函数去检测它,发现计算出来它属于公猫的概率大于0.5。我们是不是有一定理由去相信它是一直公猫。
现在,我们回头看下逻辑回归函数,我们发现这个函数的取值在0到1之间,符合概率中的0到1取值。
当有个样本需要我们进行分类的时候,只要将这个样本的属性,带入到这个函数中,计算出来的结果,大于0.5,它就属于A类,小于0.5,它就属于B类。
从这个角度理解,这个函数就是一个简单的决策函数,一个输出概率的函数,我们依据输出的概率进行分类。
2)那接下来,我们需要确定上述逻辑回归函数的输入。
我们将输入表示成样本属性与权重的乘积和。
上述逻辑回归函数的输入表示为z,若我们将样本的属性值表示为x1,x2。则z=w1x1+w2x2+b。
大致来看,模型基本算搭建好了。如果我们有样本,将样本的属性值,通过权重作用后,输入到逻辑回归函数中,然后依据逻辑回归函数的输出值,进行分类,最后与样本的实际类别进行比较,再通过调整权重或者模型,直到得到比较满意的结果
这样看,逻辑回归函数,只是计算属性的输出值,根据输出值来判断类型而已。
3)但,仿佛没有这么简单。一群蛋疼的人,又开始捣鼓起来。
我们不根据输出值与0.5的关系来进行判断,那样大材小用了。输出值明明可以当作概率的。
比如
样本 | 属性值1 | 属性值2 | 实际类别 |
A | x1=5 | x2=9 | 正/y=1 |
B | x1=3 | x2=2 | 负/y=0 |
假如我们规定,属于正类的概率表示为p,p为上面的g(z),z=w1x1+w2x2+b。
则负类的概率为1-p,1-p为上面的1-g(z),z=w1y1+w2y2+b。
注意,这里有个逻辑。我们写A样本概率的时候,如果知道它是正类,它是不是利用g(z)求解出的结果是最大的。若A是负类,那我们用g(z)求解出来的数值也许为0.3,也就是说,如果我们用1-g(z)这个来求解A的负类概率的话,是为0.7
也就是说,如果所有样本都能正确分类,正类的用p计算,负类的用1-p计算,这样各自都可以得到最大的结果。那我们可以构造一个函数,它表示每个样本被分类后的概率乘积,我们的目的,是为了让这个函数最大,也就达到样本被正确分类。
所以我们需要一个表达式来表达,每一个样本被分类的概率
我们来看下这个表达式的巧妙之处。
当一个样本A被分类成正类别的时候,y=1,P=p;若A真为正类别,那这个P是最大的。
当一个样本B被分类成负类别的时候,y=0,P=1-p;若B真为负类别,那这个P也是最大的。若有n个样本,如果都被正确分类,各自最大,则他们的概率乘积也是最大的。也就是求下面函数的最大值
接下来,就是对这个进行运算,取对数,将乘积变成相加。为了计算这个的最大值,可以加一个负号,变为计算它的最小值。
直接搬运其他人内容,下图中,h(x)为上式的p,L为上式的F。
总结下,将逻辑回归的输出值当作概率,若样本被正确分类,利用正类利用p,负类利用1-p所计算的概率都是最大的,所以若所有样本都被正确分类,则每个样本概率的乘积也是最大的。可以利用数学方法,加负号,将求解最大值运算转换为求解最小值运算。