线性回归

匿名 (未验证) 提交于 2019-12-02 23:34:01

线性回归

线性: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 = w1x1 + w2x2 + w3x3 + … + wnxn + w0*x0

Q:为什么求总似然的时候,要用正太分布的概率密度函数?
A:中心极限定理,如果假设样本之间是独立事件,误差变量随机产生,那么就服从正太分布!

Q:总似然不是概率相乘吗?为什么用了概率密度函数的f(xi)进行了相乘?
A:因为概率不好求,所以当我们可以找到概率密度相乘最大的时候,就相当于找到了概率相乘最大的时候!

Q:概率为什么不好求?
A:因为求得是面积,需要积分,麻烦,大家不用去管数学上如何根据概率密度函数去求概率!

Q:那总似然最大和最有解得关系?
A:当我们找到可以使得总似然最大的条件,也就是可以找到我们的DataSet数据集最吻合某个正太分布!
即找到了最优解!

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

Q:何为损失函数?
A:一个函数最小,就对应了模型是最优解!预测历史数据可以最准!

Q:线性回归的损失函数是什么?
A:最小二乘法,MSE,mean squared error,平方均值损失函数,均方误差

Q:线性回归的损失函数有哪些假设?
A:样本独立,随机变量,正太分布

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

通过Python调用numpy来应用解析解公式之间计算最优解
文件名: linear_regression_0.py

讲解梯度下降法(重点内容)
1,初始化theta
2,求梯度gradients
3,调整theta
theta_t+1 = theta_t - grad*(learning_rate)
4,回到2循环往复第2步和第3步,直到迭代收敛,g约等于0

通过sklearn模块使用LinearRegression
from sklearn.linear_model import LinearRegression
文件名: linear_regression_1.py

线性回归2:

算法选择顺序,Ridge Regression (L2正则化) --> ElasticNet (即包含L1又包含L2)

Q:正则化L1和L2有什么区别?
A:L1是w绝对值加和,L2是w平方加和。L1的有趣的现象是会使得w有的接近于0,有的接近于1,
L1更多的会用在降维上面,因为有的是0有的是1,我们也称之为稀疏编码。
L2是更常用的正则化手段,它会使得w整体变小

超参数alpha 在Rideg类里面就直接是L2正则的权重
超参数alpha 在Lasso类里面就直接是L1正则的权重
超参数alpha 在ElasticNet和SGDRegressor里面是损失函数里面的alpha
超参数l1_ration 在ElasticNet和SGDRegressor里面是损失函数的p

多项式回归:叫回归但并不是去做拟合的算法
PolynomialFeatures是来做预处理的,来转换我们的数据,把数据进行升维!

Q:升维有什么用?
A:升维就是增加更多的影响Y结果的因素,这样考虑的更全面,最终是要增加准确率!
还有时候,就像PolynomialFeatures去做升维,是为了让线性模型去拟合非线性的数据!

Q:PolynomialFeatures是怎么升维的?
A:可以传入degree超参数,如果等于2,那么就会在原有维度基础之上增加二阶的数据变化!
更高阶的以此类推

Q:如果数据是非线性的变化,但是就想用线性的模型去拟合这个非线性的数据,怎么办?
A:1,非线性的数据去找非线性的算法生成的模型去拟合
2,可以把非线性的数据进行变化,变成类似线性的变化,然后使用线性的模型去拟合
PolynomialFeatures类其实就是这里说的第二种方式

polynomial_regression.py
上面代码里面其实通过画图让同学们理解,更高阶的数据变化,可以让线性模型拟合的更好,
但是也容易过拟合!

保险的案例:
目的:未来来个新的人,可以通过模型来预测他的医疗花销
所以,就把charges列作为y,其他列作为X维度

Q:为什么每行没有人名?
A:人名不会对最终的Y结果产生影响,所以可以不用

Q:为什么要观测注意数据多样性,采样要均匀?
A:就是因为你要的模型的功能是对任何年龄段的人都有一个好的预测,那么你的模型在训练的时候
读取的数据集,就得包含各个年龄段得数据,而且各个年龄段也得数据均匀,防止过拟合!

Q:什么是Pearson相关系数?
A:Pearson相关系数是来测量两组变量之间的线性相关性的!Pearson相关系数的区间范围是-1到1之间
如果越接近于-1,说明两组变量越负相关,一个变大,另一个变小,反之如果越接近于1,说明两组
变量越正相关,一个变大,另一个也跟着变大,如果越接近于0,说明越不相关,即一个变大或变小,
另一个没什么影响!
通过Pearson相关系数,如果发现两个维度之间,相关系数接近于1,可以把其中一个去掉,做到降维!
通过Pearson相关系数,如果发现某个维度和结果Y之间的相关系数接近于0,可以把这个维度去掉,降维!

文章来源: https://blog.csdn.net/weixin_43442290/article/details/90442785
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!