上一篇总结了线性回归,岭回归。其实还有一种常用的线性回归,就是局部加权线性回归(Locally Weighted Linear Regression,LWLR)。在该算法中,我们给待预测点附近的每个点赋予一定的权重,然后在这个子集上基于最小均方差来进行普通的回归。注意这里,它不能预测没有数据集的地方,它只能预测有数据集的地方,主要的作用就是解决欠拟合的问题。我之前有个误解,就是想用这种方法,去预测将来的情况,这是做不到的,因为将来的点周围没有数据集。所以用这种方法每次预测均需要事先选取出对应的数据子集。该算法解出的回归系数θ形式如下:
LWLR用“核”来对附近的点赋予权重。核的类型可以自由选择,最常用的核就是高斯核,高斯核对应的权重如下:
这样就构建了一个只含对角元素的权重矩阵,并且可以看出点x与x(i)越近,w(i,i)就越大。上述公式的k是用户指定的,它决定了对附近的点赋予多大的权重。权重关系如下图:摘自机器学习实战p142
从图中可以看出k值越小,有效的局部点就越少。
补充完我们就要进入今天的正题了
刚开始,我们看到回归二字,很容易被迷惑,认为它也是一个回归问题。错!它是一个用来分类的方法。
Logistic回归用到的函数时Logistic函数,也就是Sigmoid函数,函数形式如下:
其中z是一个线性组合。
则 z<0,y=0; z=0,y=0.5;z>0,y=1;
所以Logistic回归解决的是线性问题还是非线性问题,取决于z的线性。这里要提一下,如果x是平方或者三次方,它仍属于线性问题。因为x的三次方仍可以看做一个变量x3,只有当关于θ的函数为非线性时,这才是一个非线性问题。因为我们要求的θ值。
接下来就是损失函数了,这里我们用的是交叉熵损失函数。为什么不用欧氏距离也即差平方损失函数了呢?原因有二
1.Sigmoid函数差平方为非凸优化函数。
2.有时候得到的概率值是有用的。
交叉熵损失函数是信息论里的概念,大致可以概括为当预测的概率接近实际的概率那么它的交叉熵就会越小(这里我想到香农定义的熵的概念用来衡量信息混乱程度,熵越大说明包含的信息越多,即信息越混乱),交叉熵刻画的是实际输出(概率)与期望输出(概率)的距离,我举个例子就可以方便理解。
交叉熵的公式:
假设N=3,期望输出为p=(1,0,0),实际输出q1=(0.5,0.2,0.3),q2=(0.8,0.1,0.1),那么
H(p,q1) = -(1*log0.5+0*log0.2+0*log0.3)
H(p,q1) = 0.3
H(p,q1) = -(1*log0.8+0*log0.1+0*log0.1)
H(p,q2)= 0.1
显然q2和p更为接近,它的交叉熵也更小了。所以我们最小化交叉熵就好。交叉熵还有另外一种表达形式
其结果为:
H(p,q1) = -(1*log0.5+0*log0.2+0*log0.3+0*log0.5+1*log0.8+1*log0.7)=0.55
H(p.q2) = -(1*log0.8+0*log0.1+0*log0.1+0*log0.2+1*log0.9+1*log0.9)=0.19
通过这些例子就大体可以理解,交叉熵的原理。
优点:
1.它直接对分类可能性进行建模,无需实现假设数据分布,这样就避免了假设分布不准确所带来的问题;
2.它不是仅预测类别,而是可得到近似概率预测,这对许多需要利用概率辅助决策的任务很有用,比如softmax;
3.对率函数是任意阶可导的函数,有很好的数学性质,求导的结果很漂亮,现有的许多数值优化算法都可直接用于求取最优解。