大白话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,接下来把得到的每一个结果概率化输出,为:

                                                \frac{e^{w_{1}^{T}x}}{\sum e^{w_{i}^{T}x}}\frac{e^{w_{2}^{T}x}}{\sum e^{w_{i}^{T}x}}\frac{e^{w_{3}^{T}x}}{\sum e^{w_{i}^{T}x}}\frac{e^{w_{4}^{T}x}}{\sum e^{w_{i}^{T}x}}\frac{e^{w_{5}^{T}x}}{\sum e^{w_{i}^{T}x}}

在 softmax回归中,我们解决的是多分类问题(相对于 logistic 回归解决的二分类问题),类标y可以取k个不同的值(而不是两个)因此,对于训练集\left\{\left(x^{(1)}, y^{(1)}\right), \ldots,\left(x^{(m)}, y^{(m)}\right)\right\},我们有$y^{(i)} \in\{1,2, \ldots, k\}$,(注意此处的类别下标从 1 开始,而不是 0)。对于给定的测试输入x,我们想用假设函数针对每一个类别j估算出概率值p(y=j|x),也就是说,我们想估计x的每一种分类结果出现的概率。

因此,我们的假设函数将要输出一个k维(k个类别)的向量来表示这k个估计的概率值。具体地说,我们的假设函数h(θ)形式如下:

                             h_{\theta}\left(x^{(i)}\right)=\left[ \begin{array}{c}{p\left(y^{(i)}=1 | x^{(i)} ; \theta\right)} \\ {p\left(y^{(i)}=2 | x^{(i)} ; \theta\right)} \\ {\vdots} \\ {p\left(y^{(i)}=k | x^{(i)} ; \theta\right)}\end{array}\right]=\frac{1}{\sum_{j=1}^{k} e^{\theta_{j}^{T} x^{(i)}}} \left[ \begin{array}{c}{e^{\theta_{1}^{T} x^{(i)}}} \\ {e^{\theta_{2}^{T} x^{(i)}}} \\ {\vdots} \\ {e^{\theta_{k}^{T} x^{(i)}}}\end{array}\right]

其中$\theta_{1}, \theta_{2}, \ldots, \theta_{k} \in \mathrm{R} \mathfrak{e}^{n+1}$是模型的参数,\frac{1}{\sum_{j=1}^{k} e^{\theta_{j}^{T} x^{(i)}}}这一项对概率分布进行归一化,使得所有概率之和为 1。实际上就是把一个x(i)丢在一个hθ里面要输出一组概率,比如这个例子里面要输出5个概率,每个概率实际上它的判别函数都是它们共用同一个分母,只不过分子部分不同,第一个概率就是第一组w算出来分数扔到e的上面得出来的结果,每一个都是每一组w对于同一个x(i)的运算结果,分母又是所有分子的加和,因此它们总体的加和一定是等于1的。这个就是softmax的判别函数。

为了方便起见,我们同样使用符号θ来表示全部的模型参数,将θ用一个k*n的矩阵来表示,k个类别,n个属性值,每一类这这些属性上面都对应着一组参数。该矩阵是将每组$\theta_{1}, \theta_{2}, \ldots, \theta_{k}$按照行罗列起来得到的。如下所示:

                                                                       \theta=\left[ \begin{array}{c}{-\theta_{1}^{T}-} \\ {-\theta_{2}^{T}-} \\ {\vdots} \\ {-\theta_{k}^{T}-}\end{array}\right]
有了这一组θ,我们的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。

回顾下逻辑回归的损失函数:

                                                $-\sum_{i=1}^{m}\left(y^{(i)} \log h_{\theta}\left(x^{(i)}\right)+\left(1-y^{(i)}\right) \log \left(1-h_{\theta}\left(x^{(i)}\right)\right)\right)$

