第二周:李宏毅机器学习周报

摘要

通过预测Pokemon的CP值和神奇宝贝分类的案例,使我对线性回归、逻辑回归的应用有了清晰的了解。采用训练数据和测试数据得出的预测准确性不同,解决此类问题通常是增加模型的复杂度,但模型过于复杂也会产生过拟合,而对于过拟合问题,我们也给出了解决方法。在分类问题中,由于线性回归是连续的线性函数,线性回归并不适用于解决分类问题。而解决分类问题采用逻辑回归,而对于分类问题中通过高斯分布来描述每个类别下的分布情况,也就是建模类条件概率,如果数据在每个类别下都服从高斯分布,则我们可以使用每个类别下的均值和方差,来建立这个类别下的高斯模型。在新数据到来时,我们可以根据其特征向量所属的类别,使用相应的高斯模型计算其概率分布。然后利用贝叶斯定理,将类条件概率和先验概率相乘,得到后验概率,从而对新数据进行分类。通过本文对Posterior Probability推导后,发现Posterior Probability本质上也是求w和b的过程。这与sigmoid极为相似。由于sigmoid函数性质特殊,因此也可以将概率模型转换为sigmoid函数,最后通过逻辑回归来解决二分类问题。而最优化模型的方法均是不断的进行梯度下降,优化参数w和b,从而提升模型的预测准确性。

Abstract

The cases of predicting the CP value of Pokemon and Pokémon classification gave me a clear understanding of the application of linear regression and logistic regression. The prediction accuracy derived using training data and test data is different. The solution to such problems is usually to increase the complexity of the model, but an overly complex model can also produce overfitting, and solutions to the overfitting problem are given. In classification problems, linear regression is not suitable for solving classification problems because linear regression is a continuous linear function. Instead, logistic regression is used to solve the classification problem, and for the classification problem by Gaussian distribution to describe the distribution under each category, that is, modeling the class conditional probability, if the data obey Gaussian distribution under each category, we can use the mean and variance under each category to build a Gaussian model under this category. When new data arrives, we can use the corresponding Gaussian model to calculate its probability distribution according to the class to which its feature vector belongs. Then, using Bayes’ theorem, we multiply the class conditional probability and the prior probability to obtain the posterior probability, and thus classify the new data. After the derivation of Posterior Probability through this paper, it is found that Posterior Probability is essentially the process of finding w and b as well. This is very similar to sigmoid. Because of the special nature of sigmoid function, it is also possible to convert the probability model into sigmoid function and finally solve the dichotomous problem by logistic regression. And the methods of the optimal model are all gradient descent continuously to optimize the parameters w and b, thus improving the prediction accuracy of the model.

1、Regression Case Study

预测神奇宝贝Pokemon(宝可梦)的CP值

这里主要是通过预测pekemons(宝可梦)进化后的战斗力,在这里我们要寻找的一个函数,input为宝可梦,output为宝可梦进化后的cp值。
在这里插入图片描述
f(某一只宝可梦相关的infomation)=进化后的CP值

输入X:某一只宝可梦, x s x_{s} xs:它的种类; x h p x_{hp} xhp:它的生命值; x w x_{w} xw:它的重量; x w x_{w} xw:它的高度; x c p x_{cp} xcp:它的CP值,输出Y(一个数值)

1.1. Model

本实验我们采用 Linear model,y = wx + b,其中x为输入宝可梦的各种属性(例如身高、重量等),w为权重参数,b为偏差。
在这里插入图片描述

1.2. Training Data

在这里插入图片描述
在这里插入图片描述

1.3. Goodness of Function

有了上述的训练数据后,我们就可以将损失函数 Loss function L 表示出来,从而定义function的好坏。
在这里插入图片描述
其中,如上图,红实线划定的为预测值, y ^ n \hat{y}^{n} y^n为实际输出值。二者之差越小,代表选定的w、b参数越好,对应的 function 越好。

1.4. Pick the Best Function

  1. 方式一
    找一个 f,使得 L(f) 最小
    在这里插入图片描述
  2. 方式二
    穷举所有的w和b,使得w、b代入L(w, b),使得Loss值最小
    在这里插入图片描述
    而寻找最优的w和b,往往采用 Gradient Descent (梯度下降)的方法。

1.5. Gradient Descent

