机器学习_线性回归(代码片段)

yd2018 yd2018     2022-12-22     684

关键词:

线性回归

 

人工智能是机器学习的父类;机器学习是深度学习的父类

 

1. 怎么做线性回归?

2. 理解回归 -- 最大似然函数

3. 应用正态分布概率密度函数 -- 对数总似然

4. 推导出损失函数 -- 推导出解析解        

5. 代码实现解析解的方式求解 -- 梯度下降法的开始 -- sklearn模块使用线性回归

 

线性: y = a * x         一次方的变化

回归:回归到平均值

 

简单线性回归

算法 = 公式

 

一元一次方程组

一元:一个x   影响y的因素,维度

一次:x的变化    没有非线性的变化

y = a * x + b

x1,y1        x2,y2        x3,y3        x4,y4 ...

误差最小的 -- 最优解

 

做机器学习,没有完美解,只有最优解

做机器学习就是要以最快的速度,找到误差最小的最优解

 

一个样本的误差:

yi^ - yi

找到误差最小的时刻;为了去找到误差最小的时刻,需要反复尝试,a,b

根据 最小二乘法 去求得误差

反过来误差最小时刻的a,b就是最终最优解模型!!!

 

 

===========================================================================

 

多元线性回归

y = a*x+b

y = w0+w1*x1+w2*x2

向量转置相乘x0=1

不止两个特征

截距(w0),什么都不做,本身就存在那里(物体本身就漂亮,不加修饰也漂亮)

x1...xn:n个特征

本质上就是算法(公式)变换为了多元一次方程组

y = w1 * x1 + w2 * x2 + w3 * x3 + ... +wn * xn + w0 * x0        (x0恒为1时可不写)

 

 

===========================================================================

 

最大似然估计:

是一种统计方法,用来求一个样本集的相关概率密度函数的参数

‘似然’(likelihood):即‘可能性’,通俗易懂叫法:‘最大可能性估计’

likelihood 与 probability 同义词

 

 

 

 

中心极限定理:

  • 是概率论中讨论 随机变量 序列部分和分步渐进于正态分布的一类定理

 

误差(ε):

  • 第i个样本实际的值 等于 预测的值 加 误差

 

  • 假定所有的样本都是独立的,有上下的震荡,震荡认为是随机变量,足够多 的随机变量叠加之后形成的分布,根据中心极限定理,它服从的就是正态分布,因为它是正常状态下的分布

 

最小二乘法:

 

概率密度函数:

最简单的概率密度函数:均匀分布的密度函数,

 技术分享图片

 

一维正态分布

若随机变量X服从一个位置参数为μ、尺度参数为σ的概率分布,且其概率密度函数为

 技术分享图片

 

 

则这个随机变量就称为正态随机变量,正态随机变量服从的分布就称为正态分布

 

标准正态分布

当μ=0,σ=1时,正态分布就成为标准正态分布:

 技术分享图片

 

求总似然:

 技术分享图片

 

 

因为连乘太麻烦,故想到用log函数使得连乘变成相加,log函数为单调递增函数,故可以.

 技术分享图片

 

 

通过最大似然估计的思想,利用了正态分布的概率密度函数,推导出了损失函数

 

误差函数的另一种表达:

 技术分享图片

 

找损失最小的过程就是求极值的过程(导数为0)

 技术分享图片

 

 

解析解:

 技术分享图片

 

 

总结:

(1) 为什么求总似然的时候,要用正态分布?

中心极限定理,如果假设样本之间是独立事件,误差变量随即产生,那么就服从正太分布.

 

(2) 总似然不是概率相乘吗?为什么用了概率密度函数的f(xi)进行了相乘?

因为概率不好求,所以当我们可以找到概率密度相乘最大的时候,就相当于找到了概率相乘最大的时候.

 

(3) 概率为什么不好求?

因为求的是面积,需要积分,麻烦。不用去管数学上如何根据概率密度函数去求概率.

 

(4) 总似然最大和最优解有什么关系?

当我们找到可以使得总似然最大的条件,也就是可以找到我们的DataSet数据集最吻合某个正态分布,即找到了最优解

 

通过最大似然估计的思想,利用了正态分布的概率密度函数,推导出了损失函数

 

(5) 什么是损失函数?