这个函数中,虽然每一项加和的部分是两部分yi*log h(x)+(1-yi)*log (1-h(x))组成,但是因为yi不是0就是1,前面在后面就没了,后面在前面就没了,所以对每一条样本来说就只能存活下来一项,这个是针对二分类来说的。把其写成示性函数的表达就是:

                                                -$\sum_{i=1}^{m} \sum_{j=0}^{1} 1\left\{y^{(i)}=j\right\} \log p\left(y^{(i)}=j | x^{(i)} ; \theta\right)$

解释下:比如一条样本标签真实值yi是0,根据我们上面的描述yi*log h(x)+(1-yi)*log (1-h(x))这里面只能存在一项就是后面一项。而对于示性函数来说$\sum_{j=0}^{1} 1\left\{y^{(i)}=j\right\} \log p\left(y^{(i)}=j | x^{(i)} ; \theta\right)$这个里面j是累加到1,两个取值,j先为0的时候,yi=j=0为真。1{值为真的表达式}=1,所以当j为0的时候值保留下来,当j为1的时候yi=j=1≠0,1{值为假的表达式} =0,所以当j为1的时候值没有累加。因此真正每一条样本计算的就是其对应真实y的时候那一部分概率值。

而对于多分类来说我们需要像推导逻辑回归损失函数一样,把每一条样本预测正确的概率连乘,使得似然最大。那多分类的每一条样本预测正确的概率就是:

                                                      \sum_{j=1}^{k} 1\left\{y^{(i)}=j\right\} \log \frac{e^{\theta_{j}^{T} x^{(i)}}}{\sum_{l=1}^{k} e^{\theta_{l}^{T} x^{(i)}}}

在Softmax回归中将x分类为类别j的概率为:

                                            h(\theta)x=p\left(y^{(i)}=j | x^{(i)} ; \theta\right)=\frac{e^{\theta_{j}^{T} x^{(i)}}}{\sum_{l=1}^{k} e^{\theta_{l}^{T} x^{(i)}}}

举例来说,假如是3分类,这个预测就输出3个概率,也就是3个数,对每一条样本来说,其中第一个概率代表是我预测它最后类别是1的概率,第二个是代表我预测它类别为2的概率,第三个就是我预测它类别为3的概率,它实际的类别假如为1的话,我预测对了的概率是第一个数,第二个数还是第三个数?应该是第一个数。就从里边挑出应该预测正确的概率放在这,这就是它正确的概率,因为对每一个样本来说yi只能取一个值,所以里面的加和也只会存活下来一项。每一条样本yi等于多少其对应的hθ(x)的值就留下来。比如第一个样本真实分类是0,那就保留\frac{e^{\theta_{0}^{T} x^{(i)}}}{\sum_{l=1}^{k} e^{\theta_{l}^{T} x^{(i)}}}这一部分,第二个真实样本类别是1 ,那就保留\frac{e^{\theta_{1}^{T} x^{(i)}}}{\sum_{l=1}^{k} e^{\theta_{l}^{T} x^{(i)}}}这一部分,第三个真实样本分类是2,那就保留\frac{e^{\theta_{2}^{T} x^{(i)}}}{\sum_{l=1}^{k} e^{\theta_{l}^{T} x^{(i)}}}这一部分,损失函数只取决于预测对的那一项的概率,其它的概率其实损失函数角度是不关心的。所以它尽量,想让训练集上全部预测的总正确率最大,就需要把每条数据被预测正确的概率给连乘起来,求最大似然,加个log,连乘变连加,然后加个负号就得到这个损失函数了。最后推导出来的softmax损失函数如下:

                                                       J(\theta)=-\sum_{i=1}^{m} \sum_{j=1}^{k} 1\left\{y^{(i)}=j\right\} \log \frac{e^{\theta_{j}^{T} x^{(i)}}}{\sum_{l=1}^{k} e^{\theta_{l}^{T} x^{(i)}}}

可以看到,Softmax代价函数与logistic 代价函数在形式上非常类似,只是Softmax损失函数中对类标记的k个可能值进行了累加。

