线性回归(机器学习)
创始人
2024-01-28 15:57:28
0

 

用神经网络的思维来看待线性回归


        单层的神经网络,其实就是一个神经元,可以完成一些线性的工作,比如拟合一条直线,这用一个神经元就可以实现。

        当变量多于一个时,两个变量的量和数值有可能差别很大,这种情况下,我们通常需要对样本特征数据做归一化,然后把数据喂给神经网络进行训练。

一元线性回归模型


回归分析是一种数学模型。当因变量和自变量为线性关系时,它是一种特殊的线性模型。

最简单的情形是一元线性回归,由大体上有线性关系的一个自变量和一个因变量组成,模型是:

 

 

X 是自变量,Y 是因变量,ε 是随机误差,a 和 b 是参数,在线性回归模型中,a,b 是我们要通过算法学习出来的。

公式: 

 

线性回归问题


我们接下来会用几种方法来解决这个问题:

  1. 最小二乘法;
  2. 梯度下降法;
  3. 简单的神经网络法;
  4. 更通用的神经网络算法;

 这三者的主要区别是样本数据 X 的形状定义,相应地会影响到 W 的形状定义。

最小二乘法


1、线性特性

所谓线性特性,是指估计量分别是样本观测值的线性函数,亦即估计量和观测值的线性组合 。

2、无偏性

无偏性,是指参数估计量的期望值分别等于总体真实参数  。

3、最小方差性

所谓最小方差性,是指估计量与用其它方法求得的估计量比较,其方差最小,即最佳。最小方差性又称有效性。这一性质就是著名的高斯一马尔可夫( Gauss-Markov)定理。这个定理阐明了普通最小二乘估计量与用其它方法求得的任何线性无偏估计量相比,它是最佳的 [10]  。

代码实现


计算W值 

# method1
def method1(X,Y,m):x_mean = X.mean()p = sum(Y*(X-x_mean))q = sum(X*X) - sum(X)*sum(X)/mw = p/qreturn w# method2
def method2(X,Y,m):x_mean = X.mean()y_mean = Y.mean()p = sum(X*(Y-y_mean))q = sum(X*X) - x_mean*sum(X)w = p/qreturn w# method3
def method3(X,Y,m):p = m*sum(X*Y) - sum(X)*sum(Y)q = m*sum(X*X) - sum(X)*sum(X)w = p/qreturn w

计算b值

# calculate_b_1
def calculate_b_1(X,Y,w,m):b = sum(Y-w*X)/mreturn b# calculate_b_2
def calculate_b_2(X,Y,w):b = Y.mean() - w * X.mean()return b

梯度下降法


数学原理

线性函数:

 

损失函数(Loss Function):

 

梯度下降法和最小二乘法的模型及损失函数是相同的

都是一个线性模型加均方差损失函数,模型用于拟合,损失函数用于评估效果。

两者的区别在于:最小二乘法从损失函数求导,直接求得数学解析解,而梯度下降以及后面的神经网络,都是利用导数传递误差,再通过迭代方式一步一步(用近似解)逼近真实解。

梯度下降法代码的实现


if __name__ == '__main__':reader = SimpleDataReader()reader.ReadData()X,Y = reader.GetWholeTrainSamples()eta = 0.1w, b = 0.0, 0.0for i in range(reader.num_train):# get x and y value for one samplexi = X[i]yi = Y[i]# 公式1zi = xi * w + b# 公式3dz = zi - yi# 公式4dw = dz * xi# 公式5db = dz# update w,bw = w - eta * dwb = b - eta * dbprint("w=", w)    print("b=", b)

神经网络法


神经网络做线性拟合的原理,即:

  1. 初始化权重值
  2. 根据权重值放出一个解
  3. 根据均方差函数求误差
  4. 误差反向传播给线性计算部分以调整权重值
  5. 是否满足终止条件?不满足的话跳回2

 输入层


 神经元在输入层的输入特征

权重 w,b


一元线性问题,所以 w,b 都是标量。

输出层


输出层 1 个神经元,线性预测公式是:

zi = xi ⋅ w + b

z 是模型的预测输出,y 是实际的样本标签值,下标 i 为样本。

 反向传播


 

定义类

class NeuralNet(object):def __init__(self, eta):self.eta = etaself.w = 0self.b = 0

前向计算

def __forward(self, x):z = x * self.w + self.breturn z

反向传播

def __backward(self, x,y,z):dz = z - ydb = dzdw = x * dzreturn dw, db

梯度更新

def __update(self, dw, db):self.w = self.w - self.eta * dwself.b = self.b - self.eta * db

梯度下降的三种形式


单样本随机梯度下降、小批量样本梯度下降、全批量样本梯度下降

相关内容

热门资讯

淘宝网开店淘宝网开店的小本创业... 新店新手最好做虚拟的(最基本的投资只有300元)因为实物的要找货源进货,卖不出货就造成压货,投资有风...
县城小本创业项目做什么 县城小... 随着经济社会不断向前发展,互联网技术也得到了迅速提升,技术创新为互联网革新带来了契机,创业活动尤其是...
适合穷人的小我想创业有小本创业... 很多人都会觉得创业是富人该想该做的事情,穷人是没有条件和机会创业的,可是事实上现在创业不是光靠资本就...
09年小本创业好项目 09年小... 最佳答案cbu-的答复:尽量减少投入太多资金,以回本快为第一原则,金融危机下尽量选择和百姓的生活相关...
小本创业09年小本创业好项目好... 小本创业好项目有哪些?可以选择一些投资费用比较少的项目,最好是人们刚需的用量大,自然收入稳定。例如:...
小本创业好项目价格 小本创业好... 延伸阅读年青人创业找项目年轻人六大创业好项目1574人年青人敢闯敢拼的精神才是创业最需要的,现在年青...
2018小本创业推荐 本小利大... 照片书优势:1.照片书是一个新项目,整体竞争小目前微商遍地都是化妆品、护肤品、内衣、面膜等产品,主要...
小本创业项目最新排行榜 小本创...   :幼儿园农村人现在也注重孩子的早期教育,如果你能歌善舞,富有爱心,家里住房宽敞,可考虑开办一家幼...
适合90后做的小本创业项目有哪... 90后创业首选奶茶行业,零基础也没有关系,加盟总部会全程扶持,包括技术和设备。接下来说一下开一家co...
2016适合女性在乡镇开的十五... 2016适合女性开的十五种店:旅游景区的小驿店,酷热难耐的夏天人们都在周末到海岛渡假,洗海水浴的同时...