线性回归和线性分类算法学习理解

Posted by Jianghaowen on October 28, 2018

在我们讨论内容前面我们首先要弄清楚的问题是什么是我们至今学习的机器学习算法的实质,个人觉得是分类,我们实际算法解决的问题就是把数据如何进行合理的分类,这种分类所要达到的结果我们需要分为两类元素的分类与回归,所谓元素的分类就是我们需要根据一些特性找出来,把其分为两类,从二元贷款问题的角度考虑,举例来说就是穿白衣服,黑裤子的给贷款,相反的不给,我们就是要找出这种类似的分类,来作为计算机是否给贷款的依据。我们再来看回归,也是基于分类的,例如我们需要预测一个人的年龄,我们怎么做的呢?把一个人的特征通过决策树分类为一段一段的,每一段都有一个年龄特征值,如果一个人符合分类里面的特征年龄就确定了。以上我们看出在监督学习中,核心其实就是分类。在分类中我们存在一个问题如何划定范围呢?我曾经说过机器学习的局限性在于其统计学性质,我们就像画圈一样把一些特征划进去,但是在现实中并不是说满足这个特征的人一定会做出这个行为,我们只能说通过合理的画这个圈使得大多数人都在这个圈内,甚至到百分之九十九的人都在圈内,所以百分之百正确在理论上是不可能的,也就是局限。这就存在一个问题如果划圈不合理会造成什么呢?一种情况是画圈过小,在决策树中就是深度太大,我们知道如果根据原理来说的话,如果决策树一直进行,特征变量足够的话,可能划出的结果就是单个个体,我们举一个简单的小例子,有四个球,他们颜色和形状都不一样,最后我们用决策树划分的话,就会发现划分的结果就是训练集本身,这个范围锁定到了个人,这个划法很不科学,我们举一个例子,我们发现穿白衣服的人百分之九十九可以贷款,但是如果划分过细,白衣服,黑胡子的人可以贷款,白衣服,白胡子的人没有贷款,因此白衣服,白胡子的人不能贷款,但是实际白衣服的人都会贷款,只是恰好白胡子的没贷款,这就是圈子划得太小存在的问题,我们把它叫做过拟合,和训练集拟合得太好了,就没什么意义了,同理如果圈子划得过大,也会出现问题例如只要男人就能贷款,这个圈子划得太大,显然也不能很好的准确预测,我们把这种叫做欠拟合,因此我们知道所有分类就是要划一个合适的圈子,能够很好的进行预测。这个前言对后面理解一个概念会很有用。 我们现在来讲新的算法叫线性回归和线性分类算法,和决策树一样,其实监督学习一个算法就讨论两个问题分类和回归 首先我们说简单的回归实现方法,就是我们可能学过的最小二乘法和最大似然法实现。理解直接看下面的课本 简单来说就是用这个公式找到一条最接近所有点的线,这条线代表估计值,我们知道决策树用的是残差平方和最小找最近的值,为什么不用残差平方和呢? 简单来说就是最优的,如果不用到不了最优。 最大似然法简单来说从统计概率最大的角度来解决问题,个人感觉更符合逻辑,两种方法其实在一定程度上结果会一致,当数据呈现正态分布的时候,因为如果是正态分布,数据最近和概率最高是一致的。 这是回归的基本函数f(x)代表预测值代表误差 误差由三部分构成,其中不可消除误差就是我里面说的统计学局限,因为总是在理论上存在有人不在里的圈子里,你只是根据历史数据的分析,统计必然有局限性,如果通过历史数据,统计方法,我们就能完全准确预测,那么我们可能就知道2050年中国的GDP是多少了,明显不可能,平方偏置就是我们上面说的拟合程度产生的误差,平方偏置过小就可能导致过拟合,平方偏执越小代表越接近训练数据,圈子划得越细,划分区域之间数据方差越大。 方差代表划分区域之间的方差所带来的误差,方差过低,就可能导致欠拟合,就像圈子划得很大,数据很多,划分区域之间差异很小,例如男生贷款女生不贷款,男生和女生只是性别不一样,我们没讨论其它如年龄一样的变量,这时平方偏执误差就比较大,也就是因为对数据的拟合很差,你光通过男生和女生根本不能很好的与数据对应起来。 我们可以看到方差误差和偏执误差反相关,我们要找到误差最小来做回归,就是找到合适的方差误差和偏执误差的划分,也就是说白了合理划圈,不要过拟合也不要欠拟合,这样才能最精准的回归估计。 后面讲了一个东西线性回归正则化,简单来说就是人为增加一点偏执,降低方差,来避免一些问题,例如多重共线性问题,什么是多重共线性呢?就是例如y=k1x1+k2x2 X1为年龄,x2为性别,可能存在这个问题性别和年龄之间有联系可能性别可以由年龄决定可以写成y=k3x1,我们这种叫多重共线性,这种导致的后果就是估计不准,具体比较复杂了,总之就是用正则化的方法可以避免多重共线等问题。 回归我们说完了,我们来说分类,我们如何进行分类,如果数据特征不复杂,就算有多个特征变量我们也可以把它降维处理,然后画线,为什么存在降维的问题呢?如果我们有两个变量年龄和性别我们二维作图就能画出来,但是如果是三个的话我们就需要画三维的图,四个的画四维的图以此类推下面是三维的图 我们可以通过降维把所有点都放在二维平面显示,并且在二维平面划线例如下图 但是这会导致数学过程很复杂,如果特征变量(年龄、身高之类的)较多的话 上面图就是说的这个问题,降维画线,变量一堆的话会很麻烦。那么怎么处理呢?直接在高维空间处理。利用的工具叫做逻辑回归,这东西可以在高维空间进行切割,它和最大似然法相结合就能求得最佳划分,原理是逻辑回归能求出划分的概率,最大似然法正好就是达成划分概率最大的划分。下面是逻辑回归公式 p是划分为正的概率,逻辑回归把空间划分为正负两部分,通过一番昏天黑地的推倒出来个极其复杂的公式,用来在多维空间进行划分(也可以二维)。没叫我们代码实现,所以就不用管那个了。 我们上面提到了正则化的内容,同理里面也存在平方偏置和方差的问题,可能过拟合也可能欠拟合。公式里面必然存在一个参数用来调节曲线的这两个程度,我们实际是通过正则的系数来进行调节的,我们知道正则化其实就是增加偏置降低方差,它的系数可以对此进行调节,也就是c,这东西就像决策树里面的max-depth一样是我们需要调的参数,使得划出的圈合理。我们在写代码时也就是控制这个的大小来让模型表现得更好,划得圈更好,自然预测得越准。在此我们也理解了是怎么进行分类的,简单来说就是运用逻辑回归和最大似然在空间划分为两部分,一部分为贷款一部分为不贷款。 下面讲的是验证学习曲线也就是检验和提高精准度的问题 简单来说就是我们不止可以通过c来控制精度,还可以通过增加特征变量来进行控制,例如我们原来有年龄性别变量进行检验我们增加个收入变量,是否可以提高预测呢?同理如果我们增加更多的数据用于训练呢?能否增加精确度。是否增加这两个或者减少这两个东西,我们可以通过两个曲线进行判断。 我们通过画出c与预测精度的曲线可以得到是否添加新的特征变量的问题。 这同样说明了是否应该加数据的问题,同时也说明了我们以前讨论的问题,实际数据并不能让机器学习突破统计的局限。上面的曲线是把数据集数据数量从小到大增加,精准度的变化。 从上面两个我们得到以下规律


X