线性模型
线性模型大致可以分为:分类和回归两种,先来讲一下回归。
回归
抽象层面来看待(简单先从2维平面来看)。
从上面的图,我们可以大致得到在二维平面中,我们期望获取到一条线,这条线(初中的知识来说一条线的表示方式是 y = kx + b),那么我们的目标就是我们的这条线能够穿过更多的点,因为穿过更多的点,那么我的这个 y' 值就是我们想要预测的值。
所以,根据上述抽象的方式,我们就可以得到我们的目标是 :
由于我们知道 y' - y 可能是负的值,所以我们的目标就变成要求以下的式子最小:
【这种模型方式也被成为是“最小二乘法”】
当我们在许多任务中遇到大量变量的时候
(一般来说即x有多个,方程变为 y = k1x1 + k2x2 + ....+ knxn + b)的时候,又因为样本数量的少,导致 X (加粗为矩阵表示) 的列数多余行数,那么对于矩阵求解时, XTX 显然不会满足满秩情况。此时可以解除多个w的解,他们都可以使均方差最小化,为了选择一个作为输出,一般常见做法是引入正则化项。(即惩罚项)
Tips:
LWLR :
【这里说的的是一个 单一 y = wx + b 的过程,即二维平面】 首先我们知道对于w的求解,我们使用最小二乘法去做的时候,他的解只会有一个,相当于是它用x的所有样本量去求解一个w,相当于有点类似求平均数的概念。那么在这种方式下,它的拟合曲线在大概率上都可能是欠拟合的。那么怎么办?可以使我的拟合曲线更加能够拟合整个数据集。那么我们可以假设,我如果在这个数据集上就选取了两个点来拟合一条直线,那么,我下次做预测的时候,如果测试数据刚好是我们选取的两个点,那么我们用我们这条拟合的曲线去预测一定会达到准确的值。好了,那么我们用无限切分的思想将整个数据集(比如数据集是 M = {x1,x2,x3,x4},那么我们切分下来两两作为一个集合集成一个大集合为 D = {{x1,x2},{x2,x3},{x3,x4}【有点类似滑动窗口的原理】)我们这样子做就会得到三条拟合线,然后分别将他们按照区间(x1,x2),(x2,x3),(x3,x4)拼接在一起,就是我们新的预测拟合线了。
以上的想法就是LWLR加权线性回归函数的类似思想,只不过他使用了核函数来把其他大部分点都过滤掉,留下比较相近的点作为预测加权的点。类似上面的区间点,只不过区间变大,比如{x2,x3,x4}这样子。所以在建核函数都会有一个k值,这个k值相当于就是一个阈值来划分,我要选取进来多少个点做拟合预测。【这种思想也有点类似聚类的思想】
岭回归 & Lasso
岭回归的方式简单来说就是对w参数的删减,与神经网络中的正则化类似,加入惩罚项。我们知道对于L1正则化来说,在它的求导之后,损失函数所减去的λ是一个固定值,所以当他进行迭代的时候,所有的w参数都会减去一个固定的值,这样更容易使数据趋向于0.【这也是为什么L1正则化能够得到稀疏解的原因】。而对于L2正则化时,我们可以通过公式去理解损失函数在求导时候减去的是一个λw,而w在每次迭代过程中,它的值是在变化的,可以将其想象成一条平缓下降的曲线,起初下降速度快,后期趋于平缓。【这也是L2正则化在求解过程中更平滑的原因】(总而言之,在我个人看来,L1正则化更像是一种绝对的特征选取,因为它能做到稀疏解,那么稀疏解的含义我们可以转化为更多的0解,以为着我对应到x中的参数获取会变的更加少,就好像我做了一个特征工程,其实只是取x中的一部分特征来做训练【假设x中有m个特征,通过筛选我取了n个,n < m】)
这种方式,可以通过增大模型偏差,减少模型的复杂度。
偏差与方差
方差指的是模型之间的差异,而偏差指的是模型预测值和数据(真实值)之间的差异。
例:我从某项数据集中随机抽选了100个数据做训练,得到一组回归系数。同理,再随机抽选100个数据做训练,得到另一组回归系数。两组回归系数的差异大小就是模型方差的差异大小。方差越大,说明模型对当前所有数据更加的拟合,而不是通用。
高方差一般是过拟合:
- 增大样本量
- 减少特征量(即样本维度)
高偏差一般是欠拟合:
- 增加特征(即样本维度)
- 尝试添加多项组合特征(寻找有代表性的特征)
分类
小知识:【最大熵模型的极大似然估计等价于对偶函数的极大化】
首先,我们为什么使用Sigmoid函数来做二分类问题,最直观的想法,我们知道对于一个单位阶跃函数不连续,我们不可能构造出(y = wx + b)的线性模型去进行拟合。所以第一步,我们需要将我们的线性模型非线性化,且我们知道对于一个二分类问题来说,我们需要将它的值尽可能的落在[0,1]范围之间。这样子可以方便我们来进行非线性的拟合。【Sigmoid函数从另一个层面来看,可以看做将一个低维平面的映射到高维空间中,然后再高维空间中去寻找其线性可分的点】
为什么改写成对数似然函数,因为对于对数似然函数来说,它是一个凸性函数,那么将它作为损失函数,就能够使用梯度下降法和牛顿法来进行求解,且可以寻找到全局最低的值。
Tips:
多分类问题
多分类器大致可以分为OvO的训练模式,和OvR的训练模式。
即给定一个数据集 D={(x1,y1),(x2,y2),...,(xn,yn)} yi = { C1,C2, C3,..Cm}
那么对于OvO的训练模式来说,他们会产生 m(m-1)/ 2 个分类结果,最终结果通过投票的方式提交给分类器。简单来说,就是一个 T1 分类器是用来分 (C1,C2)的, T2 分类器来分 (C1, C3) 的,以此类推,最后把他们的结果进行加成(一般把预测的最多的类别作为最后类别)。
OvR的训练模式为,T1 分类器为,把{ C1 }作为正例,{ C2,C3, ... , Cm} 的作为负例,然后一次类推。对结果置信度最高的作为最终结果。
LR回归的缺点
- 当特征空间很大的时候,LR的性能会不是很好(即列向量特别多)
- 对于非线性特征,需要有函数来映射
- 依赖于全部的特征数据,当特征有确实的时候表现出来的效果不是很好,更在意数据特征