单变量线性回归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. SummerVocation_Learning--java的自动打包与解包

    Auto Boxing: 自动将基础类型转换成对象(JDK1.5之后支持) Auto UnBoxing:自动将对象转换成基础类型 如 Map中的put方法,如果要传入键值对<a,1>,&l ...

  2. CentOS 7 环境下挂载新磁盘

    最近某个项目需要给数据库服务器添加磁盘,由于太久没搞过,就给虚拟机加了10G的空间,用来练习一下磁盘的挂载 一. 首先执行"fdisk -l"命令,查看磁盘信息 [root@loc ...

  3. 5-1 json模块

    1.json.loads(json_str)  把字符串(json串)转成字典 import json # 解析json的 json_str = ''' {"name":" ...

  4. mysql四:数据操作

    一 介绍 MySQL数据操作: DML ======================================================== 在MySQL管理软件中,可以通过SQL语句中的 ...

  5. thinkphp-PHP实现Excel导入 导出功能

    Excel导出 //功能:导出题库模板 public function get_contract_ex() { ob_get_clean(); header("Content-Typ:tex ...

  6. JZOJ 3508. 【NOIP2013模拟11.5B组】好元素

    3508. [NOIP2013模拟11.5B组]好元素(good) (File IO): input:good.in output:good.out Time Limits: 2000 ms  Mem ...

  7. JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)

    判断是否IE浏览器用的是window.navigator.userAgent,跟踪这个信息,发现在开发环境,识别为IE10,但访问服务器则识别为IE11,但IE11的userAgent里是没有MSIE ...

  8. 读书笔记3(Teamwork)

    今天我阅读了<构建之法>的第四章——两人合作,它主要讲述了在两人合作进行项目时与单人作业时的区别与不同,其中最重要的就是代码规范.代码规范:我们写的代码虽然是电脑运行,但是最终还是给人看的 ...

  9. python3.7 sys模块

    #!/usr/bin/env python __author__ = "lrtao2010" #python3.7 sys模块 #sys模块负责程序与python解释器的交互,提供 ...

  10. python3.7 装饰器

    #!/usr/bin/env python __author__ = "lrtao2010" #python3.7 装饰器 #装饰器 ''' 定义:本质就是一个函数,作用是为其他函 ...