机器学习(4)

摘要

在神奇宝贝分类的案例中,发现采用训练数据和测试数据得出的预测准确性不同,为了解决这个问题,我们增加了模型的复杂度,但因为模型复杂产生了过拟合现象,我们为了解决这个问题,将两个类的不同ε1和ε2共用同一个ε,来降低过拟合现象。在分类问题中,由于线性回归是连续的线性函数,线性回归并不适用于解决分类问题。而解决分类问题需要采用逻辑回归。利用贝叶斯定理,将类条件概率和先验概率相乘,得到后验概率,从而对新数据进行分类。通过本文对后验概率推导后,发现后验概率本质上是寻找参数w和b的过程,如果我们直接进行参数w和b的求解,可以大大简化上述复杂的计算过程,这也是逻辑回归算法。

一、神奇宝贝分类问题。

宝可梦的属性:Total、HP、Attack、Defense、SP Atk、SP Def、Speed。
问题:我们能不能将这七个属性输入到一个函数中,然后预测出是哪一个种类的宝可梦?
如何去进行分类呢?

1、用回归来解决分类问题。

Training:Class 1 means the target is 1;Class 2 means the target is -1.
Testing:closer to 1 ->class1;closer to -1 ->class 2
但是如果我们用回归来解决分类,会遇到为了减少错误,我们可能会得到蓝色的function,而不是绿色的function,因为它会惩罚那些“太正确”的数据。

在这里插入图片描述
一个可替代想法是,我们可以让function里面再嵌套一个function,假如是一个二元分类的话,如果里面的function>0,我们输出Class 1,里面的function<0,我们输出Class 2。对于构造损失函数的定义,我们可以定义为训练数据分类错误的次数越小,我们Loss越小。然后我们可以用Perceptron、SVM来寻找best function。在这里插入图片描述

2、用概率解决分类问题——Generative Model

从训练数据中估算概率,计算出x属于class1的概率,属于class2的概率,哪个概率大x就属于哪个类别。
贝叶斯公式:在这里插入图片描述
Gaussion Distribution:
在这里插入图片描述
input:vector x,output:probaability of sampling x。
如果我们知道μ和ε的话,我们就可以写出Gaussion function,把x带入这个function,我们就可以知道这个点被sample出来的几率。可以简言理解为,如果x越接近μ,sample出来的几率就越大。但问题是:如何寻找μ和ε呢。
在这里插入图片描述

Maximum Likelihood(最大似然估计)

任何u和ε组成的Gaussion都可以来表示整个空间上任何一个点,只是有些地方sample几率很低,有些地方sample几率很高。所以我们要找到一个最佳的μ和ε使得sample出这79个点的几率最大。而我们去估测Gaussion的均值μ 和协方差ε的方法就是最大似然估计法(Maximum Likelihood)。
Gaussion 抽取出这79个点的概率为:在这里插入图片描述
假设x1,x2,x3,…,x79以最大似然从高斯(μ^* ,ε*)生成。则μ* 和ε^*的计算为:
在这里插入图片描述
计算出水系和一般系的μ和ε为:
在这里插入图片描述现在可以我们就可以计算出x的分类概率了:如果P(C1|x)>0,x就属于water系
在这里插入图片描述
得出的分类结果为:

在这里插入图片描述

红色区域代表水系宝可梦概率是比较大的,蓝色区域代表这水系宝可梦概率比较小。由图可知测试数据分类准确度只有47%。得出只有de和sp de的分类的准确度并不理想,然后增加了其他宝可梦属性(total,hp,at,sp att ,speed)。但是得出的准确读只有54%,还是不理想。所以问题出在模型上,要对模型进行修改,为了有效避免过拟合,我们需要寻求一个方式,减少参数。

Modifying Model

修改模型,我们将两个类的不同ε1和ε2共用同一个ε,这样可以降低参数,来降低过拟合现象。
在这里插入图片描述
用宝可梦的防御力和特殊防御力作为特征,根据修改后的模型进行分类得出的准确率达到了73%。、
在这里插入图片描述
事实上,使用哪种分布模型是根据具体问题和具体场景而定的。
比如:如果是binary feature(二元特征),那么这些几率都是由 **Bernouli distributions(伯努利分布)**产生的。
如果所有的维数是独立的,我们可以使用朴素贝叶斯分类

Posterior Probability(后验概率推论)

在这里插入图片描述

在这里插入图片描述

经过最终计算,如果我们不需要计算N1、N2、μ1、μ2和ε,而是可以直接计算w和b的值,可以简化上述复杂的计算过程。这是逻辑回归算法。

二、逻辑回归

1、Function Set

根据宝可梦分类案例,我们想要去找到一个函数P w,b (C 1 ∣x),如果P≥0.5,输出C1,否则输出C2。表现为sigmoid的图像。
在这里插入图片描述
逻辑回归 = sigmoid函数(线性回归)。z通过sigmoid的方式,然后output值是概率。
在这里插入图片描述
所以function set为:在这里插入图片描述

2、Goodness of a Function

1、假设有大N个training data:x1,x2,x3,…,xN。这组training data是基于Posterior Probability所产生的。给一组w、b参数,我们可以决定了Posterior Probability,就可以去计算某一组w和b产生这大N组training data的概率。
L(w,x)计算x1,x2,x3,……xN的概率,而最有可能的两个参数w和b就称为w*,b*。
在这里插入图片描述
在这里插入图片描述
交叉熵实际上代表的是这两个distribution有多接近,如果p和q的distribution一模一样的话,那么计算出来的Cross entropy就是0。
Loss Function=Training Data 中的数据X的Cross entropy(交叉熵)的加和,意思是function的output和它的target越接近越好。
在这里插入图片描述
在这里插入图片描述

