回归问题中关于cost function 的选择

来源:互联网 发布:固态用软件优化 编辑:程序博客网 时间:2024/04/30 15:59
1 回归问题

回归在数学上来说是给定一个点集,能够找一条曲线去拟合。
这里面的“找一条”曲线不是漫无边际的找,而是先假定曲线的形式,如:直线、二次曲线等等,然后来学习确定曲线的各项参数。

一方面,算法没有那么神奇,不能够告诉我们用什么类型的曲线拟合最好;另一方面,如果最初的假定就错了(用直线拟合最好,但是认为选择了二次曲线),
最终的效果也是不好的。

2 线性回归

就是通过学习一条直线来拟合样本点。在二维平面上,直线的形式为 y = ax + b,就是学习参数a和b。在N维平面上,形式为 y = a1x1 + a2x2 + ...... + b,学习a1...an-1和b

(当然,y也可以是x的非线性函数,如:y = a * x^2,非线性回归的处理方式和线性回归类似)

在现实中,这种模型有缺点:
xi是模型输入,在现实中,模型的输入多种多样,连续值、离散值、枚举值;而且输入的范围差别很大。如:室外温度的范围[-50, 50],某概率的范围[0, 1],等等。

数值大的输入在实际计算中往往就使得输入范围小的输入的作用可以忽略不计了。而且,这还是拟合问题,在实际中分类问题更有价值。这就产生了3,逻辑回归模型。

3 逻辑回归

学习y = a1x1 + a2x2 + ...... + b,做如下变换:令 y = log( p / (1-p) )
其中p是[0, 1]之间的数值,可以认为是某件事情发生的可能性——注意,不是概率,p不满足概率归一化条件。换个稍稍正规点儿的说法,就是p的概率密度在[-无穷, +无穷]上面的积分(面积)不等于1,实际上积分值是正无穷。变换后得到:


这就是最后逻辑回归模型的函数形式,也叫做sigmoid函数。

可以看到,p在[0, 1]之间,输入是整个实数域,曲线连续、可导。

在解决二分类问题的时候,可以设定一个阈值,当 p > 阈值 的时候,分为类别A;否则,分为类别B(阈值可设为0.5)。

4 cost function

模型有了,怎么学习其中的参数?无论是应用在曲线拟合上面还是用在分类上面,给一堆样本,怎么学呢?

首先会面临个问题,就是什么模型才算做一个好模型?这个就是cost function的任务了。常用的cost function有如下几种:
(1)0-1损失函数,当 模型输出值=样本值,则为1,否则为0
(2)平方损失函数,(模型输出值 - 样本值)^2
回归问题通常用的是平方损失函数,其背后的物理意义是假设偏离预测曲线的样本点与预测曲线的差别满足正态分布。


(3)绝对值损失函数,|模型输出值 - 样本值|
(4)对数损失函数,log (Y_模型输出)


斯坦福公开课是这样理解Cost Function的,首先看当y=1的情况:


直观来看, 如果y = 1, hθ(x)=1,则Cost = 0,也就是预测的值和真实的值完全相等的时候Cost =0;

但是,当hθ(x)0  时, Cost直观来看,由于预测的结果南辕北辙:

如果hθ(x)=0, 也就是预测P(y=1|x;θ)=0, 也就是y=1的概率是0,但是实际上y = 1。

因此对于这个学习算法给予一个很大的Cost的惩罚。

同理对于y=0的情况也适用:



对于线性回归来说,比较适合于目标值是连续值的场景,而逻辑回归适用于目标值是离散值场景,因此LR也被看做分类问题,对于线性函数y = w * x + e, 其中假设误差e是服从正态分布,这是因为影响误差的因素有很多,这些因素都是随机分布,根据中心极限定理,许多独立随机变量的和服从正态分布,因此假设了误差e是服从正态分布,这也导致目标值y 也服从正态分布,因此我们对样本数据集求极大似然估计时候,通过对数处理,可以发现似然问题可以转化为求误差平方和最小的问题,即最小二乘问题,所以我们利用平方损失函数,通过最小二乘法 结合梯度下降等优化算法,来求得模型参数

逻辑回归用的是对数损失函数,为什么不用平方损失函数?因为逻辑回归应用到分类问题上面,输出值y是离散的,而且是二值的,只有0或者1。这个可以对应到二项分布上,而二项分布用对数损失函数更直观。
结合逻辑回归,对数损失函数的形式是:
cost = - logY {if y = 1} or - log (1 - y) {if y = 0}
细化到每个输入变量xi,则:
cost = (1/m) * sum_m (样本值 * log (y(xi)) + (1 - 样本值) * log(1-y(xi)))

5 训练方法

可用梯度下降,此外还有共轭梯度、拟牛顿法、BFGS、L-BFGS等。
具体又细分为批量学习(梯度下降)和在线学习(online learning,随机梯度下降)。

批量学习就是一次处理所有的样本——计算模型输出与样本之间的差别、计算梯度、用步长alpha来更新参数......这种方法有个缺点,就是当模型接近最优的时候,更新幅度会显得很大(实际使用中alpha的值会随着迭代次数衰减),导致模型性能会在最优点发生震荡;还有就是容易陷入局部最优解。

在线学习就是随机梯度下降法,更新权重的公式与上面一样,只不过每次针对一个样本来更新所有权重。
需要说的是,虽然线性回归和逻辑回归的目标问题不同、cost function不同、输出不同(线性回归输入连续值、逻辑回归输出离散值),但是最终推到出来的权重更新公式完全一样。


0 0
原创粉丝点击