线性回归

    xiaoxiao2022-07-03  153

    线性回归

    线性: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) –> Lasso Regression (L1正则化)

    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,可以把这个维度去掉,降维!

    最新回复(0)