机器学习 学习记录(二)

本篇博客将接着《机器学习 学习记录》继续阐述机器学习的相关知识

2.Logistic Regression

在上一篇博客中,我们了解了机器学习里最简单的模型Linear Regression,这个模型用于回归问题,而当我们需要处理一个分类问题的时候,想一想线性回归的模型还能不能用?

请看下面的两张图

图1
这里写图片描述

图2
这里写图片描述
对于图1的情况来说,如果对该组数据做Regression理论上是可以得到一个比较好的结果。图1中绿色直线可以比较好地将两类数据分开。而对于图2来说,就很难通过Regression来确定一条直线将两类数据分开。所以我们需要一种方法来处理这种分类问题。
下面介绍两种方法:

- 01.Generative:
在引出这种方法之前,我们先来回顾一下要用到的数学知识——贝叶斯公式:

P(Ai|B)=P(B|Ai)P(Ai)ni=1P(B|Ai)P(Ai)

直白地讲就是,取出来一个 B B来自 Ai 的概率 等于 Ai 的概率 乘上 B Ai情况下的条件概率 与 取出来一个 B 的概率(所有 A事件概率与 B A发生条件下能发生的概率积 之和) 之比

下面我们以分两类的情况阐述Generative方法:

前几天我又做了一次调研(又是假装做了),调研的内容是男生与女生的身高和体重。得到以下数据:
男生( C1 ):

Height:x {175,176,177,178,179}
Weight:y {60,61,62,63,64}

女生( C2 ):

Height:x {160,161,162,163,164,165}
Weight:y {55,56,57,58,59,60}

怎么能把女生编得这么胖!!! 你管我呢?

现在,我想让机器告诉我身高180,体重65的到底是女生还是男生。

当只有两类的时候,贝叶斯公式可以这么写:

P(C1|x)=P(x|C1)P(C1)P(x|C1)P(C1)+P(x|C2)P(C2)

P(x)=P(x|C1)P(C1)+P(x|C2)P(C2)

我们现在想衡量一下 P(x) 的大小(就是有多大的概率能取出来一个样本里面的数据),根据我们的取样数据, P(C1)=511 P(C2)=611 ,那么为了得到 P(x) 我们还缺两个东西 P(x|C1)P(x|C2) 如果这两个知道了 P(C1|x) 也就不难求了。
不知道你有没有发现,到这里我们已经做完了机器学习的第一个步骤,就是找到了一个Function Set,这个函数集合就是我们所说的贝叶斯公式。不仅如此,我们已经做了机器学习第二步骤的一小半,就是我们找到了一个可以衡量模型好坏的函数 P(x) ,而我们要做的就是让机器找到一个最佳函数,使得我们抽样数据概率之积最大(我们假定每次抽样都是独立进行的),直白来说就是使我们得到这组抽样数据的概率最大。所以我们定义下面的函数:
L=i=1nP(xi)
(注意:这里的 xi = [HeightWeight] 是个矩阵)

那么怎么去衡量 P(xi) 呢?

我们假定人的身高体重服从高斯分布,高斯分布长这个样子:

fμ,Σ(x)=1(2π)D21|Σ|1/2e12(xμ)TΣ1(xμ)

假设男生的身高体重服从 N(μ1,Σ21) 的高斯分布,女生的服从 N(μ2,Σ22) (这里的上标表示幂次)
于是这组数据的概率就可以用下面的式子来衡量:
L(μ1,Σ1,μ2,Σ2)=fμ1,Σ1(x1)fμ1,Σ1(x2)fμ2,Σ2(xn)

我们可以用最大似然估计来得到上面的式子最大值点。
μ1=1N1N1i=1xi (男生数据)
μ2=1N2N2i=1xi (女生数据)
Σ1=1N1N1i=1(xiμ1)(xiμ1)T (男生数据)
Σ2=1N2N2i=1(xiμ2)(xiμ2)T (女生数据)
但是我们发现,这种方法参数有点多,但转念一想,女生的身高体重分布好像跟男生也没差多少,于是我们令 Σ1=Σ2=Σ
其中 Σ=N1N1+N2Σ1+N2N1+N2Σ2 ,于是
L(μ1,μ2,Σ)=fμ1,Σ(x1)fμ1,Σ(x2)fμ2,Σ(xn)

从而:

P(C1|x)=P(x|C1)P(C1)P(x|C1)P(C1)+P(x|C2)P(C2)=fμ1,Σ(x)P(C1)fμ1,Σ(x)P(C1)+fμ2,Σ(x)P(C2)

求出 μ1 , μ2 , Σ 之后带入上式求出 P(C1|x) ,如果Output>0.5,则所测试的数据是男生的,相反则是女生的。

- 2.Logistic Regression

终于我们将进入Logistic Regression的探讨

上面我们提到对于两类的分类问题,我们的Function Set选择如下:

P(C1|x)=P(x|C1)P(C1)P(x|C1)P(C1)+P(x|C2)P(C2)

在上式情况下我们做如下恒等变形:
P(C1|x)=11+P(x|C2)P(C2)P(x|C1)P(C1)

lnP(x|C1)P(C1)P(x|C2)P(C2)=z
上式可以写作:
P(C1|x)=11+ez=σ(z)

其中 σ(z)=11+ez 称为Sigmoid函数,这是我们将来要说的激活函数中的一种。
下面我们深入去讨论一下这个函数

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
图片引用自李宏毅(台湾大学)《机器学习》

从上面的推导过程我们可以看出来其实这里的 z 可以写成以下形式:

z=wx+b

(注意:这里的 wx 应该是向量,但 z,b 都是数值)

于是,

P(C1|x)=σ(wx+b)

于是这里的函数就可以表示成如下形式:

这里写图片描述

到这里,我们又做完了机器学习的第一步,我们已经找到了一个函数集合。下面,就是寻找一种方法,使得机器可以按照这种方法找到一个最佳的函数。我们采用的方法是这样的:
还是采用我们在讨论Generative方法时所假象的男女身高体重数据,将男生数据 x1,x2,,x5 划归为 C1 ,女生数据 x6,x7,,x11 划归到 C2 ,于是我们的函数便写成如下形式:

L(w,b)=fw,b(x1)fw,b(x2)fw,b(x5)[1fw,b(x6)][1fw,b(x7)][1fw,b(x11)]

我们所要求的就是一堆参数 w,b 使得 L(w,b) 取得最大值。为了求得这一参数,我们做如下等价变形:
lnL(w,b)=lnf(x1)(11)ln(1f(x1))0×lnf(x6)(10)(1lnf(x6))

我们设定目标值
y^i={1 xiC10 xiC2

于是上面的式子就可以写成如下形式:
lnL(w,b)=i=1n{y^ilnfw,b(xi)+(1y^i)ln[1fw,b(xi)]}

这个式子其实是两个伯努利分布的交叉熵,那么如何去求解这个交叉熵的最小值呢?当然是用Gradient Descent的方法啦。求出 lnLwi,lnLbi 然后继续更新参数。
上面所说的Logistic Regression都是针对两种类别的情况,那如果是多种类别怎么办呢?
看下面两张图,这里不展开聊了

这里写图片描述
这里写图片描述

到这里Logistic Regression我们就已经介绍完了。当然,这种方法也有自己的局限性。当数据的分布不那么规整的时候,一条直线就很难将两组数据分开,所以有的时候需要坐标变换,在变换之后才能找到一条直线将两类数据分开。之后我们聊到Deep Learning的时候会通过另外一种方法来避开坐标变换。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值