梯度下降法是用来计算函数最小值的。它的思路很简单,想象在山顶放了一个球,一松手它就会顺着山坡最陡峭的地方滚落到谷底:
在这里插入图片描述
凸函数图像看上去就像上面的山谷,如果运用梯度下降法的话,就可以通过一步步的滚动最终来到谷底,也就是找到了函数的最小值。

1.5.1. 梯度下降算法描述与推导

我们给在小球滚下山的例子中每一段路的距离取名叫学习率(Learning Rate,也称步长,用α \alphaα表示),把一次滚落的一段距离叫做一次迭代。算法详细过程:
1. 确定定参数的初始值,计算损失函数的偏导数
2. 将参数代入偏导数计算出梯度。若梯度为0,结束;否则转到3
3. 用步长乘以梯度,并对参数进行更新
4. 重复2、3步骤
在这里插入图片描述

1.5.2. 特征缩放

在梯度下降中,如果样本的某些维度取值范围并不合理,比如房价预测系统中将房价的单位采用万亿元/平方米,这样每一个样本值的房价会非常小,以至于在图形表示时,几乎是一条水平线,不同的拟合直线所计算出的损失函数之间的差值非常小。这样采用直线取进行拟合时,如果我们在梯度下降法中循环结束的标志是梯度值为0,理论上这样我们仍然可以计算出准确的参数值。但是通常情况下,我们采用的标志是梯度与0相差在某一个可接受的范围内,如果我们选定这个范围是0.0001,0.0001乘以万亿,其结果是一亿,这么大的误差显然是不能接受的。

1.5.3. 学习率

在梯度下降算法中,迭代步长(即学习率)的选择非常重要。如果步长太大,最后可能不收敛,即出现振荡。如果步长太小,那么收敛速度太慢,我们需要很多次迭代来到达局部最优解。下图是对于某一房价预测系统,选择不同学习率时,损失函数随迭代次数的变化:
在这里插入图片描述
在这里插入图片描述
在第二张图片中,当α = 0.00001 时,损失函数每一次迭代减少的非常小,收敛速度很慢,我们可能需要很多次迭代才能得到局部最优解。
有时候,在梯度下降算法中,学习率并不总是固定的,有时候也会依据梯度来改变学习率。
具体方法与第一章学习中的方法一样,分一个参数和两个参数两种情况
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.6. 如何正确匹配宝可梦的cp值呢?

如下图,将b和w的值代入函数中,得到的红色线就是该函数的图像。这条红色线并不能完全匹配所有进化后的宝可梦的cp值。找寻误差是通过蓝色点到红线之间的距离。平均的误差就是所有的误差之和
在这里插入图片描述
但是上述并不是我们想要的,如果我们重新预测一个新的宝可梦的cp值,那误差又会是多少呢?也就是数据集如果是 testing data 的话,误差又会是多少呢?
在这里插入图片描述
结果显示,数据集为 testing data 时的误差比数据集为 training data 的误差要大。如果想要进一步优化,那么我们就需要重新设计 model。图中显示在cp值特别小的地方和cp值特别大的地方,预测是不准确的。因此我们需要有一个更为复杂的model

1.6.1. Selecting Model

我们重新设计一个复杂的model,通过梯度下降,求出最佳的w和b。显然此次的误差减少了
在这里插入图片描述
同时,我们还可以在此基础上,进一步将 model 复杂化,减少误差值,如下图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在训练集上表现更为优秀的模型,为什么在测试集反而变差 。原因是模型在训练集上过拟合。越复杂的模型,训练集上误差越来越低,但不一定在测试集上有更好的表现,因此要选择合适的模型。

过拟合

过拟合是指机器学习模型或者是深度学习模型在训练样本中表现得过于优越,导致在验证数据集以及测试数据集中表现不佳。出现这种现象的主要原因是训练数据中存在噪音或者训练数据太少。

过拟合问题,根本的原因则是特征维度(或参数)过多,导致拟合的函数完美的经过训练集,但是对新数据的预测结果则较差。

解决过拟合的六大方法:

  1. 增加训练数据

这是解决过拟合现象的根本办法,若没有过多的训练数据,我们可以自己增加一些假数据来在增加数据的数量,从而让模型的泛化能力增强。

  1. 控制模型复杂度

过于复杂的模型容易造成过拟合现象。对于模型的设计而言,我们应该选择简单、合适的模型解决复杂的问题。也不宜为了一昧的追求低误差而选择特别复杂的模型。

  1. 降低特征的数量