对于J(θ)的最小化问题,当前还没有闭式解法。因此,我们使用迭代的优化算法(例如梯度下降法,或 L-BFGS)。经过求导,我们得到梯度公式如下:

                                            \nabla_{\theta_{j}} J(\theta)=-\frac{1}{m} \sum_{i=1}^{m}\left[x^{(i)}\left(1\left\{y^{(i)}=j\right\}-p\left(y^{(i)}=j | x^{(i)} ; \theta\right)\right)\right]

有了上面的偏导数公式以后,我们就可以将它代入到梯度下降法等算法中,来最小化J(θ)。例如,在梯度下降法的标准实现中,每一次迭代需要进行如下更新:

                                                            $\theta_{j} :=\theta_{j}-\alpha \nabla_{\theta_{j}} J(\theta)(j=1, \ldots, k)$

得到一组θ使得模型表现最好。此时得到θ就是softmax训练出来的结果。所以不管它是什么损失函数,你总可以交给sgd或者l-bfgs进行最小化,得到一组θ使得模型表现最好。

对于softmax,你它的本质是把好几个逻辑回归塞到一起去了,但是它判别函数又变了变,原来是1/{1+exp(-z)},现在变成了e的z求和,有多少个z就求和多少次,加起来之后当分母,然后分子为对应部分预测的概率,这样它们输出的每个概率就都进行了归一化。

softmax有一个有趣的特点:softmax的形式是有几个分类,就有几组w向量,比如三类,最终训练出来的参数实际上就是θ1,θ2,θ3,原来逻辑回归是一组θ,现在是三组θ。你把这三组θ都减去一个相同的向量φ,比如φ全是1。 假如这θ长度为五,φ是五个1也好,五个2也好,12345也好,只要把每一个θ的向量都减去同一个φ,你就会发现他们预测结果没有任何变化。假如我拿每一个θ都减去了同一个φ,我把θj-φ当作原来的θj,即:

                                                          \begin{aligned} p\left(y^{(i)}=j | x^{(i)} ; \theta\right) &=\frac{e^{\left(\theta_{j}-\psi\right)^{T} x^{(i)}}}{\sum_{l=1}^{k} e^{\left(\theta_{l}-\psi\right)^{T} x^{(i)}}} \\ &=\frac{e^{\theta_{j}^{T} x^{(i)} e^{-\psi^{T} x^{(i)}}}}{\sum_{l=1}^{k} e^{\theta_{l}^{T} x^{(i)} e^{-\psi^{T} x^{(i)}}}} \\ &=\frac{e^{\theta_{l=1}^{T} x^{(i)}}}{\sum_{l=1}^{k} e^{\theta_{l}^{T} x^{(i)}}} \end{aligned}

通过上面公式展开,也就是说减φ与不减φ不影响最终的预测结果。这说明softmax参数有冗余,既然随便减一个φ可以,那我都给他减一个θ1,也可以,那么就是把θ1全变成零了,θ2变成θ2-θ1了,θ3变成θ3-θ1了。所以实际上我们只需要保存两组参数就够了。

我们再来看下Softmax回归与Logistic 回归的关系:当类别数k=2时,softmax 回归退化为 logistic 回归。这表明 softmax 回归是 logistic 回归的一般形式。具体地说,当k=2时,softmax 回归的假设函数为:

                                                                      h_{\theta}(x)=\frac{1}{e^{\theta_{1}^{T} x}+e^{\theta_{2}^{T} x^{(i)}}} \left[ \begin{array}{c}{e^{\theta_{1}^{T} x}} \\ {e^{\theta_{2}^{T} x}}\end{array}\right]

