Motivation 问题描述

收集到某一地区的房子面积和房价的数据(x, y)42组,对于一套已知面积的房子预测其房价?


由房价数据可视化图可以看出,可以使用一条直线拟合房价。通过这种假设得到的预测值和真实值比较接近。

Model 模型

将现实的问题通过数学模型描述出来。
m 个 样本(example)组成训练集(training set),每一个样本有n个特征(feature)和一个标签(label)。目的是,通过一个数学模型(algorithm)和参数(parameters)将每一个样本和标签映射。这样,给定一个未知的样本就可以通过建立的数学模型预测其标签。

参数 解释
m 样例数 training set
n 特征数 no. of features
X (m*(n+1))
(m*1)
\(\Theta\) ((n+1)*1) \(X\theta=y\)

Hypothesis 假设

假设房价由此方程拟合
\[h_\theta(x) = \theta_0+\theta_1x\]
其中\(\theta_0\)为偏置bias,\(\theta_1\)为因变量的权重weight

Cost function 损失函数

需要一个函数评价拟合函数的预测效果如何。直观的,我们可以计算真实房价和预测房价的差值平方和J,J越小预测效果越好。所以,可以通过最小化J可以求出参数\(\theta_0\)和\(\theta_1\)的值。
\[J(\theta_0,\theta_1)=\frac 1 {2m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2\]

Gradient descent 梯度下降

这是一个二元函数求极值的问题。可以使用求偏导的方法找出所有极值点,然后代入损失函数求出最小值。一般的做法是采用梯度下降法。梯度下降选择一个系数alpha,和迭代次数。
repeat until convergence {
\[\theta_0 := \theta_0 - \alpha\frac 1 {2m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})\]
\[\theta_1 := \theta_1 - \alpha\frac 1 {2m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})\cdot{x^{(i)}}\]
}
下图是二维梯度下降可视化


通过这种方式可以得出假设的参数。对于已知房子面积的房子就可以使用假设估计房价了。值得一提的是预测的房价不可能是100%准确,但是可以认为是在给定条件下最接近真实房价的值。
注意,梯度下降求的的只是极值点,有可能陷入局部最优,但是对于凸函数,极值点就是最值点,因为极值点只有一个。

LG with multiple variables 多元线性回归

更一般的情况是房价可能由多种因素综合决定,像房子年龄,卧室数目和楼层数。

这时hypothesis变为
\[h_\theta = \theta_0 + \theta_1x_1 + \cdots + \theta_nx_n\]
cost function变为
\[J(\theta_0,\theta_1, \cdots ,\theta_n)=\frac 1 {2m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2\] gradient descent变为
\[\theta_j := \theta_j - \alpha\frac 1 {2m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})\cdot{x^{(i)}_j}\]
注意使用feature scaling将不同范围的特征映射到相近的范围。

Polynomial regression多项式回归

更一般的情况是房价和面积是如下图的关系。解决方法转化为多元线性回归。

在这种情况下,一种可能是选择以下特征
\[x_1=size,x_2=(size)^2\]
hypothesis
\[h_\theta(x)=\theta_0+\theta_1(size)+\theta_2(size)^2\]
即为
\[h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2\]
通过这种方法就可以转换为多元线性回归问题。

Normal Equation

使用多元函数求极值的方法。只是以向量的方式表示。
当除了使用梯度下降外,还可以使用normal equation求参数。

\[X\theta=y\]
解得
\[\theta=(X^TX)^{-1}X^Ty\]
注意当features数多于样本数的情况
解决办法增加样本数,减少特征数,使用normalization

References

  1. Machine Learning by Andrew Ng
  2. 机器学习 周志华