对于一些特征工程而言,可以降低特征的数量——删除冗余特征,人工选择保留哪些特征。这种方法也可以解决过拟合问题。

  1. L1 正则化
    在这里插入图片描述
    从这里的式子可以看出的是 ,添加L1正则后,w的值总是向着0靠近,这也就是说,使得网络中的权重变为0,也就是相当于减轻了网络的复杂度
  2. dropout机制

在每个训练批次中,通过忽略一半的特征检测器(让一半的隐层节点值为0),可以明显地减少过拟合现象。这种方式可以减少特征检测器(隐层节点)间的相互作用,检测器相互作用是指某些检测器依赖其他检测器才能发挥作用。

Dropout说的简单一点就是:我们在前向传播的时候,让某个神经元的激活值以一定的概率p停止工作,这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征。

  1. Early stopping

在每一个Epoch结束时(一个Epoch集为对所有的训练数据的一轮遍历)计算validation data的accuracy,当accuracy不再提高时,就停止训练。

一般的做法是,在训练的过程中,记录到目前为止最好的validation accuracy,当连续10次Epoch(或者更多次)没达到最佳accuracy时,则可以认为accuracy不再提高了。此时便可以停止迭代了(Early Stopping)。这种策略也称为“No-improvement-in-n”,n即Epoch的次数,可以根据实际情况取,如5、10、15、25…

cp预测值优化

出现误差可能是因为宝可梦的物种不一致。因此我们需要将宝可梦的物种考虑进去。
我们将训练的数据进行分类,如下图,蓝点表示Pridgey,红点表示Eevee,绿点表示Caterpie,橙点表示Weedle
在这里插入图片描述
为了避免过拟合,我们需要重新设计一下model
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
不同种类的宝可梦,所采用的参数也不同。采用这种方式,误差值相比于上述复杂的model,明显减少
在这里插入图片描述
我们尝试着将宝可梦的 weight(重量)、HP(血量)、height(身高)等特征加入其中,使其每一个宝可梦种类对应的model进一步复杂化
在这里插入图片描述
但结果显示,当加入宝可梦的特征到达一定数量后,再加入特征,会发生
过拟合。而此处解决过拟合的方式,我们选择正则化的方式去解决
在这里插入图片描述
正则化后,w的值总是向着0靠近,这也就是说,使得网络中的权重变为0,使得对应的function变得更加平滑,也就是相当于减轻了网络的复杂度
在这里插入图片描述
function的平滑度需要我们根据实际情况,手调 ⋋ 参数,来决定平滑程度。

2、Classification

神奇宝贝分类

2.1 分类问题

宝可梦的种类比较多,我们需要将宝可梦的各个属性(例如血量、攻击力等)一个function,从而根据function,预测出宝可梦的种类

2.1.1 分类与回归

我们可以将输入值为xi,输出值为^yi。可以根据宝可梦的特性,将输入的数据集分类为class1和class2。输入的值为class1类别的,output输出为1。输入的值为class2类别的,output输出为-1。

假设我们现在设计的model是 y = b + w 1 x 1 + w 2 x 2 y = b + w_{1}x_{1} + w_{2}x_{2} y=b+w1x1+w2x2 。蓝色区域为class1,红色区域为class2 。我们希望红色区域输入到regression中的model,越接近-1越好。蓝色区域则越接近1越好。理想状态下红色和蓝色的分界线为下图中绿线
在这里插入图片描述
如果class1的分布不是上图所示,而是下图这种情况。那么我们仍然用绿色的线代表model的话,class1分布就显得很不集中,即class1区域会出现 output>>1 的情况。但我们如果采用regression的话,我们都希望蓝色的点越接近1越好。也就是说,output>>1的点对于regression来说,是误差。
在这里插入图片描述
显然,regression定义function好坏的方式,对于classification并不适用。

2.1.2 二元分类

将输入的数据分为两类,分别为class1和class2
在这里插入图片描述
现在从两个类别中随机抽取出一个元素,这个元素x来自C1的概率可以由贝叶斯公式求出: P ( x ∣ C 1 ) P ( C 1 ) P ( x ∣ C 1 ) P ( C 1 ) + P ( x ∣ C 2 ) P ( C 2 ) \cfrac{P(x|C_{1})P(C_{1})}{P(x|C_{1})P(C_{1})+P(x|C_{2})P(C_{2})} P(xC1)P(C1)+P(xC2)P(C2)P(xC1)P(C1)