利用softmax回归参数冗余的特点,θ1全置为0,θ2变成θ2-θ1:那么h(x)会输出两个结果。即:

                                                                       h(x)=\frac{1}{e^{\overrightarrow{0}^{T} x}+e^{\left(\theta_{2}-\theta_{1}\right)^{T} x^{(i)}}} \left[ \begin{array}{c}{e^{\overrightarrow{0}^{T} x}} \\ {e^{\left(\theta_{2}-\theta_{1}\right)^{T} x} ]}\end{array}\right]

                                                                               =\left[ \begin{array}{c}{\frac{1}{1+e^{\left(\theta_{2}-\theta_{1}\right)^{T} x}}} \\ {\frac{e^{\left(\theta_{2}-\theta_{1}\right)^{T} x}}{1+e^{\left(\theta_{2}-\theta_{1}\right)^{T} x}}}\end{array}\right]

                                                                              =\left[ \begin{array}{c}{\frac{1}{1+e^{\left(\theta_{2}-\theta_{1}\right)^{T} x^{(i)}}}} \\ {1-\frac{1}{1+e^{\left(\theta_{2}-\theta_{1}\right)^{T} x^{(i)}}}}\end{array}\right]

我们就会发现 softmax 回归器预测其中一个类别的概率为\frac{1}{1+e^{\left(\theta_{2}-\theta_{1}\right)^{T} x(i)}},另一个类别的概率就是1-\frac{1}{1+e^{\left(\theta_{2}-\theta_{1}\right)^{T} x}(i)}

此时的softmax回归就是参数为θ2-θ1的逻辑回归

转载于:https://www.cnblogs.com/LHWorldBlog/p/10801253.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/279584.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

下载spotify音乐_如何在Spotify上播放更高质量的音乐

下载spotify音乐With Spotify Premium, you get access to higher quality music streaming. By default (and if you’re on the free plan), Spotify streams at 96kbps on mobile and 160kbps on your computer. At these sort of bitrates, you’ll hear a small but notic…

如何从终端打开Ubuntu Nautilus文件浏览器

Recently, we showed you how to open a directory in Terminal from within Nautilus. However, what if you’re working on the command line in Terminal and need to access the same directory in Nautilus? There’s an easy solution for that. 最近,我们向…

mysql 面试知识点笔记(七)RR如何避免幻读及非阻塞读、范式

2019独角兽企业重金招聘Python工程师标准>>> 表象:快照读(非阻塞读)--伪MVCC (Multi-Version Concurrent Controll多版本并发控制) 内在:next-key锁(record锁gap锁) rr serializabel 都支持gap锁…

pdf 奇数页插入页码_如何在Word 2013中的奇数页码上启动新部分

pdf 奇数页插入页码When working on a long document or a book in Word, it’s common to divide the document into sections or chapters. A common practice is to start each new section or chapter on an odd page. This is easily accomplished using sections in Word…

流水线上的思考——异步程序开发模型(2)

上一期我们讲了一个简单的流水线处理流程,正如我们在上期最后所说那样,这个简单的流水线处理流程对于后续有慢设备操作的业务来说,性能有可能偏低。今天我们来讨论一下如何提高性能的方法。首先让我们来大致区分一下一般业务的处理方式。目前…

java ReentrantLock 锁相关笔记

为什么80%的码农都做不了架构师?>>> ReentrantLock重入锁简单理解就是对同一个线程而言,它可以重复的获取锁。例如这个线程可以连续获取两次锁,但是释放锁的次数也一定要是两次 Lock locknew ReentrantLock(true);//公平锁 Lock …

计算机启动程序bios_如何构建自己的计算机,第三部分:准备BIOS

计算机启动程序biosSo you’ve carefully picked out some parts and built a computer, but it doesn’t really do anything…yet. Before we hop into installing your operating system, we need to take a quick look at the BIOS and prepare it for our operating syste…

kindle图书免费下载_如何在Kindle上免费签出图书馆书籍

kindle图书免费下载Tired of paying so much for ebooks? Most libraries these days let you check out eBooks, for free, just like regular books. 厌倦了为电子书支付这么多钱? 如今,大多数图书馆都让您免费阅读电子书,就像普通书籍一样…

