赞
踩
前到现在为止,我们通过大约1周的时间初步对机器学习是怎么一回事算是有一些基本的理解了,从最基本的线性回归入手,讨论了如何在拿到一堆数据时,先进行数据预处理(暂时未详细阐述,会在以后某个时间段详细论述),然后再假设模型(model)为线性模型,再带入数据通过直接求解法和梯度下降法求解模型的各个特征的权重参数,最后用脊回归和套索回归优化了普通最小二乘法回归,对L1和L2正则化有了进一步地认识。我们的整体思路是从工程应用角度直接切入主题,务实,代码模拟实践。在这些基础上,接下来将讨论一些分类算法,其中最基本的逻辑回归是应用最广泛,也是最重要的算法之一。
01 逻辑回归是回归还是分类?
逻辑回归从字面上看是一个回归问题,很容易和回归分析联系到一起。这是字面意思给人的错觉,其实它不是回归问题!它是最典型的分类问题,经典的二分类,比如检查邮件是否是垃圾邮件,检查一个零件是否是合格件,判断一个西瓜是否成熟等等,这些日常生活中经常用于判断是非黑白的问题,都能用到这个经典的二分类之逻辑回归。
通常在我们拿到一个分类任务的时候,还是坚持那项基本原则:能用简单的分类模型就能得到一个很好的预测结果的,就坚决不用复杂的模型来做分类,这样简单的模型,不仅有利于对我们的模型求解,更有利于我们解释这个模型。
02 逻辑回归和回归没有一丁点关系?
逻辑回归和之前阐述的线性回归等回归任务还是有一定关系的,这种关系正是通过一种神奇的映射曲线做到的,比如它将做回归分析的模型的因变量的取值映射为概率值,我们都知道概率值的取值范围为0~1,所以通过设定一个0~1的阈值,小于这个阈值的就是A类,其他的都是非A类,这不就是二分类吗。
03 那条神奇的线
逻辑回归最神奇的那个映射函数长什么样子呢? 这个前人都给我们想好了,直接拿过来用就行,这就是站在巨人的肩上啊,感谢他们。
在Jupyter Notebook中绘制了这个函数: f(x) = 1/(1+np.exp(-x)),简称为Sigmoid函数,它的自变量取值范围为负无穷到正无穷,值域为0~1,其中f(0) = 0.5 。
通常在做二分类时,设定一个阈值 gamma,如果小于gamma,设为 1 类,否则为 0类,如下图所示:设定阈值为0.3,则小于0.3的都为 1 类,大于0.3的都为 0 类。
04 从线性回归模型到Sigmoid映射后的模型
线性回归模型的模型如下:
逻辑回归的模型定义(需要借助Sigmoid函数):
将上述线性回归的模型带入到g(x)中,得到最终的逻辑回归的模型:
为什么习惯在某个模型中都用h呢,因为hypothesis的首字符是h,我猜测是这样吧。
这就是从线性回归模型映射到最终的逻辑回归模型的预测表达式,我们的最终任务是二分类吧,假定上个表达式是等于类 1 的概率,自然等于类 0 的概率等于1减去等于类 1 的概率,如下所述:
这里有个小的trick,就是将上面两个式子整合为下面一个公式:
这就是终极的逻辑回归的模型了,一个公式搞定了两种情况。
05 逻辑回归模型的梯度下降推导
这部分与线性回归模型梯度下降,带入已有数据样本,然后求解模型的权重参数的解决思路是一致的,请参考推送消息: 最小二乘法原理(后):梯度下降求权重参数。仍然是先求出由所有样本组成的似然函数,转化为对数似然,转化为梯度下降,根据梯度下降的方向更新迭代权重参数,选取代价函数本次与上次的差小于某个阈值的迭代思路求解。
其中,似然函数为,m表示样本个数
对数似然如下:
然后,利用对数极大似然估计,即求上式的极大值,引入因子 -1/m,转化为求下式的极小值:
对上式求偏导后的结果如下,在此不一 一详细写出推导过程了,但是说明下式的参数含义,其中theta_j表示第i个样本的第j个特征的权重参数,注意如果有100个特征,自然地就有100个权重参数,等号左边是对theta_j求偏导的,因此这个式子相当于对某个样本的所有特征参数都适应于下面的公式。
06 逻辑回归的参数梯度下降的python实现
请见明天的推送,谢谢您的阅读!
让我们看一下远边的大海,和巍峨的高山,放松一下吧!
欢迎关注算《算法channel》
交流思想,注重分析,看重过程,包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战,英语沙龙,定期邀请专家发推。期待您的到来!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。