单变量线性回归univariate linear regression

代价函数square error cost function : \(J(\theta)=\frac{1}{2m}\sum_{i=1}^{m} (h_{\theta}(x^{(i)}) - y^{(i)})^2\)

\(2m\)的\(2\)是为了消去后续求导时的\(2\)

其中单变量时 \(h_{\theta}(x) =\theta_0 + \theta_1 x\) (h是hypothesis的意思)

上标(i)是指第i组训练数据

梯度下降法gradient decent:

脑补一个三维图像:\(\theta_0,\theta_1,J(\theta)\)

\(\theta_i -= \alpha \frac{\partial}{\partial \theta_i}h(\theta)\)

(导为正数时,\(\theta\)应减小;导为负数时,\(\theta\)应增大。 陡的时候快,缓的时候慢)

随着过程的执行, 可以让\(\alpha\)递减去更好的接近(不过即使\(\alpha\)是定值也能走到局部最优点)

只要 \(\alpha\)不会过大 (过大时J可能甚至越大,脑补一个人在盆地两边跳来跳去越跳越高)

无论单变量还是多变量,这种线性回归代价函数一定是bowl shape

当J经过一次迭代后变化不超过原来的\(10^-3\)时认为converage(如果是陡完平一段继续陡怎么办?)

多变量线性回归multivariate linear regression

\(h_{\theta} = \theta_0 x_0 + \theta_1 x_1 + \theta_2 x_2 + \cdots + \theta_n x_n\) 其中\(x_0 = 1\)

\(J(\theta)=\frac{1}{2m}\sum_{i=1}^{m} (h_{\theta}(x^{(i)}) - y^{(i)})^2\)

\(\theta_j\) -= \(\alpha \frac{\partial}{\partial \theta_j}h(\theta) = \alpha \frac 1 m \sum_{i=1}^m (h_{\theta}(x^{(i)})-y^{(i)})x^{(i)}_j\) (展开h,求偏导)

\(x^{(i)}_j\)表示第i组训练数据的第j个feature

(脑补表格:每列一个特征,最左添加一列\(x_0=1\),最后一列是标准值y,每行一个example)

令\(X\)为\(m\times(n+1)\)矩阵,\(Y\)为\(m\times1\)列向量

令\(theta\) 为\((n+1)\times1\)列向量,\(H\)为\(m\times1\)列向量

H= X * theta
del = H - Y
J = 1 / (2*m) * sum(del.^2)
theta -= alpha / m * (X’ * del)

为便于观察并减少迭代次数,我们需要对特征进行缩放,使其范围不至于过大,也不至于过小

例如\(\alpha\frac{x-min}{max-min}\), \(\alpha\frac{x-mean}{max-min}\) 具体情况而定

注意缩放后,predict时的特征也要对应用同种方式缩放

注意不要一个for循环过去把\(x_0\)也改了(另外注意octave是从一开始存的)

线性回归其他函数设计

如给定房子的长和宽和房价,特征不应是长和宽两个,而应该是占地面积

如给定数据点明显不是直线,可以考虑\(\theta_0 + \theta_1 x + \theta_2 x^2\)之类的,x是同一个feature, 令\(x_i\)为\(x^i\)转多变量问题

根号和ln其实长得很像

正规方程normal equation

公式:\(\theta = (X^TX)^{-1}X^TY\) (why?)

其中\(X\)为\(m*(n+1)\), \(Y\)为\(m*1\)

求逆即使是伪逆也能算对

使用时建议\(m>n\)

优势:不必要缩放features,不需要跑多次调整\(\alpha\)

效率比较:梯度下降(省去重复运算)是\(n*m*iter\),这个是\(n^3+n^2m\)。

n大的时候这个方法肯定不行。但一般来说n应该不大?m比较大?