P ( C 1 ) 、 P ( C 2 ) 、 P ( x ∣ C 1 ) 、 P ( x ∣ C 2 ) P(C_{1})、P(C_{2})、P(x|C_{1})、P(x|C_{2}) P(C1)P(C2)P(xC1)P(xC2)的值需要通过training data估测出来。通过估测这些概率值,可以估算出某个元素x在这两个分类中出现的几率,即:P(x) = P ( x ∣ C 1 ) P ( C 1 ) + P ( x ∣ C 2 ) P ( C 2 ) P(x|C_{1})P(C_{1})+P(x|C_{2})P(C_{2}) P(xC1)P(C1)+P(xC2)P(C2)。而这便是Generative Model。

本例子中举例,宝可梦有18个系,现在我们将水系和一般系进行分类。其中蓝色属于一般系,绿色属于水系。
在这里插入图片描述
训练数据有79只水系,61只一般系的宝可梦
那么 P ( C 1 ) P(C_{1}) P(C1) = 79 / (79 + 61) = 0.56。 P ( C 2 ) P(C_{2}) P(C2) = 61 / (79 + 61) = 0.44。
每一个宝可梦都有一个根据它们自身属性和特征而定的vector(向量)来描述,那么 P ( x ∣ C 1 ) P(x|C_{1}) P(xC1) = ? 我们根据宝可梦的防御力和特殊防御力将水系的宝可梦分布在下图中
在这里插入图片描述
假设这79个点是从高斯分布中取样的

高斯分布

我们假设x是从多维高斯分布中选取出来的,则:
在这里插入图片描述
输入:vector x,输出:向量x在所有数据中所出现的概率
同样的x,将不同的 ∑ \sum μ \mu μ代入高斯公式中,对应x的几率分布也不尽相同,例如下图,同样的 μ \mu μ,但 ∑ \sum 不同:
在这里插入图片描述
假设有一个 Gaussian distribution存在,从这个 Gaussian distribution 中抽样出79个点,如下图,根据这79个点估测出 Gaussian distribution 的 μ \mu μ ∑ \sum 。给出一个新的点x,这个点不在79个点之中。将这个新的点x代入高斯分布公式中去,就可以算出这个x在79个点中的几率。如下图,x越接近红线圈出来的区域,被抽取出来的几率越大,反之,则被抽取的几率比较小。
在这里插入图片描述

而我们去估测Gaussion的均值 μ \mu μ和协方差 ∑ \sum 的方法就是极大似然估计法(Maximum Likelihood)

极大似然估计(Maximum Likelihood Estimation)是一种常用的参数估计方法,通常用于从样本数据推断出概率分布函数的参数值,或者得到最适合给定数据的模型的参数值。
简单来说,极大似然估计法就是从已知的样本数据出发,尝试找到能够最大化这些数据出现可能性的参数,通常用于构建随机变量的统计模型,比如正态分布、泊松分布和二项分布等。
具体而言,极大似然估计法所要解决的问题是在已知一些观测数据的情况下,如何调整模型的参数,使得得到这些观测数据的可能性最大化。而这个可能性的大小就可以用似然函数来表达,然后通过对似然函数求导得到极值,实现对参数的求解。

任何的高斯分布都能生成下图中的样本点。由于数据都是独立分布的,所以最终的概率值为各个点的概率之积。

在这里插入图片描述

我们找寻一个Gaussion,它选取这79个点的几率最大。将 μ ∗ \mu^{*} μ ∑ ∗ \sum^{*} 作为这个Gaussion的参数。

在这里插入图片描述
在这里插入图片描述
如下图,当两个参数为 μ 1 \mu^{1} μ1 ∑ 1 \sum^{1} 1时,class1最有可能被抽取的79个点的分布如下。当两个参数为 μ 2 \mu^{2} μ2 ∑ 2 \sum^{2} 2时,class2最有可能被抽取的79个点的分布如下。
在这里插入图片描述
那么求出 μ ∗ \mu^{*} μ ∑ ∗ \sum^{*} 后,就可以进行分类了。
在这里插入图片描述
在这里插入图片描述

