Multivariate Linear Regression

  1. Multiple Features

    1. Xj(i)X_j^{(i)}Xj(i)​ 其中j表示迭代次数,i表示矩阵索引
    2. 转换
      原来:hθ(x)=θ0+θ1x1+θ2x2+⋯+θnxnh_{\theta}(x)=\theta_{0}+\theta_{1} x_{1}+\theta_{2} x_{2}+\cdots+\theta_{n} x_{n}hθ​(x)=θ0​+θ1​x1​+θ2​x2​+⋯+θn​xn​
      definex0=1x_0=1x0​=1
      现在:hθ(x)=θTx=θ0x0+θ1x1+θ2x2+⋯+θnxnh_{\theta}(x)=\theta^{T} x=\theta_{0} x_{0}+\theta_{1} x_{1}+\theta_{2} x_{2}+\cdots+\theta_{n} x_{n}hθ​(x)=θTx=θ0​x0​+θ1​x1​+θ2​x2​+⋯+θn​xn​
  2. Gradient descent for multilple variables
    New algorithm (n≥1)(n \geq 1)(n≥1) : (多个特征变量)
    Repeat {

    θj:=θj−α1m∑i=1m(hθ(x(i))−y(i))xj(i)\theta_{j}:=\theta_{j}-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{j}^{(i)}θj​:=θj​−αm1​∑i=1m​(hθ​(x(i))−y(i))xj(i)​

    (simultaneously update θj\theta_{j}θj​ for j=0,…,nj=0, \ldots, nj=0,…,n)
    }
    其中:先计算(hθ(x(i))−y(i))xj(i)\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right) x_{j}^{(i)}(hθ​(x(i))−y(i))xj(i)​,再求和

  3. Gradient descent in practice I :Feature Scaling (特征缩放)

    1. 目的:
      Get every feature into approximately a −1≤xi≤1-1 \leq x_{i} \leq 1−1≤xi​≤1 range.
      控制特征范围大致相近,使梯度下降法可以更快的收敛
    2. 方法
      Mean normalization 均值归一化
      新特征值 = (特征值 - 均值)/范围
  4. Gradient descent in practice II :Learning rate (学习率)

    1. 判断收敛条件:
      代价函数迭代次数的变化曲线
      代价函数没有随着迭代次数的增加而减小时,减小学习率
    2. 学习率的选取
      0.001, 0.003, 0.01, 0.03, 0.1, 0.3, 1
  5. Features and polynomial regression 特征选择和多项式回归
    hθ(x)=θ0+θ1x1+θ2x2+θ3x3=θ0+θ1(size⁡)+θ2(size⁡)2+θ3(size⁡)3x1=(size⁡)x2=(size⁡)2x3=(size⁡)3\begin{aligned} h_{\theta}(x) &=\theta_{0}+\theta_{1} x_{1}+\theta_{2} x_{2}+\theta_{3} x_{3} \\ &=\theta_{0}+\theta_{1}(\operatorname{size})+\theta_{2}(\operatorname{size})^{2}+\theta_{3}(\operatorname{size})^{3} \\ x_{1} &=(\operatorname{size}) \\ x_{2} &=(\operatorname{size})^{2} \\ x_{3} &=(\operatorname{size})^{3} \end{aligned}hθ​(x)x1​x2​x3​​=θ0​+θ1​x1​+θ2​x2​+θ3​x3​=θ0​+θ1​(size)+θ2​(size)2+θ3​(size)3=(size)=(size)2=(size)3​

  6. Normal equation 正规方程

    1. 目的
      令代价函数导数为0 ,直接求出最优值,无需迭代
    2. 表达式
      Xθ=yX\theta=yXθ=y 推导出:
      θ=(XTX)−1XTy\theta=\left(X^{T} X\right)^{-1} X^{T} yθ=(XTX)−1XTy
    3. 注意点
      使用正规方程时,不需要进行特征缩放
    4. 正规方程法和梯度下降法的比较
