大白话5分钟带你走进人工智能-第二十节逻辑回归和Softmax多分类问题(5)
大白话5分钟带你走进人工智能-第二十节逻辑回归和Softmax多分类问题(5)
上一节中,我们讲解了逻辑回归的优化,本节的话我们讲解逻辑回归做多分类问题以及传统的多分类问题,我们用什么手段解决。
先看一个场景,假如我们现在的数据集有3个类别,我们想通过逻辑回归建模给它区分出来。但我们知道逻辑回归本质上是区分二分类的算法模型。难道没有解决办法了吗?办法还是有的,既然想分出3类,我们姑且称这3个类别号为0,1,2。想通过逻辑回归做二分类的话,那么我们就分别判断每一条样本数据属不属于0号类别,属不属于1号类别,属不属于2号类别去判断,这样相当于建立3个逻辑回归的模型,分别训练,既照顾了逻辑回归二分类的本质,也照顾了多分类的需求。假如我们训练出来的3个模型, 第一个模型判断是不是1号类别的概率是0.8 第二个模型判断是不是2号类别的概率是0.1 第三个模型判断是不是3号类别的概率是 0.6 ,综合来看0.8>0.6>0.1,所以我们对这条样本判别为1号类别。剩下的所有样本数据亦如此。这种用逻辑回归解决问题的方式就是OVR( ovr one vs rest )。这里问个问题,这三个模型判断出来各自的概率相加结果是1 吗?肯定不是。因为我们是对每个模型单独训练出来的。
我们先总结一下OVR思路就是:1,修改数据的lable。2,然后训练N个逻辑回归模型。3,根据输出结果概率输出。
这里需要注意一个问题就是样本不均衡的问题。逻辑回归就怕样本不均衡,当负例比正例或者正列比负例多很多的时候,模型判断会不准确,逻辑回归,最喜欢的是1:1的正负例。 因为假如有一个训练集只有一条正例,其它的全都是负例,那么哪怕把所有的条目都判断为负例,正确率还是99%。因为在训练过程中,我们是找了一组w带来总的预测正确率最高,但这样情况下当样本不均衡的时候就会对正例特别的不公平,因为它只追求总的预测正确率最高,不管是正例还是负例,都会对少的那一部分很不公平,它会着重的想把多的预测准确了,获得更大的收益,对它来说这个w是更好的w。所以当样本不均衡的时候不一定会不好,但是很有可能的模型会不稳定。
怎么解决样本不均衡的问题?
通常的办法是对多的进行降采样。 比如说只有30%的正例,有70%是负例,第一对70%的负例里面进行一个降采样,不要全部的负例了。第二,创造一些新的正例样本,属性随机采样,就是说把正例样本的每个属性对应的值随机采取点出来,组合出一个新的正例样本来,这样凡是涉及到人工创建的训练集通常不太好,但是它是没办法的办法,已经不均衡了,没有更多的训练集了。按理说用降采样,但是发现不光负例多,正例还特别少,才几十条正例这会这已经很难了,只要样本少,谁也帮不了,神仙也救不了,唯一能自救的方法就是重采样一下。适当的生成出一些新的训练集,但生成的东西并不一定能代表客观规律,这是没办法的事儿,确实少,也只能试一试。所以可以通过对少的样本进行重采样,通过对多的样本进行降采样,来一定程度上缓和我们样本不均衡的问题。除此之外,使用决策树的方法。那么它对于样本不均衡,要比逻辑回归要坚固的多,鲁棒性要好得多,所以换句话说,需要选择其它的算法来解决这个问题。
除此之外,我们引入一种叫softmax的方式,它比OVR对样本不均衡的问题要稍好一些,而且它的分类效果更好。它其实就是一个跟逻辑回归类似的一个专门解决多分类的模型,它有自己的判别函数,也有自己的损失函数,是逻辑回归的一种拓展,逻辑回归是softmax的一种特例。
如果现在只让用一个模型去判断一个5分类任务,这个模型要输出什么?至少得输出5个概率出来,才能判断。只输出两个概率,我怎么判断剩下3个?输出形式一定要出现5个概率。于是它特别简单,它就搞出了5组w,其实就有点神经网络的感觉了。神经网络我们还没讲,不过没关系,你先有个大体的概念。以后我们再会对神经网络里面softmax函数详细解释,因为它很重要。几乎可以说是任何多分类问题最后的一步。我们这里就直到softmax就是一个单层的神经网络就可以了,以下关于神经网络解释softmax的问题听不懂没关系,后面在神经网络里面会详细说的。咱们说五分类,5组模型,W1,W2,W3,W4,W5,现在一个x扔进来之后,要同时交给每组W算出一个结果,得到了W1^Tx,W2^Tx,W3^Tx,W4^Tx,W5^Tx,接下来把得到的每一个结果概率化输出,为:
,,,,
在 softmax回归中,我们解决的是多分类问题(相对于 logistic 回归解决的二分类问题),类标y可以取k个不同的值(而不是两个)因此,对于训练集,我们有,(注意此处的类别下标从 1 开始,而不是 0)。对于给定的测试输入x,我们想用假设函数针对每一个类别j估算出概率值p(y=j|x),也就是说,我们想估计x的每一种分类结果出现的概率。
因此,我们的假设函数将要输出一个k维(k个类别)的向量来表示这k个估计的概率值。具体地说,我们的假设函数h(θ)形式如下:
其中是模型的参数,这一项对概率分布进行归一化,使得所有概率之和为 1。实际上就是把一个x(i)丢在一个hθ里面要输出一组概率,比如这个例子里面要输出5个概率,每个概率实际上它的判别函数都是它们共用同一个分母,只不过分子部分不同,第一个概率就是第一组w算出来分数扔到e的上面得出来的结果,每一个都是每一组w对于同一个x(i)的运算结果,分母又是所有分子的加和,因此它们总体的加和一定是等于1的。这个就是softmax的判别函数。
为了方便起见,我们同样使用符号θ来表示全部的模型参数,将θ用一个k*n的矩阵来表示,k个类别,n个属性值,每一类这这些属性上面都对应着一组参数。该矩阵是将每组按照行罗列起来得到的。如下所示:
有了这一组θ,我们的h(x)就可以使用了,那怎么得到最好的一组θ?还是通过最大似然来推导损失函数。我们先来看下示性函数的表示就是1,其取值规则为:1{值为真的表达式}=1,1{值为假的表达式} =0。举例来说,表达式:1{2+2=4}的值为1 ,因为2+2=4是正确的值为真,所以1{2+2=4}的值为1。同理, 1{2+2=5}的值为 0。
回顾下逻辑回归的损失函数:
这个函数中,虽然每一项加和的部分是两部分yi*log h(x)+(1-yi)*log (1-h(x))组成,但是因为yi不是0就是1,前面在后面就没了,后面在前面就没了,所以对每一条样本来说就只能存活下来一项,这个是针对二分类来说的。把其写成示性函数的表达就是:
解释下:比如一条样本标签真实值yi是0,根据我们上面的描述yi*log h(x)+(1-yi)*log (1-h(x))这里面只能存在一项就是后面一项。而对于示性函数来说这个里面j是累加到1,两个取值,j先为0的时候,yi=j=0为真。1{值为真的表达式}=1,所以当j为0的时候值保留下来,当j为1的时候yi=j=1≠0,1{值为假的表达式} =0,所以当j为1的时候值没有累加。因此真正每一条样本计算的就是其对应真实y的时候那一部分概率值。
而对于多分类来说我们需要像推导逻辑回归损失函数一样,把每一条样本预测正确的概率连乘,使得似然最大。那多分类的每一条样本预测正确的概率就是:
在Softmax回归中将x分类为类别j的概率为:
举例来说,假如是3分类,这个预测就输出3个概率,也就是3个数,对每一条样本来说,其中第一个概率代表是我预测它最后类别是1的概率,第二个是代表我预测它类别为2的概率,第三个就是我预测它类别为3的概率,它实际的类别假如为1的话,我预测对了的概率是第一个数,第二个数还是第三个数?应该是第一个数。就从里边挑出应该预测正确的概率放在这,这就是它正确的概率,因为对每一个样本来说yi只能取一个值,所以里面的加和也只会存活下来一项。每一条样本yi等于多少其对应的hθ(x)的值就留下来。比如第一个样本真实分类是0,那就保留这一部分,第二个真实样本类别是1 ,那就保留这一部分,第三个真实样本分类是2,那就保留这一部分,损失函数只取决于预测对的那一项的概率,其它的概率其实损失函数角度是不关心的。所以它尽量,想让训练集上全部预测的总正确率最大,就需要把每条数据被预测正确的概率给连乘起来,求最大似然,加个log,连乘变连加,然后加个负号就得到这个损失函数了。最后推导出来的softmax损失函数如下:
可以看到,Softmax代价函数与logistic 代价函数在形式上非常类似,只是Softmax损失函数中对类标记的k个可能值进行了累加。
对于J(θ)的最小化问题,当前还没有闭式解法。因此,我们使用迭代的优化算法(例如梯度下降法,或 L-BFGS)。经过求导,我们得到梯度公式如下:
有了上面的偏导数公式以后,我们就可以将它代入到梯度下降法等算法中,来最小化J(θ)。例如,在梯度下降法的标准实现中,每一次迭代需要进行如下更新:
得到一组θ使得模型表现最好。此时得到θ就是softmax训练出来的结果。所以不管它是什么损失函数,你总可以交给sgd或者l-bfgs进行最小化,得到一组θ使得模型表现最好。
对于softmax,你它的本质是把好几个逻辑回归塞到一起去了,但是它判别函数又变了变,原来是1/{1+exp(-z)},现在变成了e的z求和,有多少个z就求和多少次,加起来之后当分母,然后分子为对应部分预测的概率,这样它们输出的每个概率就都进行了归一化。
softmax有一个有趣的特点:softmax的形式是有几个分类,就有几组w向量,比如三类,最终训练出来的参数实际上就是θ1,θ2,θ3,原来逻辑回归是一组θ,现在是三组θ。你把这三组θ都减去一个相同的向量φ,比如φ全是1。 假如这θ长度为五,φ是五个1也好,五个2也好,12345也好,只要把每一个θ的向量都减去同一个φ,你就会发现他们预测结果没有任何变化。假如我拿每一个θ都减去了同一个φ,我把θj-φ当作原来的θj,即:
通过上面公式展开,也就是说减φ与不减φ不影响最终的预测结果。这说明softmax参数有冗余,既然随便减一个φ可以,那我都给他减一个θ1,也可以,那么就是把θ1全变成零了,θ2变成θ2-θ1了,θ3变成θ3-θ1了。所以实际上我们只需要保存两组参数就够了。
我们再来看下Softmax回归与Logistic 回归的关系:当类别数k=2时,softmax 回归退化为 logistic 回归。这表明 softmax 回归是 logistic 回归的一般形式。具体地说,当k=2时,softmax 回归的假设函数为:
利用softmax回归参数冗余的特点,θ1全置为0,θ2变成θ2-θ1:那么h(x)会输出两个结果。即:
我们就会发现 softmax 回归器预测其中一个类别的概率为,另一个类别的概率就是
此时的softmax回归就是参数为θ2-θ1的逻辑回归。
大白话5分钟带你走进人工智能-第二十节逻辑回归和Softmax多分类问题(5)的更多相关文章
- 大白话5分钟带你走进人工智能-第二十九节集成学习之随机森林随机方式 ,out of bag data及代码(2)
大白话5分钟带你走进人工智能-第二十九节集成学习之随机森林随机方式 ,out of bag data及代码(2) 上一节中我们讲解了随机森林的基本概念,本节的话我们讲解随机森 ...
- 大白话5分钟带你走进人工智能-第二十六节决策树系列之Cart回归树及其参数(5)
第二十六节决策树系列之Cart回归树及其参数(5) 上一节我们讲了不同的决策树对应的计算纯度的计算方法, ...
- 大白话5分钟带你走进人工智能-第32节集成学习之最通俗理解XGBoost原理和过程
目录 1.回顾: 1.1 有监督学习中的相关概念 1.2 回归树概念 1.3 树的优点 2.怎么训练模型: 2.1 案例引入 2.2 XGBoost目标函数求解 3.XGBoost中正则项的显式表达 ...
- 大白话5分钟带你走进人工智能-第31节集成学习之最通俗理解GBDT原理和过程
目录 1.前述 2.向量空间的梯度下降: 3.函数空间的梯度下降: 4.梯度下降的流程: 5.在向量空间的梯度下降和在函数空间的梯度下降有什么区别呢? 6.我们看下GBDT的流程图解: 7.我们看一个 ...
- 大白话5分钟带你走进人工智能-第36节神经网络之tensorflow的前世今生和DAG原理图解(4)
目录 1.Tensorflow框架简介 2.安装Tensorflow 3.核心概念 4.代码实例和详细解释 5.拓扑图之有向无环图DAG 6.其他深度学习框架详细描述 6.1 Caffe框架: 6.2 ...
- 大白话5分钟带你走进人工智能-第十四节过拟合解决手段L1和L2正则
第十四节过拟合解决手段L1和L2正则 第十三节中, ...
- 大白话5分钟带你走进人工智能-第30节集成学习之Boosting方式和Adaboost
目录 1.前述: 2.Bosting方式介绍: 3.Adaboost例子: 4.adaboost整体流程: 5.待解决问题: 6.解决第一个问题:如何获得不同的g(x): 6.1 我们看下权重与函数的 ...
- 大白话5分钟带你走进人工智能-第35节神经网络之sklearn中的MLP实战(3)
本节的话我们开始讲解sklearn里面的实战: 先看下代码: from sklearn.neural_network import MLPClassifier X = [[0, 0], [1, 1]] ...
- 大白话5分钟带你走进人工智能-第十五节L1和L2正则几何解释和Ridge,Lasso,Elastic Net回归
第十五节L1和L2正则几何解释和Ridge,Lasso,Elastic Net回归 上一节中我们讲解了L1和L2正则的概念,知道了L1和L2都会使不重要的维度权重下降得多,重要的维度权重下降得少,引入 ...
随机推荐
- Dijkstra算法_最短路径_L2-001. 紧急救援
作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上.当其他城市有紧急求 ...
- android之SlideMenu双向滑动
开始动手之前先来讲一下实现原理,在一个Activity的布局中需要有三部分,一个是左侧菜单的布局,一个是右侧菜单的布局,一个是内容布局.左侧菜单居屏幕左边缘对齐,右侧菜单居屏幕右边缘对齐,然后内容布局 ...
- 201621123034 《Java程序设计》第7周学习总结
作业07-Java GUI编程 1. 本周学习总结 1.1 思维导图:Java图形界面总结 1.2 可选:使用常规方法总结其他上课内容. 2.书面作业 1. GUI中的事件处理 1.1 写出事件处理模 ...
- Json对象转json数组
var arr = []; arr.push(strData);
- SOA与WCF
背景: 高校平台马上就要进入编程阶段了,对于没怎么做过正式项目的我们来说,要学的东西实在太多了.一下子面对这么多学习资料时,我们也不能着急,还是踏踏实实,一个一个地去了解,其实他们都没那么神秘.这篇博 ...
- SQL SERVER 2008 bug
我把一个数据的数据导入的到另外一个数据库 作为 测试库使用. 发现里面设置为唯一标识ID 自动增长的表 全部默认是否. 最后只能手动一个个 表全部改过来. 弄了好久才发现这个问题.浪费了我几个小时的 ...
- 【bzoj2770】YY的Treap 权值线段树
题目描述 志向远大的YY小朋友在学完快速排序之后决定学习平衡树,左思右想再加上SY的教唆,YY决定学习Treap.友爱教教父SY如砍瓜切菜般教会了YY小朋友Treap(一种平衡树,通过对每个节点随机分 ...
- Sth about 函数式编程(Functional Programming)
今天开会提到了函数式编程,针对不同类型的百年城方式,查阅了一部分资料,展示如下: 编程语言一直到近代,从汇编到C到Java,都是站在计算机的角度,考虑CPU的运行模式和运行效率,以求通过设计一个高效的 ...
- 最大异或和(xor)
最大异或和(xor) 题目描述 给定一个非负整数序列{a},初始长度为N. 有M个操作,有以下两种操作类型: 1.A x:添加操作,表示在序列末尾添加一个数x,序列的长度N+1. 2.Q l r x: ...
- OpenGL入门学习(四)
http://blog.csdn.net/sun6255028/article/details/5090055 OpenGL支持两种颜色模式:一种是RGBA,一种是颜色索引模式.无论哪种颜色模式,计算 ...