多变量线性回归

之前讨论的都是单变量的情况。例如房价与房屋面积之前的关系,但是实际上,房价除了房屋面积之外,还要房间数,楼层等因素相关。那么此时就变成了一个多变量线性回归的问题。在实际问题中,多变量的线性回归问题是更加常见的。

下面这个例子就是表明了我上面所说的情况。

之前的单变量线性回归的问题,最后求解得到的是一个线性方程。那么在多变量线性回归中,得到的是:

其中X,theta都是一个n阶向量。那么最后的表示方式就变为了:

h 是theta的转置与X的乘积。

多变量梯度下降

和单变量的线性回归方程一样,我们同样会存在一个多变量的线性回归方程。同时也存在一个对应的代价函数。下面就是一个多变量的代价函数。

代价函数的求法同样是根据梯度下降的方式来进行求解。

下面这张图的足有两个公式分别显示了不同的情况,左右是一个最基础的情况,只有两个参数。而右边就是常见的多变量的梯度下降的函数。

相信上面这两张图已经将区别和联系表现出来了。

梯度下降算法实践1——特征缩放

在多变量的梯度下降算法中,如果多个变量能够在同一个或者是相近的区间范围内,这样就很方便问题的求解。当然前提是知道多变量的实际的取值范围。

在房屋的例子中,假设我们是研究房价与房屋大小和房屋房间数量的关系。同时我们知道房屋大小和房间数量间的关系,如房屋大小是位于0-2000英寸,房间数量是1-5。那么我们最后得到的轮廓函数为:

但是如果我们将所有参数x1和x2都的取值都进行标准化,例如集中到[0,1]之间,那么最后轮廓函数变为:

标准化算法也有很多,最简单的方式是:

梯度下降算法实践2——学习率

梯度下降算法的特征缩放考虑的是将变量进行标准化,而学习率考虑的是学习率的大小问题。之前就讨论过,如果学习率过大,则可能无法收敛。如果学习率较小,则迭代次次数过大。

正常的情况下,一般是通过绘制迭代次数和代价函数的图表来观测合适收敛,如下:

也有一些自动测试是否收敛的方法,例如将代价函数的变化值与某个阀值(例如 0.001)

进行比较,但通常看上面这样的图表更好。

通过图表观察,需要注意的问题是,迭代的次数收到学习率a的影响。

一般情况,学习率的选择如下:

0.01,0.03,0.1,0.3,1,3,10

总结

本次的课程,还是比较简单易懂的,都是理论上面的问题,也无须编程实现。

为了能到远方,脚下的每一步都不能少