梯度下降法 正规方程法
需要确定学习率 不需要确定学习率
需要多次的迭代 不需要迭代
复杂度O(kn2)O(kn^2)O(kn2) 复杂度O(n3)O(n^3)O(n3), need to calculate inverse of XTXX^{T}XXTX
适用于特征变量较多时 特征变量较多时变慢

说明:使用正规方程法,计算矩阵的逆时比较耗时,特征变量的数量超过10000时,建议使用梯度下降法。

  1. Normal equation and non-invertibility 正规方程以及不可逆性

    1. 说明:
      上述在求解θ\thetaθ时,用到(XTX)−1\left(X^{T} X\right)^{-1}(XTX)−1,要考虑到其中XTXX^{T} XXTX是否可逆??
    2. XTXX^{T} XXTX不可逆的原因
      特征变量冗余 & 特征变量过多
    3. octave操作
      1. pinv和inv均可求解矩阵的逆,pinv求解的是矩阵的伪逆,即使矩阵的逆不存在,也可以求出来
      2. 方程求解的代码: pinvX`*X*X`*y

Octave Tutorial

  1. Basic operations

    1 ~= 2
    1 && 0
    1 || 0
    xor(1,0)
    disp(sprintf('2 decimals: %0.2f', a))
    v = 1:0.1:2
    w = -6 + sqrt(10)*(randn(1,10000));
    hist(w)
    hist(w,50) % plot histogram using 50 bins
    I = eye(4)
    
  2. Moving Data Around
    size(A)
    size(A,1)
    length(v)
    load q1y.dat
    whos            % list variables in workspace (detailed view)
    clear q1y       % clear command without any args clears all vars
    save hello.mat v
    save hello.txt v -ascii
    A = [A, [100; 101; 102]];      % append column vec
    A(:)                            % Select all elements as a column vector.
    C = [A, B]                         % concatenating A and B matrices side by side
    C = [A; B]                         % Concatenating A and B top and bottom
    
  3. Computing on data
    A * C        % matrix multiplication
    A .* B      % element-wise multiplication
    A .^ 2
    v + ones(length(v), 1)
    A'         % 矩阵转置
    [val,ind] = max(a)
    find(a < 3)
    [r,c] = find(A>=7)     % row, column indices for values matching comparison
    sum(a)
    prod(a)                 # 求积
    floor(a) % or ceil(a)   # 向上取整 向下取整
    max(A,[],1)             # maximum along columns
    max(A,[],2)             # maximum along rows
    sum(sum( A .* eye(9) ))
    sum(sum( A .* flipud(eye(9)) ))         # 沿对角线翻转
    pinv(A)
    
  4. Plotting Data
    plot(t,y2,'r');
    legend('sin','cos');
    print -dpng 'myPlot.png'
    close;
    figure(2), clf;
    axis([0.5 1 -1 1]);figure;
    imagesc(magic(15)), colorbar, colormap gray;    # 灰度矩阵
    

5. Control statements & Functions ```python v = zeros(10,1); for i=1:10, v(i) = 2^i; end;

i = 1;
while true, v(i) = 999; i = i+1;if i == 6,break;end;
endfunction y = squareThisNumber(x)y = x^2;squareThisNumber(2)# 一个函数,两个返回值
function [y1, y2] = squareandCubeThisNo(x)y1 = x^2y2 = x^3
[a,b] = squareandCubeThisNo(x)
```
  1. Vectorization
    目的:简单,提高计算效率

备注:

  1. submit 提交作业
  2. 需要生成码的话,从网站上的提交页面复制

