52ML系列(1)--Logistic Regression逻辑
现在前面
希望对这段时间的机器学习做一个温故与总结,于是有了写52ML系列博客的想法
逻辑回归解决什么问题
逻辑回归是一个分类模型,输出样本属于某个类别的概率,但个人认为它也是一个回归问题,因为这个概率需要一个基于回归产生的分数。
什么意思呢?比如现在要做一个模型:根据毛发、耳朵长短、抓不抓老鼠,可不可爱等信息判断一个动物是不是猫,这看上去是一个二分类问题,要么是要么不是,输出为:1 or -1。但是我们换一个问法,判断这个动物是猫的概率?那么输出应该是一个[0,1]之间的值。这就跟我们一般的二分类问题有些不一样了,学术上称作软二分类问题('soft' binary classification),这种问题交给逻辑回归来处理就对了。
逻辑回归模型思路
那么逻辑回归是如何解决这种问题呢?思路是我们可以利用毛发、耳朵长短、抓不抓老鼠,可不可爱等特征算出某种类似得分的东西,得分越高越有可能是猫对不对?那么接下来,再将得分按某种操作转化为百分比,就得到了概率。
那么问题就变成了两部分:算得分,求概率。
算得分,最直接的想法就是利用线性回归模型
就是我们的得分。当然是待求的模型参数,我们先放在那里,下面考虑第二部分。
如何将得分转化为概率?注意到得分的取值可能是,而结果是之间的概率值,这是一种映射关系,那么怎么找到这种映射关系呢?不用找了,前辈们告诉你sigmoid函数天然的完成了这种映射,函数长这样:
函数图形长图1这样:
图1
sigmoid函数很好的将限制映射在之间,得分越高,概率越高;相反得分越低,概率越低。
ok,现在我们有了逻辑回归的基本模型思路了,下面开始建立模型。
模型建立
考虑用平方误差做代价函数
但是这个函数并不是凸函数,无法用梯度下降找到最优解。
最大似然
换一种考虑方式:
考虑数据集,想象上帝创造了这么一个函数提供一种概率分布能够产生这个数据集:
那么这个数据集的产生概率可以表示为:
如果我们找到了一个跟很像的函数,那么也就代表我们求出了逻辑回归的模型。这个函数称作似然函数 (likelihood)。
如何找到函数呢?
如果,那么
其中
而是上帝创造的,概率通常是很大,因此我们只要找到能让最大的那个就可以了,这就是所谓的最大似然。
用数学的方法表示就是这样:
tips:
根据sigmoid函数的特殊性:,因此当时,。
接下来将放置已久的带入:
采用变换将连乘改成连加,并添加负号转化为求最小值问题,再引入一个求平均的操作:
带入sigmoid函数:
ok, 这是一个凸函数,称作交叉熵误差函数。
下面的操作不说也知道,梯度下降撸起吧。。。
PS
这个ps挺大的。。。因为内容还有点多
上面的模型用的标签是,那么对于这种情况呢?
只需将概率模型修改下:
合并后得到:
依然用极大似然:
依然取对数将连乘转连加,并添加符号转化为求最小值,再引入平均:
带入sigmoid函数之后依旧梯度下降开撸吧。。。
参考引用:
- 台湾大学林轩田《机器学习基石》课程
- 《统计学习方法》——李航
- 七月在线课程