综上,我们发现,对于评估高斯分布中的参数 μ \mu μ ∑ \sum 至关重要,找一组最好的参数,可以提高分类的精准度。如上图,将 μ \mu μ ∑ \sum 参数复杂化后,分类精准度明显提高至54%,但是这样做容易出现过拟合现象,为了有效避免过拟合,我们需要寻求一个方式,减少参数,同样也能提高分类的精准度。

在这里插入图片描述
我们可以让两个class的 ∑ \sum 值相等, μ \mu μ不同。其中 μ 1 \mu^{1} μ1 μ 2 \mu^{2} μ2为:
μ 1 \mu^{1} μ1 = 1 79 ∑ n = 1 79 x n \frac{1}{79}\sum_{n=1}^{79}x^{n} 791n=179xn

μ 2 \mu^{2} μ2 = 1 60 ∑ n = 80 140 x n \frac{1}{60}\sum_{n=80}^{140}x^{n} 601n=80140xn
在这里插入图片描述
按照上述的计算方式,分类的准确率达到了73%。
在这里插入图片描述
事实上,使用哪种分布模型是根据具体问题和具体场景而定的。
假设有一组x是由一组features组成。即 x = [ x 1 x 2 x 3 x 4 x 5 x 6 . . . x k ] x = \begin{bmatrix}\\x_{1}\\x_{2}\\x_{3}\\x_{4}\\x_{5}\\x_{6}\\...\\x_{k}\end{bmatrix} x= x1x2x3x4x5x6...xk
则P(x| C 1 C_{1} C1) = P( x 1 x_{1} x1| C 1 C_{1} C1) P( x 2 x_{2} x2 | C 1 C_{1} C1) … P( x k x_{k} xk| C 1 C_{1} C1) 。而 x 1 x_{1} x1 x 2 x_{2} x2 x k x_{k} xk产生的几率它们分别都是一维的Gaussion。

如果是binary feature(二元特征),那么这些几率都是由 **Bernouli distributions(伯努利分布)**产生的。

Posterior Probability(后验概率手推)

后验概率(Posterior Probability)是指在考虑了某一事物发生的前提条件下,对该事物发生的概率进行的判断。在贝叶斯定理中就是条件概率,即已知某些条件的情况下,出现某个事件的概率。
分类问题要进行后验概率的分析主要有以下几个原因:

  1. 评估模型:后验概率可以用来衡量每种分类结果的概率,从而评估模型的准确性。例如,在二元分类中,如果后验概率分别为0.8和0.2,那么我们可以预测该样本属于前者的概率更大。
  2. 解释性:后验概率可以用来解释模型的输出结果。例如,在信用评估中,我们可以通过计算后验概率来解释为什么模型认为某个应用者的信用等级为高或者低。
  3. 决策:后验概率可以为决策提供支持。例如,在医学诊断中,医生可以计算出每个可能的疾病的后验概率,从而选择最合适的治疗方案。
  4. 贝叶斯分类器:贝叶斯分类器是一类基于贝叶斯定理(利用先验概率和样本数据更新为后验概率的公式)的分类算法,在分类过程中需要计算后验概率。
    总之,后验概率是分类问题中必要的一步,它有助于我们对分类问题的理解和解决,提高了分类模型的效果。

在这里插入图片描述
转换成sigmodi function后,当z趋近于+ ∞ \infty 时,output趋近于1,反之z趋近于- ∞ \infty 时,output趋近于0。接下来,我们手动计算一下z的具体表达式:
在这里插入图片描述
经过最终计算,生成模型+贝叶斯公式本质上是寻找参数w和b的过程,如果我们直接进行参数w和b的求解,可以大大简化上述复杂的计算过程。这也是逻辑回归算法。

3.、逻辑回归

3.1 function set

上述分类问题的案例,我们首先找到概率模型 P w , b ( C 1 ∣ x ) P_{w,b}(C_{1}|x) Pw,b(C1x),如果概率模型 P w , b ( C 1 ∣ x ) P_{w,b}(C_{1}|x) Pw,b(C1x)>=0.5, 则认定输入的数据为为Class1,反之则认定为Class2。而概率值是介于(0, 1)之间。且sigmoid函数图像如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
逻辑回归 = 线性回归+sigmoid函数
而正如sigmoid函数的特性,故概率模型最后转化为sigmoid函数,一方面如果我们直接通过概率模型计算的话,正如Posterior Probability中的推导,计算过程太过于复杂。而将概率模型转化为sigmoid函数后,计算量大大减少。其次概率模型所求的抽取数据几率的范围在(0, 1)之间,sigmoid函数完全契合,也就是可以通过逻辑回归进行分类问题的处理。即: P w , b ( C 1 ∣ x ) P_{w,b}(C_{1}|x) Pw,b(C1x) = σ \sigma σ(z),因此function set 为 f w , b ( x ) f_{w,b}(x) fw,b(x) = P w , b ( C 1 ∣ x ) P_{w,b}(C_{1}|x) Pw,b(C1x)。用图像化表示如下:
z = ∑ i w i x i + b \sum_{i}w_{i}x_{i}+b iwixi+b
在这里插入图片描述

