目录
摘要
这周主要学习了regression的关于宝可梦预测的学习案例和clssfication(分类),主要是基于概率模型的分类方法。
Rregression:Case Study
1.Regression Case
Regression可以应用在很多方面,例如Stock Market Forecast(股市预测)、Self-driving Car(自动驾驶汽车)和Recommendation(推荐)。
2.预测宝可梦的CP(战力)值
这里主要是通过讲解案例预测pekemons(宝可梦)进化后的战斗力,在这里我们要寻找的一个函数,input为宝可梦,output为宝可梦进化后的cp值。
f(某一只宝可梦相关的infomation)=进化后的CP值
输入X:某一只宝可梦,Xs:它的种类;Xhp:它的生命值;Xw:它的重量;Xh:它的高度;Xcp:它的CP值,输出Y(一个数值)
Y=b+w*Xcp (w和b是参数,可以是任何数值)
,形如这种例子的模型被称为线性模型。
有了这些真实的数据,如何衡量模型的好坏呢?可以通过损失函数(Loss Function)来衡量模型的好坏。
L函式实际是对评估参数w、b的好坏(这里采用的是最小二乘法)。
将损失函式作图如下,其中横轴是参数b,纵轴是参数w,颜色代表Loss函式的好坏,越接近红色表示Loss函式输出越大,对应的function越糟糕,反之越好。
在function set里找到最好的function
第一种方法:穷举法,把所有可能的w和b值带入Loss Function。
第二种方法:梯度下降法
与第一章学习中的方法一样,分一个参数和两个参数两种情况
对于Linear Regression,无Local minima,梯度下降基本上都能找到最优点。
按照这种方法更新参数,实际上Loss函式的值沿着法线在更新
实际结果
使用训练集(10组数据上图)和测试集(另外10组数据)的平均误差来验证训练好的模型的好坏。
1.最简单的线性模型
2.进一步优化模型,将多个线性模型合并成为一个线性模型。
在训练集上表现更为优秀的模型,为什么在测试集上反而变差了?原因是模型在训练集上过拟合。
越复杂的模型,训练集上error越来越低,但不一定在测试集上有better performance。因此要选择合适的模型。 如果希望模型更强大表现更,则需要更多参数即更多input,加入血量,重量,高度等新的特征
但当特征值数量达到一定数量时,再增加特征的话,数据量没有明显增加,发生过拟合。
加入正则化(Regularization),使其更平滑。
w越小,表示function较平滑,当更多特征,但是权重 w 可能会使某些特征权值过高,仍旧导致overfitting,所以加入正则化。
Classfication
分类是指输入一些相关信息之后,模型在诸多选择中选出最符合预期的结果。
以宝可梦为例,如下图,输入不同的宝可梦,对应应该输出宝可梦的属性。
怎么将其数值化作为函数的输入?
以比卡丘为例
Total:整体强度,大概的表述神奇宝贝有多强,比如皮卡丘是320
HP:生命值,35
Attack:攻击力,55
Defense:防御力,40
SP Atk:特殊攻击力,50
SP Def:特殊防御力,50
Speed:速度,90 ,数值大可以先攻击
上述7个数字组成一个向量。
使用回归解决分类问题:binary classification(二元分类)
我们在Training时让输入为class 1的输出为1,输入为class 2的输出为-1;那么在testing的时候,regression output是一个数值,它大于0接近1则说明它是class 1,它小于0接近-1则说明它是class 2。
这样存在的问题:
1.就比如此时,右侧class1中右下角的这些点,如果仍然采用绿色那条线所代表的函数进行预测,这些新加入进来的点的误差将特别的大,为了缓解由此带来的误差,绿色的线将往右下角偏移,以此减少误差。
2.Regression的output是连续性质的数值,而classification要求的output是离散性质的点,我们很难找到一个Regression的function使大部分样本点的output都集中在某几个离散的点附近因此,Regression定义model好坏的定义方式对classification来说是不适用的。
分类的损失函数,也就是统计学习方法中的0-1损失函数
4. 贝叶斯估计
我们将上述问题进行泛化,生成概率模型其实是先假设数据的概率分布(正态、伯努利、泊松),然后用概率公式去计算x所属于的类型p(C1∣x),则公式如下所示:
其中P ( C 1 ) 和P ( C 2 ) 是通过类别个数的频数来计算的。 怎么确定所给宝可梦属于水系的概率是多少?
以二元分类为例,假设现在有两种分类,一种是水系,另一种是一般系。用宝可梦的水系和一般系的作为traning data,其余的用作testing data。现在traning data有79只水系,61只一般系,可计算得他们的概率。数据对应的均值和方差,我们可以通过已有的79个样本和极大似然分布得到。
将每只宝可梦都用他们的多个特征作为一个向量来表示。在这里用防御力和特殊防御力作为一个二维向量来表示宝可梦。
Gaussian Distribution (正态分布/高斯分布
对于高斯函数,这里表示均值μ,表示协方差 Σ,两者都是矩阵matrix,输入vector x,得到输出的是一个sample 出x的概率密度。
下图中可以看出,同样的 Σ,不同的μ,概率分布最高点的地方是不一样的。
那接下来的问题就是怎么去找出这个Gaussian 函数,只需要我们去估测出这个Gaussian的均值μ和协方差 Σ
估测均值μ和协方差的方法就是极大似然估计法(Maximum Likelihood)
任意的高斯分布(任意的均值向量和协方差矩阵)都能生成图上的样本点。由于数据是独立同分布的,所以最终的概率值为各个点的概率之积。
总结
通过宝可梦CP值预测的例子学习,让我明白了机器学习是要干嘛这件事情,在该学习案例中通过三个步骤去完成CP值的预测,首先是要选择一个Model,其次判断选择的function是否合适,最后选择一个最优的function。通过将宝可梦的特征数量值输入该function,可以得到该宝可梦进化后的CP预测值。通过二分类问题以及高斯分布,了解了基于概率模型的分类解决方法,我将在下周继续学习高斯分布的数学推导。