一个函数最小,就对应了模型是最优解,预测历史数据可以最准.

 

(6) 线性回归的损失函数是什么?

最小二乘法;MSE(mean squared error)[平方均值损失函数,均方误差]

 

 

(6) 线性回归的损失函数有哪些假设?

样本独立;随机变量;服从正态分布

 

(7) ML学习特点:

不强调模型100%正确;

强调模型是有价值的,堪用的.

 

通过对损失函数求导,来找到最小值,求出θ的最优解;

 

 

代码实现解析解的方式求解

 

import numpy as np
import matplotlib.pyplot as plt
 
#这里相当于是随机X维度X1,rand是随机均匀分布
#rand():返回0-1之间的数
X=2*np.random.rand(100,1)#100行1列
 
#人为的设置真实的Y一列,np.random.randn(100,1)是设置error(方差),randn是标准正态分布
#np.random.randn(100,1)返回标准正态分布上的一个随机值,取0的概率比较大一些
#(4+3*X)是预测值、np.random.randn(100,1)是误差ε
#预测值==W的转置*X
#4==W0;3==W1
y=4+3*X+np.random.randn(100,1)#100行1列
 
#整合X0和X1
#np.ones(100,1)输出100行1列个1
X_b=np.c_[np.ones((100,1)),X]
print(X_b)
 
#常规等式求解θ(theta)
#inv:求逆、dot:点乘、.T:转置
theta_best=np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y)
 技术分享图片

 

print(theta_best)
 技术分享图片

 

#创建测试集里面的X1
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)
‘‘‘
[[3.98173243]
[10.17046616]]
‘‘‘
 技术分享图片

 


 
 
plt.plot(X_new,y_predict,r-)
plt.plot(X,y,b.)
plt.axis([0,2,0,15])#标注x轴的范围是0-2,y的范围是0-15
plt.show()
 技术分享图片

 


 
 
实际上当数据特别多的时候,用上述方法求解特别慢
 

 

机器学习线性回归api快速入门(代码片段)

目录1线性回归API2举例2.1步骤分析2.2代码过程3小结1线性回归API机器学习线性回归简介:https://blog.csdn.net/ZGL_cyy/article/details/126918295sklearn.linear_model.LinearRegression()LinearRegression.coef_:回归系数2举例2.1步骤分析1.获取数据 查看详情

机器学习线性回归(回炉重造)(代码片段)

机器学习---线性回归1.简单线性回归2.多元线性回归3.线性回归的正规方程解4.衡量线性回归的性能指标MSERMSEMAER-Squared5.scikit-learn线性回归实践-波斯顿房价预测LinearRegression线性回归是属于机器学习里面的监督学习,与分类问题... 查看详情

机器学习:线性回归——理论与代码实现(基于正规方程与梯度下降)(代码片段)