3.2 Goodness of a Function

假设由N个training data,即training data 为 x 1 x_{1} x1 x 2 x_{2} x2 x 3 x_{3} x3 x 4 x_{4} x4、… 、 x N x_{N} xN
在这里插入图片描述
并且这组data是基于Posterior Probability所产生的,根据上述推导,给任意一组w、b参数,也就决定了Posterior Probability
在这里插入图片描述
通过极大似然估计法,确定 w ∗ w^{*} w b ∗ b^{*} b,从而使得data被抽取出的几率最大化。 w ∗ w^{*} w, b ∗ b^{*} b = a r g max ⁡ w , b L ( w , b ) arg\max_{w,b}L(w,b) argmaxw,bL(w,b)
在这里插入图片描述
Loss Function等于Training Data 中的数据X的Cross entropy(交叉熵)的总和,交叉熵实际上表达的是希望这个function的output和它的target越接近越好,如果p和q的distribution一模一样的话,那么计算出来的Cross entropy就是0。

3.3 Find the best function(手推)

采用梯度下降的方法更新 w i w_{i} wi

在这里插入图片描述

逻辑回归与线性回归的对比:
在Function Set中,两者产生的模型不一样,Logistic Regression是在Linear Regression基础上进行Sigmoid Function,二者在梯度下降更新w参数的方式是一摸一样的。只不过逻辑回归函数值为0或1,线性回归的值可以是任何值
在这里插入图片描述
那逻辑回归更新是否可以采用线性回归更新参数的方式呢?如下
在这里插入图片描述
结果显示,这样做会导致,不管 y ^ n \hat{y}^{n} y^n的值为1还是为0,L对 w i w_{i} wi的偏微分始终都为0,也就是说 w i w_{i} wi不管距离目标值远与近,始终更新都比较缓慢。下图是w参数的变化与Loss的变化图像:
图中中心平坦位置为目标位置,对于Cross entropy来说,距离目标值越远,微分值越大,更新速度越快。对于Square Error来说,距离目标值越远,微分值很小,更新速度非常慢。有人会说,如果微分值很小的话,我们可以手调学习率(步长),来加快更新速度。但是这样存在一个问题,当我们的参数w本身就在目标值附近,而在目标值附近更新参数时,我们需要将学习率降低,从而能够更为精准的到达目标值。此时如果调大学习率,很容易产生偏差,从而无法精准的到达目标值。
在这里插入图片描述
逻辑回归的方法也称之为Discriminative,用Gaussion描述Posterior Probability这个过程,被称之为Generative。事实上,它们二者的model是一摸一样,均为 P( C 1 ∣ x C_{1}|x C1x) = σ ( w x + b ) \sigma(wx+b) σ(wx+b)。如果我们用的是逻辑回归,我们可以直接把w和b给找出来。而我们用的是Generative的话,我们需要去计算 μ 1 \mu^{1} μ1 μ 2 \mu^{2} μ2 ∑ − 1 \sum^{-1} 1参数的值,接下来代入再将 w T w^{T} wT和b求出。对比二者求w和b的方法,我们找出的结果并不是同一组w和b
在这里插入图片描述
那么从这二者中找出的w和b,哪一组会更好呢,如下对比图:
我们将宝可梦的七个特征属性加入其中,进行比较
在这里插入图片描述
结果显示,Discriminative model明显比Generative model准确率要高。
为什么会出现这种现象呢?接下来,我们来举个例子:
假设有一组 training data,有两个class2,有13个特征。
P ( C 1 ) P(C_{1}) P(C1) = 1 13 \frac{1}{13} 131 P ( C 2 ) P(C_{2}) P(C2) = 12 13 \frac{12}{13} 1312
P ( x 1 = 1 ∣ C 1 ) P(x_{1} = 1|C_{1}) P(x1=1∣C1) = 1, P ( x 1 = 1 ∣ C 2 ) P(x_{1} = 1|C_{2}) P(x1=1∣C2) = 1 3 \frac{1}{3} 31
P ( x 2 = 1 ∣ C 1 ) P(x_{2} = 1|C_{1}) P(x2=1∣C1) = 1, P ( x 2 = 1 ∣ C 2 ) P(x_{2} = 1|C_{2}) P(x2=1∣C2) = 1 3 \frac{1}{3} 31
给出测试数据后,我们可以计算出 P ( C 1 ∣ x ) P(C_{1}|x) P(C1x),如下图:
在这里插入图片描述
而计算后 P ( C 1 ∣ x ) P(C_{1}|x) P(C1x)<0.5。故上图中的测试数据属于class2,并不是class1。Generative与Discriminative差别就在于,Generative做了某种假设,它假设该组Data来自于几率模型,这种脑部假设好不好却决于数据的多少 。而Discriminative是完全依赖给出的Training Data进行判断的,Data越多,正确率会越高,Generative受数据量的影响较少,因此在Data数量较少的情况下,Generative比Discriminative正确率更高,且当label有噪声时,生成式模型预判的模型可以将噪声过滤掉,影响较小。

