zoukankan      html  css  js  c++  java
  • 线性回归——最大似然函数

    似然函数

      似然函数与概率非常类似但又有根本的区别,概率为在某种条件(参数)下预测某事件发生的可能性;而似然函数与之相反为已知该事件的情况下推测出该事件发生时的条件(参数);所以似然估计也称为参数估计,为参数估计中的一种算法; 下面先求抛硬币的似然函数,然后再使用似然函数算出线性回归的参数;
      假如有一枚硬币我们现在不知道它是否为正常硬币(正反面出现概率各位50%),所以想通过抛10次然后通过硬币正反面出现的概率分布判断该硬币是否正常;当抛完10次时出现5次正面向上、5次反面向上,正反面出现的概率符合正常硬币的预期,这时我们可以判断该硬币是正常的;

      抛硬币符合二项分布所以下面计算出概率分布情况:
      

      如图:
        

        上图中x轴为正面出现的次数,y轴为上述函数的结果

      上面式子中w为正反面出现的比例,y为正面出现的次数;

    使用最大似然法求硬币问题

      似然函数为知道了结果求条件,概率问题为知道了条件求概率,在这个问题中就是知道了硬币是正常的,求正反面出现的比例w为何值时该结果最靠谱;所以似然函数等于:

        

      函数左边的值并非条件概率中的条件而是该函数的依赖值,似然函数L为在给定结果y的情况下参数w的取值情况,概率函数L为知道了参数w求得y的取值;有了抛硬币情况的概率分布这里就可以给出似然函数

      

      似然函数求的是在给定样本向量y的情况下,符合该概率分布的参数向量w取值可能性;该似然函数求的是在w取何值时y=5的可能性更高;就问题而言就是求w取何值时的最大值,就如之前梯度下降法一样,求该函数的偏导数就可以求得极大值; 由于直接求偏导数比较复杂,通常情况下都会求对数似然函数,对数函数为单调递增的所以与似然函数具有同样的最大值,该对数似然函数为:

      

      下面对该似然对数进行求关于w的偏导数:

      

      要求其最大值就是求该导数的拐点,也就是令函数等于0;

      

      通过求L关于w的偏导数求得w=0.5,于我们上面概率中的w时一致的,也就是说当w=0.5时y正面出现的次数等于5的可能性是最高的;

    线性回归

      通过前面几篇文章我们知道了线性回归的模型为:

      

      为误差值,所以我们也可以变为:

      

      代表的是误差,我们知道模型与实际的结果值时一个连续随机变量,也就是说损失函数(loss function)的值时连续随机变量,也就是,模型不可能考虑到所有的特征那也可能就过拟合了所以就会存在噪音,一般来说多种噪音叠加会呈现出正态分布的所以这里假设是正态分布的,训练模型的数据集中肯定不止一条记录,但结果只有一个,所以可以假设每条记录误差都是独立同分布的;

      所以线性回归的概率密度函数为:

      

      则似然函数为:

      

      上面假设过每条记录误差都是独立同分布的,所以数据集的联合密度为:
      

      按照惯例直接求解似然函数比较麻烦所以求解对数似然函数:

      
      
      
      
      

      然后求L关于w的偏导数,令其等于0求拐点
      

      把式子转为向量形式:
      

      所以
      

      到这一步我们已经求得到了,这与前面我们通过最小二乘法求得的矩阵方程一样,所以w也一定是我们这里求得的w正确解;

      使用最大似然法求解问题的步骤为:
        一、确定问题的随机变量类型是离散随机变量还是连续随机变量
        二、得出问题的概率分布
        三、概率函数转为似然函数
        四、似然函数取对数
        五、求关于某变量的偏导数
        六、解似然方程

    参考资料:
    http://zh.wikipedia.org/zh-hans/似然函数
    a first course in machine learning

    文章首发地址:Solinx
    http://www.solinx.co/archives/800

  • 相关阅读:
    从零实现一个http服务器
    服务器端编程心得(七)——开源一款即时通讯软件的源码
    服务器端编程心得(六)—— 关于网络编程的一些实用技巧和细节
    服务器编程心得(五)—— 如何编写高性能日志
    以芯片直读方式得到的Android全盘镜像解析——DOS分区
    一款开源数据恢复工具——scalpel
    以芯片直读方式得到的全盘镜像解析及ext4日志区域解析——GPT分区
    Linux程序设计之shell程序设计
    算法——蛮力法之最近对问题和凸包问题
    算法——蛮力法之顺序查找和蛮力字符串匹配
  • 原文地址:https://www.cnblogs.com/softlin/p/6219372.html
Copyright © 2011-2022 走看看