单变量线性回归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. 问题010:在Java中,什么是常量,什么是变量?

    Java中常量如何分类? 1.整数常量,所有的整数. 整数又分为 int (integer) 占用4个字节 一个字节占几个二进制位?8个二进制位,一个整型变量占32位二进制位 (内存中开辟出来的存储空 ...

  2. 正则python正则,提取\t\n里面的大写英文字母

    ss = '['\r\n\t\t\t\t\t\t\t\t\t', '\r\n\t\t\t\t\t\t\t', '\r\n\t\t\t\t\t\t\t\t\tCMA CGM JACQUES JOSEPH ...

  3. CSS+JS实现流星雨动画

    引言 平常会做一些有意思的小案例练手,通常都会发到codepen上,但是codepen不能写分析.        所以就在博客上开个案例分享系列,对demo做个剖析.目的以分享为主,然后也希望各路大神 ...

  4. 【Ecshop】将内置的 FCkeditor 更换为 UEditor

    1.下载UE,解压到includes/,更名目录名为ueditor 注意更改配置后端文件上传路径,参考文档 2.修改admin/includes/lib_main.php,添加 /** * 生成编辑器 ...

  5. GoF23种设计模式之结构型模式之桥接模式

    一.概述         将类的抽象部分与实现分部分离开来,使它们都可以独立地变化. 二.适用性 1.你不希望在抽象和实现之间有一个固定的绑定关系的时候.例如:在程序运行时实现部分应可以被选择或切换. ...

  6. bootmem API总结

    bootmem_init()函数执行完成后,linux启动初期的bootmem分配器就初始化完成了,可以调用bootmem提供的API分配内存. 这些API在include/linux/bootmem ...

  7. 2018年江西理工大学C语言程序设计竞赛(高级组) 三角平方数

    题目描述 三角数:形如图a,圆点摆放成等边三角形的数字,则为三角数. (图a) 平方数:形如图b,小方块摆放成正方形的数字,则为平方数. (图b) 那么如果一个数字既是三角形数又是平方数,则称为三角平 ...

  8. Linux多线程总结

    一.Linux线程 进程与线程之间是有区别的,不过Linux内核只提供了轻量进程的支持,未实现线程模型.Linux是一种“多进程单线程”的操作系统.Linux本身只有进程的概念,而其所谓的“线程”本质 ...

  9. Not a git repository (or any of the parent directories): .git解决

    首先git init .然后在执行就行了.意思应该是当前目录不是git.

  10. 运维Python面试题

    本章内容 1 osodjfoskjdofjsdjfjsdf 123 sdfdfadf   1 2 3 4 5 6 from django.db import models     class user ...