回归问题-总述+线性回归(Linear Regression )

【更新-在去年这个时候写的基础上做了修改】

今天正式开始机器学习之路(看的斯坦福大学的视频课以及讲义),由于看的时候蒙蒙的,因此想要找个平台保存一下自己学习的成果,因此写了此篇文章,作为机器学习的小白,文章可能有诸多不妥之处,不作为学术理论的深入研究范围。因为我是小白,我是小白,我是小白。

其中用到的一些算法基本的解释:

(1)最小二乘法(来自百度百科):最小二乘法。最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。

(2)梯度下降法-优化算法(来自百度百科):梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。在机器学习中,基于基本的梯度下降法发展了两种梯度下降方法,分别为随机梯度下降法和批量梯度下降法。

回归问题主要情况如下:

(1)线性回归

首先举一个简单的例子,来说明问题。

比如温度和湿度,对生长期的农作物的影响。

y表示农作物生长速度。x为影响因素。构建的线性模型如下:其中\theta表示权重

                                                                   h_{\theta}(x)=\theta_{0}+\theta_{1} x_{1}+\theta_{2} x_{2}

如果影响因素更多的话,就利用下面的公式。

                                                                      h(x)=\sum_{i=0}^{n} \theta_{i} x_{i}=\theta^{T} x 

其中n表示影响因素个数。建立了一个这样的模型之后,要通过训练集求解权重。

即利用 h_{\theta}(x)=\theta_{0}+\theta_{1} x_{1}+\theta_{2} x_{2},去逼近样本的真实值。

                                              J(\theta)=\frac{1}{2} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2}                      (这个公式体现最小二乘法的思想)

             其中m为样本个数, x^{(i)}\right)  表示第i个样本,x^{(i)}\right)_{1} x^{(i)}\right)_{2}...x^{(i)}\right)_{n}表示第i个样本中的n个影响因素。

总结一下

上面这个图的意思就是,一般的回归问题可以分为两个分支:

1,假设残差服从一定的分布,从极大似然估计去求解参数(思想:概率最大的事件最可能发生

2,最小二乘法(像百度百科说的那样)其主要思想在于误差平方和的思想,求解参数。

(1)针对极大似然估计

         预测值和真实值之间都肯定存在误差\varepsilon,对于每个样本:

                                                                        y_{i}=w^{T} x_{i}+\varepsilon_{i}

        假设误差\varepsilon_{i}服从高斯分布(二维的时候为正太分布)则有:

                                                           p\left(\varepsilon_{i}\right)=\frac{1}{\sqrt{2 \pi} \sigma} \exp \left(-\frac{\varepsilon_{i}^{2}}{2 \sigma^{2}}\right)

        将残差分布公式带入y_{i}=w^{T} x_{i}+\varepsilon_{i},得到在已经参数w和x_{i},预测值y_{i}的条件概率:

                                              p\left(y_{i} | x_{i} ; w\right)=\frac{1}{\sqrt{2 \pi} \sigma} \exp \left(-\frac{\left(y_{i}-w^{T} x_{i}\right)^{2}}{2 \sigma^{2}}\right)

       已知预测值y_{i}的条件概率,就可以利用极大似然的思想去求解里面的参数w。

       构造如下:

                                     L(w)=\prod_{i=1}^{m} p\left(y_{i} | x_{i} ; w\right)=\prod_{i=1}^{m} \frac{1}{\sqrt{2 \pi} \sigma} \exp \left(-\frac{\left(y_{i}-w^{T} x_{i}\right)^{2}}{2 \sigma^{2}}\right)

     再利用log_{L(w)},求导的方式求解参数。

                                        L(w)=\log \prod_{i=1}^{m} \frac{1}{\sqrt{2 \pi} \sigma} \exp \left(-\frac{\left(y_{i}-w^{T} x_{i}\right)^{2}}{2 \sigma^{2}}\right)

                                                   =\sum_{i=1}^{m} \log \frac{1}{\sqrt{2 \pi} \sigma} \exp \left(-\frac{\left(y_{i}-w^{T} x_{i}\right)^{2}}{2 \sigma^{2}}\right)

                                                  =\sum_{i=1}^{m} \log \frac{1}{\sqrt{2 \pi} \sigma}+\sum_{i=1}^{m} \log \left(\exp \left(-\frac{\left(y_{i}-w^{T} x_{i}\right)^{2}}{2 \sigma^{2}}\right)\right)

                                                   =m \log \frac{1}{\sqrt{2 \pi} \sigma}-\sum_{i=1}^{m} \frac{\left(y_{i}-w^{T} x_{i}\right)^{2}}{2 \sigma^{2}}

 在对上式利用求导求解参数的时候,就是对\sum_{i=1}^{m} \frac{\left(y_{i}-w^{T} x_{i}\right)^{2}}{2 \sigma^{2}}这部分求导,可以发现这部分与最小二乘法中的误差平方和几乎一致。

误差平方和表示如下:

                                                                  J(w)=\frac{1}{2} \sum_{i=1}^{m}\left(y_{i}-w^{T} x_{i}\right)^{2} 

由于对w求解,所以\sigma^{2}是可以忽略的。因此最终两条路是走到了同一个终点,前提(假设残差正态分布)。

(2)针对最小二乘法

      接极大似然估计思想,对应误差平方,求解过程如下:

                                              J(w)=\frac{1}{2} \sum_{i=1}^{m}\left(y_{i}-w^{T} x_{i}\right)^{2}

                                                       =\frac{1}{2}\left\|\left[\begin{array}{c}{y_{1}-w^{T} x_{1}} \\ {y_{2}-w^{T} x_{2}} \\ {\cdots} \\ {y_{m}-w^{T} x_{m}}\end{array}\right]\right\|^{2}    

                                                        =\frac{1}{2}\left\|\left[\begin{array}{l}{y_{1}} \\ {y_{2}} \\ {\cdots} \\ {y_{m}}\end{array}\right]-w^{T}\left[\begin{array}{c}{x_{1}} \\ {x_{2}} \\ {\cdots} \\ {x_{m}}\end{array}\right]\right\|^{2}

                                                       =\frac{1}{2}\left\|y-w^{T} X\right\|^{2}=\frac{1}{2}\left(y-w^{T} x\right)^{T}\left(y-w^{T} x\right)

对J(w)关于w求导有:

                                                         \begin{array}{l}{\frac{\partial J(w)}{\partial w}=\frac{1}{2} \frac{\partial}{\partial w}\left(\left(y-w^{T} x\right)^{T}\left(y-w^{T} x\right)\right)} \\ {=\frac{1}{2} \frac{\partial}{\partial w}\left((y-X w)^{T}(y-X w)\right)} \\ {=\frac{1}{2} \frac{\partial}{\partial w}\left(w^{T} X^{T} X w-2 w^{T} X y+y^{T} y\right)} \\ {=\frac{1}{2}\left(X^{T} X w+X^{T} X w-2 X y\right)} \\ {=X^{T} X w-X y}\end{array}

令导数等于0,有:

                                                                               \frac{\partial J(w)}{\partial w}=0

                                                                             X^{T} X w=X y

故最小二乘法关于权重的求解,最终可以得到一个公式:

                                                                    w=\left(X^{T} X\right)^{-1} X^{T} y

但是,一般情况下,这种矩阵表示很难求解,主要原因是X^{T} X不可逆,因此关于参数求解,有了梯度下降法、拟牛顿法等一系列的优化算法方法。

为了思路更清楚,优化算法重新开一篇。

参考文献:

感谢刘小朋友提供了PPT。

<think>好的,我需要回答用户关于el-affix组件的使用陷阱、常见问题及注意事项。首先,我应该回顾用户提供的引用内容,看看有没有相关的信息。用户提到了antd的a-affix在切换标签页时样式错位,Vue Affix的灵活性和集成,以及Antd Affix的宽度不随父容器变化的问题,还有el-table使用fixed后的样式错乱解决方法。 首先,用户的问题是关于el-affix的,可能类似于其他框架的Affix组件。常见的问题可能包括样式问题、容器宽度变化、动态内容处理和性能问题。我需要结合引用中的案例,比如antd的a-affix在切换页面时溢出容器,以及Antd Affix的宽度问题,推测el-affix可能有类似的问题。 然后,引用3提到当元素fixed后脱离文档流,宽度不随父容器变化,这可能是一个常见陷阱。用户需要注意在fixed状态下设置宽度,或者监听父容器变化来调整。 引用4提到el-table使用fixed布局后样式错乱,解决方法是通过doLayout方法重新布局。类似地,el-affix可能在容器尺寸变化时需要手动调整,比如窗口resize或父容器动态变化时,可能需要调用刷新方法。 另外,z-index冲突也是一个常见问题,需要提醒用户设置合适的层级。动态内容导致定位错误,比如内容加载后affix位置未更新,可能需要手动刷新。 性能方面,高频滚动事件可能影响性能,需要节流处理。还有,容器溢出或遮挡问题,需正确设置target容器避免超出可视区域。 注意事项方面,兼容性测试,特别是移动端;使用官方方法而非直接修改样式;结合路由切换时重置状态等。 需要将这些点整理成结构清晰的回答,分点说明问题及解决方案,并附上代码示例。同时,生成相关问题,帮助用户深入理解。 现在组织回答结构:先总述,再分点说明每个问题、原因和解决方案,最后注意事项和相关问题。确保使用正确的中文术语,引用相关案例但不过多,保持自然。</think>### el-affix 组件使用陷阱与常见问题解析 #### 1. **定位后宽度丢失问题** 当元素触发固定定位(fixed)时,**脱离文档流导致宽度继承失效**,可能出现宽度收缩或固定为初始值。 **解决方案**: - 显式设置固定状态下的宽度,例如监听父容器宽度变化并动态赋值: ```javascript <el-affix :target="'.container'" @change="handleAffixChange"> // 内容 </el-affix> methods: { handleAffixChange(fixed) { if (fixed) { const parentWidth = document.querySelector('.container').offsetWidth; this.$refs.affixEl.style.width = `${parentWidth}px`; } } } ``` 引用类似Antd Affix的宽度问题解决方案[^3]。 #### 2. **容器溢出或遮挡** 未正确指定`target`容器时,可能造成元素超出可视区域或遮挡其他内容。 **解决方案**: - 明确指定`target`为最近的滚动容器,并确保容器具有定位属性(如`position: relative`)。 #### 3. **动态内容导致定位错误** 父容器内容动态增减时,el-affix可能未及时更新位置。 **解决方案**: - 手动调用`update()`方法刷新布局: ```javascript this.$refs.affixRef.update(); ``` #### 4. **高频滚动性能问题** 默认监听滚动事件可能引发性能损耗,尤其在复杂页面中。 **优化方案**: - 添加滚动事件节流控制: ```html <el-affix :scroll-throttle="200">...</el-affix> ``` #### 5. **z-index 层级冲突** 固定定位元素可能被其他高阶元素遮挡。 **建议**: - 显式设置`z-index`值(通常推荐范围 1000-2000)。 --- ### 关键注意事项 1. **容器限制** 确保`target`容器高度足够,避免吸顶元素悬浮时遮挡下方内容。 2. **响应式处理** 监听窗口`resize`事件并调用`update()`方法,参考el-table的`doLayout()`思路[^4]: ```javascript mounted() { window.addEventListener('resize', this.handleResize); }, methods: { handleResize() { this.$refs.affixRef?.update(); } } ``` 3. **路由切换重置** 页面跳转时主动调用`update()`,避免跨页面状态残留(类似标签页切换问题[^1])。 4. **移动端兼容性** 部分移动端浏览器对fixed定位支持不佳,需实测滑动效果。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Foneone

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值