【学习笔记】吴恩达机器学习 WEEK2 线性回归 Octave教程相关推荐

  1. 吴恩达-机器学习-多元线性回归模型代码

    吴恩达<机器学习>2022版 第一节第二周 多元线性回归 房价预测简单实现         以下以下共两个实验,都是通过调用sklearn函数,分别实现了 一元线性回归和多元线性回归的房价 ...

  2. 吴恩达-机器学习-一元线性回归模型实现

    吴恩达<机器学习>2022版 第一周 一元线性回归 房价预测简单实现 import numpy as np import math, copy#输入数据 x_train = np.arra ...

  3. 吴恩达机器学习 -- 多变量线性回归

    5.1 多维特征 前一周所讲是单变量线性回归,即 ,是只有一个变量 的假设函数,现在对房价预测模型有了更多的参考特征,比如楼层数,卧室的数量,还有房子的使用年限.根据这些特征来预测房价.此时的变量有多 ...

  4. 学习笔记 吴恩达 斯坦福大学公开课 :机器学习课程-1 机器学习的动机与应用

    机器学习的动机与应用 1,机器学习的定义 1959:"Field of study that gives computers the ability to learn without bei ...

  5. 吴恩达机器学习week2

    1.Mean normalization(均值归一化) 我们可以将均值归一化理解为特征缩放的另一种方法. 特征缩放和均值归一化的作用都是为了减小样本数据的波动使得梯度下降能够更快速的寻找到一条'捷径' ...

  6. Python学习--Machine-Learning 吴恩达机器学习编程作业 (第六周)

    Machine-Learning 编程作业 Programming Exercise 6:Support Vector Machines SVM的简单应用 part1 示例文件1使用线性核函数 par ...

  7. 吴恩达机器学习MATLAB代码笔记(1)梯度下降

    吴恩达机器学习MATLAB代码笔记(1)梯度下降 单变量线性回归 1.标记数据点(Plotting the Date) fprintf('Plotting Data') data = load('D: ...

  8. 5. 吴恩达机器学习课程-作业5-偏差和方差

    fork了别人的项目,自己重新填写,我的代码如下 https://gitee.com/fakerlove/machine-learning/tree/master/code 代码原链接 文章目录 5. ...

  9. 吴恩达机器学习课程-作业1-线性回归(python实现)

    Machine Learning(Andrew) ex1-Linear Regression 椰汁学习笔记 最近刚学习完吴恩达机器学习的课程,现在开始复习和整理一下课程笔记和作业,我将陆续更新. Li ...

最新文章

  1. 【行为型模式】《大话设计模式》——读后感 (16)加薪非要老板批?——职责链模式...
  2. mysql聚合函数count用法_MySQL中聚合函数count的使用和性能优化技巧
  3. 键盘各个键对应的ASCLL值
  4. Serv-U搭建FTP服务器
  5. python手机话费_查询话费订单详情示例代码
  6. 微课|中学生可以这样学Python(例6.3):猜数游戏
  7. C++_基础部分_C++文件操作_文件的写入操作---C++语言工作笔记076
  8. C#/Net的语法和一些小技巧笔记
  9. 啦啦外卖小程序上传提示43003解决办法
  10. “绿坝-花季护航”软件
  11. win7计算机锁频图片怎么设置,win7锁屏背景壁纸如何修改
  12. Netty实现自定义协议和源码分析
  13. 国外服务器修改dns地址,怎样设置国外DNS国外DNS服务器域名解析方法.doc
  14. 在英文邮件中,如何在开头对收件人进行称呼?
  15. 怎么在WORD2016里给文档空白处添加下划线,干货在这里,WORD2016空白处如何添加下划线
  16. 宅家必备 | 笔记本开启WiFi共享
  17. 电脑从硬盘启动计算机,如何设置电脑从硬盘启动优先
  18. 如何提升公众号关注率,让用户看完文章关注你
  19. 请不要再记笔记了,四个词把人分为四类,最糟糕的一类人,颠覆了我们的认知。
  20. redis设置密码以及jedisPool设置密码

热门文章

  1. Python之IO编程
  2. 这个网盘搜索好像还不错
  3. 大白鱼备考云笔记冲刺周期第一天
  4. FFmpeg在Linux下编译使用
  5. iOS --- DIY文件名批量修改
  6. Hbase0.98的环境搭建
  7. 视频动态库测试及心得
  8. HP6531s安装windows2003无法调节亮度的解决方法
  9. java中的日期时间的计算与比较
  10. 做python自动化得时候怎么添加断言_在编写Web自动化测试用例的时候,如何写断言使新手不解,严格意义上来讲,没有断言的自动化脚本不能叫测试用例。就像功能测试一样,当测试人员做了一些操作...