机器学习-第三章 线性回归 上
机器学习-第三章 线性回归目录1.线性回归简介*定义* 有标签有监督连续* 用一条线表达自变量和应变量的关系* 分类* 一元线性回归* 多元线性回归* 应用场景2. 线性回归问题的求解*线性回归API* LinearRegressor* 模型训练六步*损失函数* 误差最小预测值到真实值之间的关系希望最小* 思路一正规方程* 思路二梯度下降法3.回归模型评估方法* 回顾分类–准确率*MAEMean Square Error 平均绝对误差*MSE:Mean Absolute Error 均方误差*RMSE:Root Mean Absolute Error 均方根误差4.线性回归API和案例* 线性回归API* 案例波士顿房价预测5.欠拟合和过拟合* 出现原因* 解决方法* L1正则化* L2正则化*很难了加油!!! *一 、线性回归简介学习目标1.理解线性回归是什么2.一元和多元线性回归3.应用场景1.线性回归的概念1.举例2.一元线性回归y kx b》weight–权重 bias–偏置y wx b3.多元线性回归y w1x1 w2x2 w3x3 … b b–w0x0w 》 [w1,w2,w3] Ax 》 [x1,x2,x3] B4.矩阵相乘 需要满足A列 B行w’xw1x1w2x2w3x3y w的转置*xb5.应用场景* 钢轨伸缩长度和温度–一元* 昆虫鸣叫次数与天气–一元* 双十一销售额和国家GDP–一元总结概念通过公式描述一个或多个自变量特征值和因变量目标值之间的关系进行建模的一种分析方式公式分类一元多元二.线性回归问题求解1.线性回归API 线性回归介绍 概述/目的 用线性公式 来描述 多个自变量 和 一个 因变量 之间的关系对其关系进行建模基于特征预测标签. 线性回归属于有监督学习 即有特征有标签且标签是连续的. 分类 一元线性回归 1个特征列1个标签列 多元线性回归 多个特征列1个标签列 公式 一元线性回归 ykxb → wxb k 数学中叫斜率机器学习中叫weight-权重简称w b 数学中叫截距机器学习中叫Bias-偏置简称b 多元线性回归 y w₁x₁w₂x₂w₃x₃..wₙxₙb wᵀxb **表格数据** | 编号 | 身高 | 体重 | |------|------|------| | 1 | 160 | 56.3 | | 2 | 166 | 60.6 | | 3 | 172 | 65.1 | | 4 | 174 | 68.5 | | 5 | 180 | 75 | | 6 | 176 | ? | **线性模型** \[ y wx b \] x 为身高 y 为体重编号6未知 w 为权重斜率 b 为偏置截距 # 导包 from sklearn.linear_model import LinearRegression # 案例演示线性回归API入门 #1.准备数据 x_train [[160],[166],[172],[174],[180]] y_train [56.3,60.6,65.1,68.5,75] x_test [[176]] #2.数据的预处理这里不需要 #3.特征工程这里不需要--特征提取特征预处理 #4.模型训练 #4.1 创建模型对象 estimator LinearRegression() #4.2 具体的训练动作 estimator.fit(x_train, y_train) #4.3 因为是线性回归模型我们可以看下斜率w 权重 和 截距b 偏置 print(fw:{estimator.coef_} b:{estimator.intercept_}) #5.模型预测 y_pre estimator.predict(x_test) print(f预测结果{y_pre})2.线性回归的求解方法3.损失函数需要设置一个评判标准误差预测值-真实值有正有负需要绝对值或平方损失函数衡量每个样本预测值与真实值效果的函数也叫代价函数、成本函数、目标函数损失函数越小→误差和越小→模型越是我们想要的| 编号 | 身高 | 体重 ||------|------|------|| 1 | 160 | 56.3 || 2 | 166 | 60.6 || 3 | 172 | 65.1 || 4 | 174 | 68.5 || 5 | 180 | 75 || 6 | 176 | ? |4.损失函数的计算思路1最小二乘 所有误差平方和误差 预测值-真实值160kb-56.3²…损失函数 用来描述每个样本 和 其预测值之间关系的。 各个样本的误差和越小越好数据集求解其损失函数最小Losskb160kb-56.3²166kb-60.60²172kb-65.1²174kb-68.5²180kb-75²此时无法计算了我们先假设b的值-100之后我们会用导数的思维再做一次。160k-100-56.3²166k-100-60.60²172k-100-65.1²174k-100-68.5²180k-100-75²160k-156.3²166k-160.60²172k-165.1²174k-168.5²180k-175²铺垫知识a-b² a²-2abb²5-3²25-2*1594160²k²-2×160×156.3156.3²145416k²-281671.6k136496.32让损失函数最小就是让这个式子的值最小求导求导→2×145416k-281671.600k0.9685原来的模型ykxb0.9685*176-10070.456截距等于-100情况下最优解求体重为70.456但是我们是设定了b-100我们或许可以选择出一条更好的直线拟合5.损失函数分类最小二乘法误差平方和均方误差 MSE Mean-Square Error每个样本点误差的平方和/样本总数平均绝对误差 MSE Mean-Absolute Error误差绝对值之和/样本总数总结补二、 基础数学-机器学习中常见的数据表述1.为什么要学习标量、向量、矩阵、张量不要展开用到什么学什么2. 标量scalar一个独立的数只有大小没有方向a103.向量vector向量指一列顺序排列的元素。默认是列向量pandas中的series对象向量有大小和方向张三的数理化成绩信息 70 80 9070,80,90 R³4.矩阵 matrix二维数组pandas中的dataframe比如张三李四的数理化成绩 70 80 9075 85 955.张量 Tensor数组张量是基于向量和矩阵的推广Numpy→ndarray→N维度数组reshape2,342个3行4列的矩阵-6.导数6.1 导数的概念导数导函数值微商Δxx轴上增量的一部分Δyy轴上增量的一部分Δy/Δx →0时 有个极值A 记作导数物理加速度几何斜率6.2常见函数的 导数常数函数导数幂函数导数指数函数导数自然函数导数对数函数导数自然对数函数导数正弦函数导数余弦函数导数6.3. 导数的四则运算6.4.导数求极值导数为0的位置是函数的极值点求函数yx²-4x5 的极小值求导法 2x-40 x2代入原函数 2²-4×251 2,1 极值为16.5偏导z是关于x和y的函数记成zxy7.向量矩阵向量是有大小和方向的向量1,1 向量1,2大小√1²2²方向arctanθ2/1向量基运算8.向量和矩阵-范数Norm范数是数学中的一种基本概念具有长度的意义1范数L1范数-向量中各个元素绝对值之和2范数L2范数-向量的模长每个元素平方求和再开平方根xᵀx||x||₂²9.矩阵运算总结1.标量 向量 矩阵 张量概念2.导数 函数上某一个点求切线就是导数。瞬时速度变化率3.导数的求解方法复合导数求导4.利用导数求极值5.偏导数总结21.向量的基本运算2.矩阵的运算10.一元线性回归-正规方程法11.多元线性回归-正规方程法求解存在问题1.如果运算量过大可能造成内存溢出2.假设没有逆无解总结12.梯度下降法1.什么是梯度下降沿着梯度下降的方向求极小值输入初始化位置s每步距离为a输出从位置s到山底步骤1初始位置s步骤2如果四周都搞返回s否则3步骤3环顾四周寻找坡度最陡的方向X步骤4沿着x方向为往下走长度为a到新为止s‘步骤5在s’环顾四周如果四周都比S’高返回s’否则32.什么是梯度单变量函数中梯度是某一点的斜切率某点的导数方向为函数增长最快的方向多变量函数值那个梯度是某一个点的偏导方向为偏导数分量的方向3.梯度下降的公式4.梯度下降优化过程1.给定初始位置、步长-学习率2.计算该点当前的梯度的负方向3.向该负方向移动步长4.重复2-3步 直至收敛5.学习率步长步长决定了在梯度下降迭代的过程中每一步沿梯度负方向前进的长度学习率太小下降速度太慢学习率太大会错过最低点、产生下降过程中的震荡、甚至梯度爆炸13.梯度下降法-案例银行信贷1.回顾1.梯度下降公式 下个点当前点-学习率×损失函数2.损失函数分类最小二乘 Σ预测值-真实值均方误差 MSE均方根误差 RMSE平均绝对误差 MAE2.案例-3.解题1.我们先计算损失函数对其求导决定梯度的方向已知数据、假设函数、损失函数 wθhθθ1x1θ2x2…b 把b→θ0x0hθ4.梯度下降法分类1.全梯度下降 Full Gradient Descent FGD每次迭代使用全部样本的梯度值慢2.随机梯度下降算法SGD每次迭代随机选择并使用1个样本梯度值简单高效不稳定3.小批量梯度下降算法 mini-batch从m个样本中选择 1xm集合1.2-4.随机平均梯度下降 SAG初期不佳优化速度较慢5.方法对比梯度下降正规方程需要选择学习率0.001-0.01不需要学习率需要迭代求解一次运算得出一蹴而就特征数量较大可以使用小数据量场景、精准的数据场景更加普适迭代的计算方式、嘈杂大数据应用场景小结