3、Find the best function

用梯度下降算法来更新w和b。
在这里插入图片描述
逻辑回归与线性的对比:
1、逻辑回归的输出值在0-1之间,线性回归的输出值为为任何数值。
2、逻辑回归函数值为0或1,线性回归的函数值是任何值
3、逻辑回归是在线性回归基础上进行Sigmoid
4、二者在梯度下降更新w参数的方式是一摸一样的
在这里插入图片描述

4、Logistic Regression + Square Error

如果逻辑回归的更新参数用线性回归的Square Error呢?
在这里插入图片描述

结果显示,不管 fw,b(xn)的值为1还是为0,L对​ 的偏微分始终都为0,也就是说w不管距离目标值远与近,更新都始终缓慢。下图是w参数的变化与Loss的变化图像:
在这里插入图片描述
图中中心平坦位置为目标位置,对于Cross entropy来说,距离目标值越远,微分值越大,移动速度越快。对于Square Error来说,距离目标值越远,微分值很小,移动速度非常慢。有人说,如果微分值很小的话,可以手动调学习率,来加快更新速度。但是存在一个问题,当我们的参数w本身就在目标值附近时,微分也很小,所以我们并不能清楚的知道当微分值很小时,我们是在目标值附近还是在目标值很远。

5、Discriminative 比较 Generative

逻辑回归的方法也称之为Discriminative,用Gaussion描述Posterior Probability这个过程,被称之为Generative。事实上,它们二者的model是一样的,均为P(C1│x)=σ(wx+b),如果我们用的是逻辑回归,我们可以直接用梯度下降的方法把w和b给找出来。如果我们用的是generative model的话,我们需要去计算u1、u2、∑ 的值,然后把u1、u2、∑ 带入下图公式算出w和b的值。虽然这两个方法用的是同一个model,同一个function set、同一组training data,但是因为generative做了不同的假设,所以得到了不同的w和b。在Generative model中,假设数据来自高斯分布或者伯努利分布。
在这里插入图片描述
那么从这二者中找出的w和b,哪一组会更好呢,如下对比图:
在这里插入图片描述
结果显示,Discriminative model比Generative model准确率要高。
为什么会出现这种现象呢?举个例子:
假设有一组 training data,有两个class2,有13个特征。
在这里插入图片描述
在这里插入图片描述
计算结果为P(C_1│x)<0.5,故上图中的测试数据属于class2,并不是class1。Generative与Discriminative差别就在于,Generative做了某些假设,它假设该组Data来自于几率模型,这种脑补假设好不好却决于数据的多少 。而Discriminative是完全依赖给出的Training Data进行判断的,Data越多,正确率会越高,Generative受数据量的影响较少,因此在Data数量较少的情况下,Generative比Discriminative正确率更高。当label有噪声时,生成式模型预判的模型可以将噪声过滤掉,影响较小,Generative比Discriminative正确率更高。

6、Multi-class Classification(多级分类)

1)假设我有3个class,参数如下图所示。在这里插入图片描述

2)softmax函数会对最大值做强化,而强化的意思是会使每一个Zi的值之间的差距拉的更大,将原本输入softmax的数值转换成一种概率值,进行归一化,这件事情就叫做Softmax。在多分类问题中,通常会使用softmax函数作为网络输出层的激活函数,softmax函数可以对输出值进行归一化操作,把所有输出值都转化为概率(0~1之间),所有概率值加起来等于1。在这里插入图片描述
3)通过上述操作,整理得到下图所示。
在这里插入图片描述
在这里插入图片描述

5、Limitation of Logistic Regression

在这里插入图片描述
Logistic Regression是办不到上图中所示的情况,无论我们怎么选择w和b,怎么画一条线,都不能将红色点和蓝色点划分开。因为Logistic Regression的测试边界就只是一条直线,直线两边是两个class。
在这里插入图片描述
那么,我们该如何处理这种问题呢?
解决此类问题,我们可以做Feature Transformation,自己定转换的原则,我们把x1,x2转换到另外的位置上。但不是每一次都能找到好的transformation,这个需要人为来做,失去了机器学习的意义。
在这里插入图片描述
我们需要靠机器自己产生transformation,因此我们需要Cascading logistic regression models。
在这里插入图片描述
将feature值从[0,1]变成[0.73 ,0.05],[1,0]变成[0.05 ,0.73],[0,0][1,1]transformation之后都是[0.27 ,0.27],因此现在我们可以找到一个线把红色的点和蓝色的点区分开来。

在这里插入图片描述
每一个Logistic Regression都可以与它前面的Logistic Regression和后面的Logistic Regression相连接,也就是说每个Logistic Regression既可以做input,也可以是output。我们把每一个Logistic Regression叫做Neuron(神经元),而这些Logistic Regression所连接形成的结构,叫做Neural Network(神经网络)。
在这里插入图片描述

总结

我总结了预测宝可梦的cp值和神奇宝贝分类,需要3个步骤:1、确定训练数据和模型,2、通过损失函数的误差值来判断模型的好坏,3、通过梯度下降,不断更新模型参数,优化模型。其中,如果模型选取过于复杂,容易出现过拟合,模型选择太简单,往往预测准确度不高。而且学习过程中发现我对概率论数理统计的理论知识方面不够熟悉以后我会不断加强自己概率论的学习。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值