总结之:CentOS 6.4系统裁减详解及装载网卡步骤

前言 随着接触Linux的慢慢深入、对Linux也有了一个基本认识了吧,慢慢的接触系统内核、系统配置文件、在了解Linux的系统启动流程后,现在来总结一下一个简单的Linux系统的裁减方法和步骤,一个只有内核文件和几个简单的命令的小Linux系统&am…

android 设备占用_如何查看正在占用Android设备的空间

android 设备占用When you picked up your shiny new Android device, you probably thought “yeah, this has plenty of storage. I’ll never fill it up!” But here you are, some number of months later with a full phone and no clue why. No worries: here’s how yo…

mysql密码正确却提示错误, 不输入密码反而能登录

今天部署阿里云服务器, 发现之前可以连接的mysql服务器突然连接不上了, 密码我确认是正确的,但登录时就是显示密码错误, 很崩溃, 差点气得我就想重装mysql了。 好在经过几番苦寻找到了以下能解决我问题的资料, 成功解决了我的问题, 万分感谢,…

php旧版本windows_Windows的旧版本中如何进行多任务处理?

php旧版本windowsConsidering that DOS was a single-tasking OS and the ties it had with early versions of Windows, just how did earlier versions of Windows manage to accomplish multi-tasking? Today’s SuperUser Q&A post looks at the answers to this ques…

docker swarm的应用----docker集群的构建

一、docker安装 这里我们安装docker-ce 的18.03版本 yum -y remove docker 删除原有版本 #安装依赖包 [rootDocker ~]# yum -y install yum-utils device-mapper-persistent-data lvm2 #添加docker的CE版本的yum源配置文件 [rootDocker ~]# curl https://download.docker…

微信小程序 fire_如何在Fire TV和Fire TV Stick上侧面加载应用程序

微信小程序 fireAmazon’s Fire TV and Fire TV stick technically runs Android…but you wouldn’t know it from looking. Amazon has a wall of content for its set-top box, and doesn’t want Google (with its own competing platform) to crash the party. But even t…

设备无法获得谷歌运行怎么办_因此,您刚刚获得了Google主页。 怎么办?

设备无法获得谷歌运行怎么办So you scored a Google Home for Christmas. That’s awesome because this is a killer little smart speaker that can do a lot of different things—in fact, it can be a little overwhelming. The good news is that we’ve got you covered…

IDEA Maven创建多个Module相互依赖

1、前言 在大型企业项目中,系统架构复杂多变,一个项目根本无法支撑起所有业务。为了提高项目扩展性、灵活性、重用性,封装性,将项目分为多个Module是非常必要的。 这里就不说IDEA如何安装了,安装好IDEA后需要修改maven…

速达5000出现计算成本数据溢出的问题

算成本提示某货品成本溢出处理方法,该问题是由于货品成本异常,成本上亿或者负亿造成的; 1.首先通过语句:select * into tmp_goods from l_goods where ABS(aprice)>100000,把成本价格超过10万的货品资料取出&#x…

收银员英文缩写_如何在没有收银员的苹果商店购买东西

收银员英文缩写If you visit an Apple Store in the hopes of buying a new iPhone, iPad, or MacBook, you have to talk to an Apple employee, since all the expensive products are kept in the back. However, if it’s just an accessory you want, you can buy it with…

php表单提交完返回,表单内容不清空解决方法

2019独角兽企业重金招聘Python工程师标准>>> 我们经常在注册的时候,填写一大推信息以后在提交注册的时候,因为某一项信息不正确,在返回的时候之前的填写的内容全部没有了,这样会导致用户丧失再次填写的信息&#xff0c…

word标尺灰色_如何在Microsoft Word中使用标尺

word标尺灰色Word’s rulers let you control the margins of your page and the indentation of paragraphs. They’re great for precisely lining up images, text, and other elements. If you’re printing a document, the rulers can help ensure that what you see on …