Andrew Ng机器学习算法入门((六):多变量线性回归方程求解的更多相关文章

  1. Andrew Ng机器学习算法入门(一):简介

    简介 最近在参加一个利用机器学习来解决安全问题的算法比赛,但是对机器学习的算法一直不了解,所以先了解一下机器学习相关的算法. Andrew Ng就是前段时间从百度离职的吴恩达.关于吴恩达是谁,相信程序 ...

  2. Andrew Ng机器学习算法入门(二):机器学习分类

    机器学习的定义 Arthur Samuel给出的定义,Field of Study that gives computers the ability to learn without being ex ...

  3. Andrew Ng机器学习算法入门(九):逻辑回归

    逻辑回归 先前所讲的线性回归主要是一个预测问题,根据已知的数据去预测接下来的情况.线性回归中的房价的例子就很好地说明了这个问题. 然后在现实世界中,很多问题不是预测问题而是一个分类问题. 如邮件是否为 ...

  4. Andrew Ng机器学习算法入门(八):正规方程

    正规方程 在先学习正规方程之前,先来复习一下之前学过的常规的回归方程的解法. 假设存在如果的代价函数, ,解法也十分的简答. 但是有时候遇到的情况或许会变得相当的复杂. 的数,如果是按照常规的方式进行 ...

  5. Andrew Ng机器学习算法入门(三):线性回归算法

    线性回归 线性回归,就是能够用一个直线较为精确地描述数据之间的关系.这样当出现新的数据的时候,就能够预测出一个简单的值. 线性回归中最常见的就是房价的问题.一直存在很多房屋面积和房价的数据,如下图所示 ...

  6. Andrew Ng机器学习算法入门(十):过拟合问题解决方法

    在使用机器学习对训练数据进行学习和分类的时候,会出现欠拟合和过拟合的问题.那么什么是欠拟合和过拟合问题呢?

  7. Andrew Ng机器学习算法入门((七):特征选择和多项式回归

    特征选择 还是回归到房价的问题.在最开始的问题中,我们假设房价与房屋面积有关,那么最开始对房价预测的时候,回归方程可能如下所示: 其中frontage表示的房子的长,depth表示的是房子的宽. 但长 ...

  8. Andrew Ng机器学习算法入门(四):阶梯下降算法

    梯度降级算法简介 之前如果需要求出最佳的线性回归模型,就需要求出代价函数的最小值.在上一篇文章中,求解的问题比较简单,只有一个简单的参数.梯度降级算法就可以用来求出代价函数最小值. 梯度降级算法的在维 ...

  9. Andrew Ng机器学习算法入门((五):矩阵和向量

    矩阵定义 数学上,一个m×n的矩阵是一个由m行n列元素排列成的矩形阵列 使用Aij来获取矩阵中第i行j列的数据 向量的定义 向量就是n行1列的特殊矩阵 由于向量仅仅只有1行,那么通过一个变量i来指定获 ...

随机推荐

  1. Shiro 反序列化漏洞利用

    环境搭建 docker pull medicean/vulapps:s_shiro_1 docker run -d -p 80:8080 medicean/vulapps:s_shiro_1 # 80 ...

  2. 在C++中实现aligned_malloc

    malloc的默认行为 大家都知道C++中可以直接调用malloc请求内存被返回分配成功的内存指针,该指针指向的地址就是分配得到的内存的起始地址.比如下面的代码 int main() { void * ...

  3. WebSocket与即时通讯

    HTTP 协议有一个缺陷:通信只能由客户端发起!HTTP 协议做不到服务器主动向客户端推送信息.这种单向请求的特点,注定了如果服务器有连续的状态变化,客户端要获知就非常麻烦.我们只能使用"轮 ...

  4. 如何快速的插入 100W数据到数据库,使用PreparedStatement 最快实现!

    有时候,我们使用数据库的时候,如何快速的添加测试数据到数据库中,做测试呢,添加100W 数据,如果使用工具的话可能很慢,这里我推荐大家使用 PreparedStatement 预编译 去进行操作:单线 ...

  5. java线程实现的三种方式以及静态代理

    线程 一个进程中若开辟多个线程,线程的运行由调度器控制,先后顺序不能人为干预. 实现方式 继承 Thread类 调用run方法,只有主线程一条路 调用start方法,主线程和子线程并行交替执行 pub ...

  6. LZZY高级语言程序设计之169页**5.17

    import java.util.Scanner;public class MQ3 { public static void main(String[] args) { Scanner sc = ne ...

  7. PriorityQueue 是线性结构吗?90%的人都搞错了!

    文章首发于「陈树义」公众号及个人博客 shuyi.tech 其实这个问题的完整描述是:Java 中的 PriorityQueue 实现,其数据的逻辑结构是线性结构吗?其数据的物理结构又是什么? 估计很 ...

  8. 2020年Acm暑期考核Hznu _2797

    题目链接:http://acm.hznu.edu.cn/OJ/problem.php?id=2797 题意:求1-N中有多少数字满足: x是正整数且无前导0. x(mod 666) = S(x). 6 ...

  9. Java并发编程之同步/并发集合

    同步集合 Java中同步集合如下: Vector:基于数组的线程安全集合,扩容默认增加1倍(ArrayList50%) Stack:继承于Vector,基于动态数组实现的一个线程安全的栈 Hashta ...

  10. 攻防世界 csaw2013reversing2 CSAW CTF 2014

    运行程序 flag显示乱码 IDA打开查看程序逻辑 1 int __cdecl __noreturn main(int argc, const char **argv, const char **en ...