3.4 Multi-class Classification(多级分类)

上述均为两个class的例子,接下来,我们探讨一下三个class,甚至多个class的例子。
假设有三个class,每一个class都有它们自己的w和b,通过公式 z = wx + b,计算每个class对应的z的值,然后将每个z输入进softmax中,最后经过softmax函数,输出 y 1 y_{1} y1 y 2 y_{2} y2 y 3 y_{3} y3。softmax输出的概率定义为: S o f t m a x ( z i ) Softmax(z_{i}) Softmax(zi) = y i y_{i} yi = e a i ∑ j = 1 3 e z j \frac{e^{a_{i}}}{\sum_{j=1}^{3}e^{z_{j}}} j=13ezjeai。将z的值e之后,大的值与小的值之间的差距就会被拉得更开,就是强化了大的值,将原本输入softmax的数值转换成一种概率值,进行归一化,这件事情就叫做Softmax。在多分类问题中,通常会使用softmax函数作为网络输出层的激活函数,softmax函数可以对输出值进行归一化操作,把所有输出值都转化为概率(0~1之间),所有概率值加起来等于1
在这里插入图片描述
在这里插入图片描述
我们必须设定我们的目标值 y i ^ \hat{y_{i}} yi^,从而计算Cross entropy
在这里插入图片描述

3.5 Limitation of Logistic Regression

例如下图中的情况:
在这里插入图片描述
但是对于Logistic Regression是办不到上图中所示的情况,因为Logistic Regression的测试边界就只是一条直线,直线两边是两个class,但是上图中的例子,如果通过Logistic Regression的测试边界划分的话,并不能做到。
在这里插入图片描述
那么,我们该如何处理这种问题呢?
解决此类问题,我们可以使用Feature Transformation(特征变换),我们可以做一个比较好的变换后,找一个比较好的feature space,处理方式如下:
在这里插入图片描述
那我们如何让机器去做feature transformation?
我们可以将多个Logistic Regression连接起来
在这里插入图片描述
将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(神经网络)。
在这里插入图片描述

总结

通过这周的学习,针对不同的应用场景,如何选取合适的模型,如何优化模型,我有了一定的认识和理解,线性回归与逻辑回归的本质区别是,逻辑回归的是将线性回归进行一个变换,该模型的输出变量范围始终在 0 和 1 之间。而我们不管预测宝可梦的cp值还是进行神奇宝贝分类,均需要3个步骤:首先我们需要确定训练数据和模型,其次我们需要通过损失函数的误差值来判断模型的好坏,最后我们通过梯度下降,不断更新模型参数,优化模型。每类模型的复杂程度是针对具体情况而言的,如果模型选取过于复杂,容易出现过拟合,模型选择太简单,往往预测准确度不高。

通过上述两个案例的分析,我对梯度下降、过拟合、高斯分布、极大似然估计法也有了深刻印象。

同时我也深刻认识到,我对概率论数理统计的理论知识方面仍然存在很大的欠缺,在未来的学习中,我会不断加强自己数学理论的学习和理解。做到把每个地方吃透搞懂。
参考:
解决过拟合的六种方法

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@默然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值