线性回归中最大似然法的理解

线性回归中使用最大似然法的文章蛮多的,这两天看了一些,总觉得有些“跳跃”的地方让人难以理解,现在把整个过程记录下来以便日后查阅,好记性不如烂笔头。。。
关于最大似然法已经写了一篇了: https://blog.csdn.net/weixin_43909872/article/details/85255130

线性回归 :
这里只分析一个independent variable(x轴)的情况,我们有了一系列的(x,y)的点,现在要拟合出一个直线方程:
y = w

线性回归中最大似然法的理解_第1张图片
从上图可以看出,无论我们选取怎样的W值,都不可能完美符合所有的点,肯定会有误差
而这个误差ε表示如下
在这里插入图片描述
表达在图形里就是(灵魂画师):
线性回归中最大似然法的理解_第2张图片

这个误差呢,他是符合正态分布的(虽然我不知道为啥),正态分布的公式我们再回顾下:
在这里插入图片描述
注意里面的x-μ,其实μ就是平均值啊
ε的平均值应该是0,那么带入上面的公式我们得到:
在这里插入图片描述

f(x)是关于W,X和Y还有σ的概率密度函数,那么:

a. 我们开始构造似然函数,也就是所有给定的X,Y出现的概率,把w,X,Y都替换成了矩阵运算:
线性回归中最大似然法的理解_第3张图片
b. 整理函数,取对数,方便求导
在这里插入图片描述

c.对W求导
线性回归中最大似然法的理解_第4张图片
d.解似然函数
在这里插入图片描述
线性回归中最大似然法的理解_第5张图片

下面附上运算结果和python代码
W = [[3.07154248]
[0.49805919]]

import numpy as np
import matplotlib.pyplot as plt
import math
import random
# prepare 50 sample points
x = np.arange(0, 100, 2)
xArr = []
yArr = []
for i in x:
    lineX = [1]
    lineX.append(i)
    xArr.append(lineX)
    yArr.append( 0.5 * i + 3 + random.uniform(0, 1) * 4 *math.sin(i) )

# Calculate the W value
xMat = np.mat(xArr)
yMat = np.mat(yArr).T

xTx = xMat.T * xMat
if np.linalg.det(xTx) == 0.0:
    print ("Can't inverse")
ws = xTx.I * xMat.T * yMat
print(ws)

y = xMat * ws

# Draw the result
plt.title("linear regression")
plt.xlabel("independent variable")
plt.ylabel("dependent variable")
plt.plot(x, yArr, 'go')
plt.plot(x, y, 'r', linewidth = 2)
plt.show()

你可能感兴趣的:(线性回归中最大似然法的理解)