Linear Regression 线性回归的更多相关文章

  1. Spark2 Linear Regression线性回归

    回归正则化方法(Lasso,Ridge和ElasticNet)在高维和数据集变量之间多重共线性情况下运行良好. 数学上,ElasticNet被定义为L1和L2正则化项的凸组合: 通过适当设置α,Ela ...

  2. Linear Regression(线性回归)(一)—LMS algorithm

    (整理自AndrewNG的课件,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) 1.问题的引出 先从一个简单的例子说起吧,房地产公司有一些关于Po ...

  3. Linear Regression(线性回归)(二)—正规方程(normal equations)

    (整理自AndrewNG的课件,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) 在上篇博客中,我们提出了线性回归的概念,给出了一种使代价函数最小的 ...

  4. 线性回归 Linear regression(3) 线性回归的概率解释

    这篇博客从一种方式推导了Linear regression 线性回归的概率解释,内容来自Standford公开课machine learning中Andrew老师的讲解. 线性回归的概率解释 在Lin ...

  5. Kernel Methods (3) Kernel Linear Regression

    Linear Regression 线性回归应该算得上是最简单的一种机器学习算法了吧. 它的问题定义为: 给定训练数据集\(D\), 由\(m\)个二元组\(x_i, y_i\)组成, 其中: \(x ...

  6. 线性回归、梯度下降(Linear Regression、Gradient Descent)

    转载请注明出自BYRans博客:http://www.cnblogs.com/BYRans/ 实例 首先举个例子,假设我们有一个二手房交易记录的数据集,已知房屋面积.卧室数量和房屋的交易价格,如下表: ...

  7. Matlab实现线性回归和逻辑回归: Linear Regression & Logistic Regression

    原文:http://blog.csdn.net/abcjennifer/article/details/7732417 本文为Maching Learning 栏目补充内容,为上几章中所提到单参数线性 ...

  8. Stanford机器学习---第二讲. 多变量线性回归 Linear Regression with multiple variable

    原文:http://blog.csdn.net/abcjennifer/article/details/7700772 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归 ...

  9. 机器学习之多变量线性回归(Linear Regression with multiple variables)

    1. Multiple features(多维特征) 在机器学习之单变量线性回归(Linear Regression with One Variable)我们提到过的线性回归中,我们只有一个单一特征量 ...

随机推荐

  1. js函数获取ev对象

    今天工作中遇到一个问题,就是平时获取一个ev(event)对象时候一般直接在调用方法里面写一个ev参数,即可直接拿到这个对象,但是有时候会遇到函数调用不是直接加在一个dom对象的后面,如: var o ...

  2. EPSG:4326

    简单说,"EPSG:4326"指的就是WGS84坐标系 参考 http://blog.csdn.net/cloverwindy/article/details/8663968 AU ...

  3. Caused by: java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V

    项目中各种缺包现象... Caused by: java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V ...

  4. uLua学习之调用Lua函数(五)

    前言 在我开始这个系列的第一篇文章中,我就提到了Lua脚本用来实现宿主脚本的配置性和扩展性.上节说到的调用外部Lua脚本就对应了它的两大特性之一的配置性,那么另一大特性如何来体现呢?这就要说我们今天的 ...

  5. oracle最高账号sys的密码认证模式

    CONNECT USERNAME/PASSWORD@SERVERNAME AS SYSDBAconnect 是指连接到username是指用户名password是指密码servername是指服务名a ...

  6. C#中split的方法汇总

    字符串的处理往往离不开split方法,下面介绍几种split的用法: 1.对单个字符进行分割(注意这里是字符,不是字符串,故只能用单引号‘’) string s=abcdeabcdeabcde; st ...

  7. springMvc-reset风格和对静态资源的管理

    1.所谓rest风格及比较优雅的,没有一大堆后缀的风格 2.对静态资源的管理,及样式.图片等不需要springMvc过滤 代码: 1.在springMvc的配置文件中添加mvc标签 <?xml ...

  8. 防止内存泄露 Linux下用Valgrind做检查

    用C/C++开发其中最令人头疼的一个问题就是内存管理,有时候为了查找一个内存泄漏或者一个内存访问越界,需要要花上好几天时间,如果有一款工具能够帮助我们做这件事情就好了,valgrind正好就是这样的一 ...

  9. MySQL的备份与恢复理解与备份策略

    MySQL的备份主要分为逻辑备份和物理备份 逻辑备份 在MySQL中逻辑备份的最大优点是对各种存储引擎都可以用同样的方法来备份.而物理备份则不同,不同的存储引擎有着不同的备份方法.Mysql中的逻辑备 ...

  10. 一、MySQL 安装

    MySQL 安装 所有平台的 MySQL 下载地址为: MySQL 下载 . 挑选你需要的 MySQL Community Server 版本及对应的平台. 注意:安装过程我们需要通过开启管理员权限来 ...