一线性模型给定由n个属性描述的列向量(f(mathbfx)=(x^(1);x^(2);...;x^(n))),其中(x^(j))是( extbfx)在第(j)个属性的取值。线性模型即为通过对属性进行线性组合的函数,即[f(mathbfx)=w_0+w_1x^(1)+...+w_nx^(n)]写成向量形式如下:[f( extbf 查看详情

机器学习线性回归(代码片段)

线性回归一、单变量线性回归1.假设函数(HypothesisFunction)因为只含有一个特征/输入变量,因此这样的问题叫作单变量线性回归问题:hθ(x)=θ0+θ1xh_\\theta(x)=\\theta_0+\\theta_1xhθ​(x)=θ0​+θ1​x假设有以下的训练集,... 查看详情

线性回归模型|机器学习(代码片段)

目录1.线性回归模型1.1一元线性回归模型1.2多元线性回归模型1.3损失函数2.相关代码2.1LinearRegression类2.2求解代码2.3绘图代码1.线性回归模型1.1一元线性回归模型简单的讲,一元线性模型就是指只有一个特征量,然后对应带... 查看详情

机器学习一般线性回归(代码片段)

...归"模型。 0.概述线性回归应该是我们听过次数最多的机器学习算法了。在一般的统计学教科书中,最后都会提到这种方法。因此该算法也算是架起了数理统计与机器学习之间的桥梁。线性回归虽然常见,但是却并不简单。该... 查看详情

机器学习导论————线性回归(linerregression)(代码片段)

机器学习导论————线性回归(LinerRegression)一、线性回归的应用场景监督学习-目标值连续房价预测销售额预测贷款额度预测二、什么是线性回归2.1定义与公式线性回归(LinearRegression)是利用回归方程(函数)对... 查看详情

机器学习—线性回归(代码片段)

一、原理部分:只能图片形式展现了~~~二、Python手工实现线性回归importpandasaspdimportnumpyasnpimportmatplotlib.pyplotaspltclasslinear_regression(object):#计算均方误差损失defcompute_loss(self,y,y_hat):returnnp.average((y-y_hat)**2)#梯度下降算 查看详情

03_有监督学习--简单线性回归模型(调用sklearn库代码实现)(代码片段)

...)0.引入依赖1.导入数据(data.csv)2.定义损失函数3.导入机器学习库sklearn4.测试:运行算法,从训练好的模型中提取出系数和截距5.画出拟合曲线6.附录-测试数据有监督学习--简单线性回归模型(调用sklearn库代码实现)0.引入依赖i... 查看详情

机器学习:逻辑回归(代码片段)

虽然名字里带回归,但实际上是一种分类方法,主要用于两分类问题,即只有两种分类优点:计算代价不高,易于理解和实现缺点:容易欠拟合,分类精度可能不高原理线性回归函数??(smallz=f(X)=XW)??其中????X是特征值????W是回归系... 查看详情

机器学习入门实践——线性回归&非线性回归&mnist手写体识别(代码片段)

把一本《白话深度学习与tensorflow》给啃完了,了解了一下基本的BP网络,CNN,RNN这些。感觉实际上算法本身不是特别的深奥难懂,最简单的BP网络基本上学完微积分和概率论就能搞懂,CNN引入的卷积,池化等也是数字图像处理中... 查看详情

有监督学习——线性回归(代码片段)

...解决回归问题(regression)。线性回归(LinearRegression)在机器学习中被用来解决学习特征和目标值都是连续值类型的问题,可定义为多项式函数:\\[y=w_0+w_1x_1+w_2x_2+...+w_nx_n\\tag1-2\\]线性模型学习的目标就是确定\\(w_0w_1..w_n\\)的值,... 查看详情

机器学习——线性回归(代码片段)

导入类库1fromsklearn.externalsimportjoblib2fromsklearn.model_selectionimporttrain_test_split3fromsklearn.datasetsimportload_boston4fromsklearn.preprocessingimportStandardScaler5fromsklearn.linear_modelimp 查看详情

机器学习入门:多变量线性回归(代码片段)

...的两个小技巧。本文分享自华为云社区《【跟着小Mi一起机器学习吧!】多变量线性回归(一)》,原文作者:Skytier。1 多维特征既然是多变量线性回归,那么肯定是存在多个变量或者多个特征的情况啦。就拿之前研究的线... 查看详情

机器学习-8.线性回归(代码片段)

1.概述定义:线性回归通过一个或多个自变量(理解为特征)与因变量(理解为目标值)之间进行建模的回归分析。其中可以为一个或多个自变量之间的线性组合(线性回归的一种)。一元线性回归:涉及到的变量只有... 查看详情

机器学习-线性回归(代码片段)

线性回归简介:之前的文章中介绍过一种回归算法,梯度下降算法,这里再看看另外一个回归算法,线性回归,主要的内容包括简单的线性回归和局部加权回归算法。在回归里面需要考虑的问题就是,我如... 查看详情

机器学习入门三------线性回归(代码片段)

...方法。本模块会先直观介绍线性回归,为介绍线性回归的机器学习方法奠定基础。人们早就知晓,相比凉爽的天气,蟋蟀在较为炎热的天气里鸣叫更为频繁。数十年来,专业和业余昆虫学者已将每分钟的鸣叫声和温度方面的数据... 查看详情

机器学习sklearn监督学习回归算法线性回归linearregression(代码片段)

importnumpyasnpimportmatplotlib.pyplotaspltfromsklearnimportlinear_model#设置中文字体plt.rcParams['font.sans-serif']='SimHei'plt.rcParams['axes.unicode_minus']=False#设置自变量和因变 查看详情