广义线性模型中的普通最小二乘法(MSE转换成最大似然估计)

1、广义线性模型的介绍

当一个y可能由多个x决定时,且y与x中有多重线性关系时,我们定义线性回归公式为:

广义线性模型中的普通最小二乘法(MSE转换成最大似然估计)_第1张图片

在拟合这样的一个拟合一个带有系数 w = (w_1, …, w_M) 的线性模型时,根据MSE,我们使得数据集实际观测数据和预测数据(估计值)之间的残差平方和最小。其数学表达式为:
广义线性模型中的普通最小二乘法(MSE转换成最大似然估计)_第2张图片

要求出最适合的模型,只需求出MSE(该表达式)的最小值即可
在此,我们引入最大似然估计和中心极限定理的的概念:

最大似然估计是一种统计学方法,它用来求一个样本集的相关概率密度函数的参数。

中心极限定理是谈论随机变量的序列和分布渐进于正态分布的一类定理。(个人理解,就是当一组变量随机抽取且变量之间无关系或关系很小时,他们的分布是近似于正态分布的。)

在此我们再引入正态分布的概率密度函数,所谓概率密度函数,就是变量与拟合成功概率的函数,其中x指变量,y指x拟合成功的概率。
广义线性模型中的普通最小二乘法(MSE转换成最大似然估计)_第3张图片

接下来我们将线性回归预测中的误差值带入正态分布的概率的密度公式,并求出各点概率密度乘积的最大值,如下图。

广义线性模型中的普通最小二乘法(MSE转换成最大似然估计)_第4张图片

又因为ln函数也是单调递增函数,我们采用ln简化目标函数,最终结果如下图的L():

广义线性模型中的普通最小二乘法(MSE转换成最大似然估计)_第5张图片

当将L()简化成J()时,通过对L()的观察我们可以发现L()=A-J(),故求L()最大等价于求J()最小

接下来再去用线性代数的运算方法简写J()

广义线性模型中的普通最小二乘法(MSE转换成最大似然估计)_第6张图片

接下来我们求J()的驻点,对J()求导
广义线性模型中的普通最小二乘法(MSE转换成最大似然估计)_第7张图片

写到最后我们终于求出了目标参数的解析公式,接下来我们用代码实现该公式

代码块

代码块语法遵循标准markdown代码,例如:

import numpy as  np
#把numpy命名为np
import matplotlib.pyplot as plt
#数据创建
X = 2*np.random.rand(100,1)
#随机创建了一个100行一列的数据向量x,其中x属于0到2
Y = 4+3*X+np.random.randn(100,1)

X_b= np.c_[np.ones((100,1)),X]
#代入目标函数公式
theta_best = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(Y)

print(theta_best)

X_new = np.array([[0],[2]])

X_new_b = np.c_[(np.ones((2,1))),X_new]

print(X_new_b)

y_predict = X_new_b.dot(theta_best)

print(y_predict)
#绘图模块
plt.plot(X_new,y_predict,'r-')
plt.plot(X,Y,'b.')
plt.axis([0,2,0,15])
plt.show()

最后实现的结果如图

广义线性模型中的普通最小二乘法(MSE转换成最大似然估计)_第8张图片

把这个东西搞懂弄懂讲懂还是 挺累的,欢迎各位指正。
广义线性模型中的普通最小二乘法(MSE转换成最大似然估计)_第9张图片

你可能感兴趣的:(广义线性模型中的普通最小二乘法(MSE转换成最大似然估计))