机器学习_线性回归

Posted yd2018

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习_线性回归相关的知识,希望对你有一定的参考价值。

线性回归

 

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

 

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()
 技术分享图片

 


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

 

以上是关于机器学习_线性回归的主要内容,如果未能解决你的问题,请参考以下文章

[机器学习与scikit-learn-20]:算法-逻辑回归-线性逻辑回归linear_model.LogisticRegression与代码实现

机器学习线性回归api快速入门

[机器学习与scikit-learn-29]:算法-回归-普通线性回归LinearRegression拟合线性分布数据的代码示例

机器学习——逻辑回归(Logistic Regression)

机器学习线性回归

机器学习线性回归