regression的更多相关文章

  1. 逻辑回归 Logistic Regression

    逻辑回归(Logistic Regression)是广义线性回归的一种.逻辑回归是用来做分类任务的常用算法.分类任务的目标是找一个函数,把观测值匹配到相关的类和标签上.比如一个人有没有病,又因为噪声的 ...

  2. logistic regression与SVM

    Logistic模型和SVM都是用于二分类,现在大概说一下两者的区别 ① 寻找最优超平面的方法不同 形象点说,Logistic模型找的那个超平面,是尽量让所有点都远离它,而SVM寻找的那个超平面,是只 ...

  3. [Machine Learning & Algorithm]CAML机器学习系列1:深入浅出ML之Regression家族

    声明:本博客整理自博友@zhouyong计算广告与机器学习-技术共享平台,尊重原创,欢迎感兴趣的博友查看原文. 符号定义 这里定义<深入浅出ML>系列中涉及到的公式符号,如无特殊说明,符号 ...

  4. 机器学习 1 regression

    Linear regerssion 线性回归 回归: stock market forecast f(过去10年股票起伏的资料) = 明天道琼指数点数 self driving car f(获取的道路 ...

  5. 线性回归 Linear Regression

    成本函数(cost function)也叫损失函数(loss function),用来定义模型与观测值的误差.模型预测的价格与训练集数据的差异称为残差(residuals)或训练误差(test err ...

  6. Logistic Regression - Formula Deduction

    Sigmoid Function \[ \sigma(z)=\frac{1}{1+e^{(-z)}} \] feature: axial symmetry: \[ \sigma(z)+ \sigma( ...

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

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

  8. 局部加权回归、欠拟合、过拟合(Locally Weighted Linear Regression、Underfitting、Overfitting)

    欠拟合.过拟合 如下图中三个拟合模型.第一个是一个线性模型,对训练数据拟合不够好,损失函数取值较大.如图中第二个模型,如果我们在线性模型上加一个新特征项,拟合结果就会好一些.图中第三个是一个包含5阶多 ...

  9. PRML读书笔记——3 Linear Models for Regression

    Linear Basis Function Models 线性模型的一个关键属性是它是参数的一个线性函数,形式如下: w是参数,x可以是原始的数据,也可以是关于原始数据的一个函数值,这个函数就叫bas ...

  10. logistc regression练习(三)

    % Exercise 4 -- Logistic Regression clear all; close all; clc x = load('E:\workstation\data\ex4x.dat ...

随机推荐

  1. 三十三、MySQL 导入数据

    MySQL 导入数据 本章节我们为大家介绍几种简单的 MySQL 导出的数据的命令. 1.mysql 命令导入 使用 mysql 命令导入语法格式为: mysql -u用户名 -p密码 < 要导 ...

  2. GPIO实现I2C协议模拟(1)

    最近需要用GPIO模拟I2C协议,如果是在Linux下面比较简单,但在Windows下面,是否有没Linux那么简单了. 索性自己对I2C协议还有一些了解,翻了SPEC并结合示波器量出的实际信号分析, ...

  3. Mybatis中的增删改查

    相比jdbc mybatis在操作数据库方面比jdbc节省了大量的代码,及大量的代码冗余.使得操作起来更加简洁. 在Mapper中分别有着 select,insert, update,delete的这 ...

  4. Git 内部原理之 Git 对象哈希

    在上一篇文章中,将了数据对象.树对象和提交对象三种Git对象,每种对象会计算出一个hash值.那么,Git是如何计算出Git对象的hash值?本文的内容就是来解答这个问题. Git对象的hash方法 ...

  5. ZendFramework-2.4 源代码 - 关于MVC - View层 - 视图渲染器、视图插件管理器

    <?php // 1. 视图渲染器 class PhpRenderer implements Renderer, TreeRendererInterface { /** * 插件管理器 */ p ...

  6. java util - base64转换工具

    测试代码 package cn.java.codec.base64; public class Test { public static void main(String[] args) { Stri ...

  7. Vue2.0--14.小白入门教程--实例化多个vue对象,可初始化操作几种方法

    课程地址: https://study.163.com/course/courseMain.htm?courseId=1004711010 <!DOCTYPE html> <html ...

  8. python正则表达式入门篇

    文章来源于:https://www.cnblogs.com/chuxiuhong/p/5885073.html Python 正则表达式入门(初级篇) 本文主要为没有使用正则表达式经验的新手入门所写. ...

  9. 如何将emoji表情存放到mysql数据库中

    昨晚在爬取猫眼电影评论时在将评论信息插入到数据库中时出现问题,总是在插入一条数据时就会报错: 看着应该时字符编码的问题,比如新建的数据库新建的表,默认字符编码是:Latin1, 这种编码是无法插入中文 ...

  10. Java面试——多线程面试题总结

    )两者都在等待对方所持有但是双方都不释放的锁,这时便会一直阻塞形成死锁. //存放两个资源等待被使用 public class Resource { public static Object obj1 ...