diff --git a/ML-notes-md/2_Regression Case Study.md b/ML-notes-md/2_Regression Case Study.md index 61b8ece..89cda61 100644 --- a/ML-notes-md/2_Regression Case Study.md +++ b/ML-notes-md/2_Regression Case Study.md @@ -109,6 +109,37 @@ $$ L(f)=L(w,b)=\sum_{n=1}^{10}(\widehat{y}^n-(b+w \cdot {x}^n_{cp}))^2$$ 比如图中用红色箭头标注的点就代表了b=-180 , w=-2对应的function,即$y=-180-2 \cdot x_{cp}$,该点所在的颜色偏向于红色区域,因此这个function的loss比较大,表现并不好
loss-figure
+ +```c +/* +数据拟合中,为什么要让模型的预测数据与实际数据之差的平方而不是绝对值和最小来优化模型参数? + +首先,我们来考虑数据拟合的实际状况:当我们寻找模型来拟合数据时,偏差是不可避免的存在的。对一个拟合良好的模型而言,这个偏差整体应该是符合正态分布的,这里可能你会问为什么是正态分布?其实这就是个假设,你用什么分布就要在后续的计算中运用相应分布的概率密度函数,而偏差这种东西符合什么分布最靠谱呢?如果你喜欢扔硬币的话就知道硬币一面出现的概率就是0.5,你扔多次某一面出现的次数的概率就是个二项分布,这是离散的,你扔硬币的次数趋向正无穷再来看这个分布就是正态分布。这之间的证明过程涉及斯特林公式神马的,其实这个推导是在一定条件下完成的,想了解的自行放狗。如果你认同这种0.5概率的扔硬币,那么可以假想理想的偏差也是跟硬币某一面出现的概率分布差不多就行了,至于再深入考虑为什么,那就基本是形而上学的东西了,自便。 + +现在,我们已经知道偏差符合正态分布,那么下一步就是理解另外一种函数——极大似然函数。在模型拟合中,极大似然函数的本质就是让我们用来拟合数据的模型与每一个数据点的更为相符,这就要求偏差的大小应该是基本一致,或者说符合正态分布,那么偏差大小基本一致与不一致怎么区别呢?这里我们用偏差出现的概率相乘的大小来表示。因为概率大小都在0到1之间并符合期望为x的正态分布,两个偏差值越接近中心期望x,乘积越大。极大似然函数就是用来表示这一关系的,当然在这里联乘的形式可以取对数改为概率求和,如果你还有印象的话,正态分布的概率密度函数是欧拉数的幂函数形式,而幂中有一个负号有一个平方,平方就是偏差的平方,负号则将原来求最大值变成了求最小值,这时候反过来看这个极大似然函数的求解其实就是最小二乘法。 + +本质上来说,模型拟合都可以用极大似然函数求最值来表示,如果你能想办法把你想键的模型转为一个寻优问题,那就可以通过求导等数学方法来解决了,但千万要注意:并不是所有的模型都可以有最优解,有些只有局部最优,有些则压根找不到,需要足够聪明的人转为对偶的凸函数或其他可解的问题才能寻优,此外,数学上证明了的NP-hard问题就别尝试了,更不要尝试NPC问题了。 + +好了,现在我大概说明白了为什么用平方和了,本质上就是正态分布的概率密度函数所致,那么为什么不是绝对值的和呢?简单说绝对值的和无法转化为一个可解的寻优问题,既然无法寻优如何得到恰当的参数估计呢?就这么简单。 + +关于最小二乘,刘未鹏在讲解贝叶斯定律(http://mindhacks.cn/2008/09/21/the-magical-bayesian-method/)时也提到过,他从贝叶斯定律而不是极大似然的角度给出了与本文基本一致的解释,可谓殊途同归: + +学过线性代数的大概都知道经典的最小二乘方法来做线性回归。问题描述是:给定平面上 N 个点,(这里不妨假设我们想用一条直线来拟合这些点——回归可以看作是拟合的特例,即允许误差的拟合),找出一条最佳描述了这些点的直线。 + +一个接踵而来的问题就是,我们如何定义最佳?我们设每个点的坐标为 (Xi, Yi) 。如果直线为 y = f(x) 。那么 (Xi, Yi) 跟直线对这个点的“预测”:(Xi, f(Xi)) 就相差了一个 ΔYi = |Yi – f(Xi)| 。最小二乘就是说寻找直线使得 (ΔY1)^2 + (ΔY2)^2 + .. (即误差的平方和)最小,至于为什么是误差的平方和而不是误差的绝对值和,统计学上也没有什么好的解释。然而贝叶斯方法却能对此提供一个完美的解释。 + +我们假设直线对于坐标 Xi 给出的预测 f(Xi) 是最靠谱的预测,所有纵坐标偏离 f(Xi) 的那些数据点都含有噪音,是噪音使得它们偏离了完美的一条直线,一个合理的假设就是偏离路线越远的概率越小,具体小多少,可以用一个正态分布曲线来模拟,这个分布曲线以直线对 Xi 给出的预测 f(Xi) 为中心,实际纵坐标为 Yi 的点 (Xi, Yi) 发生的概率就正比于 EXP[-(ΔYi)^2]。(EXP(..) 代表以常数 e 为底的多少次方)。 + +现在我们回到问题的贝叶斯方面,我们要想最大化的后验概率是: + +P(h|D) ∝ P(h) * P(D|h) + +又见贝叶斯!这里 h 就是指一条特定的直线,D 就是指这 N 个数据点。我们需要寻找一条直线 h 使得 P(h) * P(D|h) 最大。很显然,P(h) 这个先验概率是均匀的,因为哪条直线也不比另一条更优越。所以我们只需要看 P(D|h) 这一项,这一项是指这条直线生成这些数据点的概率,刚才说过了,生成数据点 (Xi, Yi) 的概率为 EXP[-(ΔYi)^2] 乘以一个常数。而 P(D|h) = P(d1|h) * P(d2|h) * .. 即假设各个数据点是独立生成的,所以可以把每个概率乘起来。于是生成 N 个数据点的概率为 EXP[-(ΔY1)^2] * EXP[-(ΔY2)^2] * EXP[-(ΔY3)^2] * .. = EXP{-[(ΔY1)^2 + (ΔY2)^2 + (ΔY3)^2 + ..]} 最大化这个概率就是要最小化 (ΔY1)^2 + (ΔY2)^2 + (ΔY3)^2 + .. 。 熟悉这个式子吗? + +OK,到此结束,概率论就是个坑啊! +``` + + ##### Step3:Pick the Best Function 我们已经确定了loss function,他可以衡量我们的model里面每一个function的好坏,接下来我们要做的事情就是,从这个function set里面,挑选一个最好的function @@ -453,4 +484,4 @@ $$ 相对来说,L2要更稳定一些,L1的结果则不那么稳定,如果用p表示正规化程度,上面两式可总结如下:$L=\sum\limits_{i=1}^n(\widehat{y}^i-y^i)^2+\lambda\sum\limits_{j}(w_j)^p$ -
L1-L2
\ No newline at end of file +
L1-L2