吴恩达logistics

news/2024/11/9 20:37:16

逻辑回归

(1) 概述

  • 逻辑回归算法用于分类问题,例如区分肿瘤的良性和恶性。空气质量的优,良,轻度污染,中度污染,重度污染等
  • 预测的变量类型为离散型的变量。
  • 将因变量可能属于的两个类称为负向类和正向类,因变量 y ∈ ( 0 , 1 ) y\in(0,1) y(0,1),其中0表示负向类(表示我们要寻找的东西不存在),1表示正向类(表示我们要寻找的东西存在)。在这里插入图片描述

(2)逻辑回归模型的模型假设

  • 模型: h θ ( x ) = g ( θ T x ) h_\theta(x)=g(\theta^Tx) hθ(x)=g(θTx)
  • g ( x ) g(x) g(x)的形式为 g ( x ) = 1 1 + e − x g(x)=\dfrac{1}{1 +e^{-x}} g(x)=1+ex1,称为Sigmoid function。
    在这里插入图片描述
  • 做这个变换的目的在于,在一一映射的前提下,把函数值卡在范围 [ 0 , 1 ] [0,1] [0,1]之间,判断时就可以当 h θ ( x ) ≥ 0.5 h_\theta(x)\geq0.5 hθ(x)0.5时判断 y = 1 y=1 y=1,在 h θ ( x ) < 0.5 h_\theta(x){<}0.5 hθ(x)<0.5 时判断 y = 0 y=0 y=0,而 x = 0 x=0 x=0 h θ ( x ) h_\theta(x) hθ(x)恰好为 0.5 0.5 0.5,因此当 x > 0 x>0 x>0时取 1 1 1,当$ x{<} 0$时取 0 0 0
  • h θ ( x ) = P ( y = 1 ∣ x ; θ ) h_\theta(x)=P(y=1|x;\theta) hθ(x)=P(y=1x;θ) h θ ( x ) h_\theta(x) hθ(x)是一个概率值,是在 x ; θ x;\theta x;θ的前提下。

(3)判定边界

  • 所谓的判定边界其实就是画出的一条线,在线的不同侧是不同的类。
  • 线性边界
    在这里插入图片描述
    在这里 h θ ( x ) = g ( θ 0 + θ 1 x 1 + θ 2 x 2 ) h_\theta(x)=g(\theta_0+\theta_1x_1+\theta_2x_2) hθ(x)=g(θ0+θ1x1+θ2x2) θ \theta θ是向量[3,-1,-1],其实也就是 x 1 + x 2 ≥ 3 x_1+x_2\geq3 x1+x23,即用直线 x 1 + x 2 = 3 x_1+x_2=3 x1+x2=3将这两块区域分开。(有点类似线性规划)。
  • 圆形边界
    在这里插入图片描述
    h θ ( x ) = g ( θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 1 2 + θ 4 x 2 2 ) h_\theta(x)=g(\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_1^2+\theta_4x_2^2) hθ(x)=g(θ0+θ1x1+θ2x2+θ3x12+θ4x22)求解可知 [ θ 0 , θ 1 , θ 2 , θ 3 , θ 4 ] = [ − 1 , 0 , 0 , 1 , 1 ] [\theta_0,\theta_1,\theta_2,\theta_3,\theta_4]=[-1,0,0,1,1] [θ0,θ1,θ2,θ3,θ4]=[1,0,0,1,1]。相当于 x 2 + y 2 = 1 x^2+y^2=1 x2+y2=1是那条分界线。
    (4)代价函数
  • 变量说明
    • 训练集: { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) … ( x ( m ) , y ( m ) ) } \{(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)})\dots(x^{(m)},y^{(m)})\} {(x(1),y(1)),(x(2),y(2))(x(m),y(m))}
    • x ( i ) = ( x 0 , x 1 , x 2 , … , x n ) T x^{(i)}=(x_0,x_1,x_2,\dots,x_{n})^T x(i)=(x0,x1,x2,,xn)T每一个训练元素均有n个特征值。
    • y ∈ ( 0 , 1 ) , y y\in(0,1),y y(0,1),y取0,1中的某一个值,表示不存在或者存在。
    • h θ ( x ) = 1 1 + e − θ T x h_\theta(x)=\dfrac{1}{1+e^{-\theta^{T}x}} hθ(x)=1+eθTx1
  • 函数规定
    • 如果继续沿用之前的定义,令代价函数 J ( θ ) = 1 m ∑ i = 1 m 1 2 ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta)=\dfrac{1}{m}\sum\limits_{i=1}\limits^{m}\dfrac{1}{2}(h_\theta(x^{(i)})-y^{(i)})^2 J(θ)=m1i=1m21(hθ(x(i))y(i))2。这里会产生一个问题,即 J ( θ ) J(\theta) J(θ)这个函数不再是一个凹函数了,因此不能很好地使用梯度下降法求得全局的最小值。
      在这里插入图片描述
      在这里插入图片描述

    • 为保证函数还是一个凹函数,引入下面的代价函数:
      ⭐️ c o s t ( h θ ( x ) , y ) = { − log ⁡ ( h θ ( x ) ) , i f y = 1 − l o g ( 1 − h θ ( x ) ) , i f y = 0 cost(h_\theta(x),y)=\begin{cases} -\log(h_\theta(x)), & if{\quad}y=1\\ -log(1-h_\theta(x)), & if{\quad}y=0 \end{cases} cost(hθ(x),y)={log(hθ(x)),log(1hθ(x)),ify=1ify=0
      1️⃣ 当 y = 1 y=1 y=1时,函数图像是:
      在这里插入图片描述
      可以看出,随着 h θ ( x ) h_\theta(x) hθ(x)的值越来越接近1,代价函数的值趋向0,这是符合 y = 1 y=1 y=1的这个前提的。
      2️⃣当 y = 0 y=0 y=0时,函数图像是:
      在这里插入图片描述
      可以看出,随着 h θ ( x ) h_\theta(x) hθ(x)的值越来越接近1,代价函数的值趋向无穷,这是符合 y = 0 y=0 y=0的这个前提的。
      综合上两种情况
      c o s t ( h θ ( x ) , y ) = − y log ⁡ ( h θ ( x ) ) − ( 1 − y ) l o g ( 1 − h θ ( x ) ) cost(h_\theta(x),y)=-y\log(h_\theta(x))-(1-y)log(1-h_\theta(x)) cost(hθ(x),y)=ylog(hθ(x))(1y)log(1hθ(x))
      代入后得到:
      J ( θ ) = 1 m ∑ i = 1 m [ − y ( i ) log ⁡ ( h θ ( x ( i ) ) ) − ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) ] J\left( \theta \right)=\dfrac{1}{m}\sum\limits_{i=1}^{m}{[-{{y}^{(i)}}\log \left( {h_\theta}\left( {{x}^{(i)}} \right) \right)-\left( 1-{{y}^{(i)}} \right)\log \left( 1-{h_\theta}\left( {{x}^{(i)}} \right) \right)]} J(θ)=m1i=1m[y(i)log(hθ(x(i)))(1y(i))log(1hθ(x(i)))] 即: J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) log ⁡ ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) ] J\left( \theta \right)=-\dfrac{1}{m}\sum\limits_{i=1}^{m}{[{{y}^{(i)}}\log \left( {h_\theta}\left( {{x}^{(i)}} \right) \right)+\left( 1-{{y}^{(i)}} \right)\log \left( 1-{h_\theta}\left( {{x}^{(i)}} \right) \right)]} J(θ)=m1i=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]
      在得到这样一个代价函数以后,我们便可以用梯度下降算法来求得能使代价函数最小的参数了。算法为:

      Repeat { θ j : = θ j − α ∂ ∂ θ j J ( θ ) \theta_j := \theta_j - \alpha \dfrac{\partial}{\partial\theta_j} J(\theta) θj:=θjαθjJ(θ) (simultaneously update all ) }

      求导后得到:

      Repeat { θ j : = θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) ) \theta_j := \theta_j - \alpha \dfrac{1}{m}\sum\limits_{i=1}^{m}{{\left( {h_\theta}\left( \mathop{x}^{\left( i \right)} \right)-\mathop{y}^{\left( i \right)} \right)}}\mathop{x}_{j}^{(i)}) θj:=θjαm1i=1m(hθ(x(i))y(i))xj(i)) (simultaneously update all ) }(这个求导后的式子可以推出来,但这里略去证明)

(5)高级优化

  • 共轭梯度法 BFGS (变尺度法) 和L-BFGS (限制变尺度法)
  • 函数测试:
    function [jVal, gradient]=costFunction(theta)
        
      jVal=(theta(1)-5)^2+(theta(2)-5)^2;
        
      gradient=zeros(2,1);
        
      gradient(1)=2*(theta(1)-5);
        
      gradient(2)=2*(theta(2)-5);
        
    end
    
    options=optimset('GradObj','on','MaxIter',100);
    ​
    initialTheta=zeros(2,1);
        
    [optTheta, functionVal, exitFlag]=fminunc(@costFunction, initialTheta, options);
    

(6)多类别分类

  • 思想:转化为二分类问题。
  • 构造:
    \quad y ∈ { 1 , 2 , … , n } y\in\{1,2,\dots,n\} y{1,2,,n}的类别进行分划,将 y = i y=i y=i标记为正向类,把其余的标记为负向类,完成这样的一个标记可以求出一个分划函数 h θ ( x ) h_\theta(x) hθ(x)其中对每一个 i i i h θ ( i ) ( x ) = p ( y = i ∣ x ; θ ) h^{(i)}_\theta(x)=p(y=i|x;\theta) hθ(i)(x)=p(y=ix;θ)
  • 预测:
    \quad 输入一个 x x x,找到 max ⁡ i h θ ( i ) ( x ) \max\limits_{i}h^{(i)}_\theta(x) imaxhθ(i)(x),即让 y = i y=i y=i的概率最大,这时,明显 y y y应当取 i i i
  • 例如对三类的情况:
    在这里插入图片描述

(7)作业题目(matlab)

  • sigmoid函数计算
      function g = sigmoid(z)
          g = zeros(size(z));
          g=1./(1+exp(-z));
      end
    
  • 代价函数的计算(带有正则化项)
      function [J, grad] = costFunctionReg(theta, X, y, lambda)
          m = length(y); % number of training examples
          J = 0;
          grad = zeros(size(theta));
          h_theta=sigmoid(X*theta);
          theta(1,1)=0;%这里将J(1,1)置为0目的是不对theta0进行优化
          J=(1/m)*(-1.0*y'*log(h_theta)-(1-y)'*log(1-h_theta))+(lambda/(2*m))*(theta'*theta);
          grad=(1/m)*X'*(h_theta-y)+(lambda/m)*theta;
      end
    
  • 进行特征映射
      function out = mapFeature(X1, X2)
      % MAPFEATURE Feature mapping function to polynomial features
      %
      %   MAPFEATURE(X1, X2) maps the two input features
      %   to quadratic features used in the regularization exercise.
      %
      %   Returns a new feature array with more features, comprising of 
      %   X1, X2, X1.^2, X2.^2, X1*X2, X1*X2.^2, etc..
      %
      %   Inputs X1, X2 must be the same size
      %
          degree = 6;
          out = ones(size(X1(:,1)));
          for i = 1:degree
              for j = 0:i
                  out(:, end+1) = (X1.^(i-j)).*(X2.^j);%这里end+1相当于一个动态数组
              end
          end
      end
    
    

http://www.niftyadmin.cn/n/2133355.html

相关文章

浙江大学数学专业考研试题参考解答

浙江大学2009年数学分析考研试题参考解答浙江大学2010年数学分析考研试题参考解答浙江大学2011年数学分析考研试题参考解答浙江大学2012年数学分析考研试题参考解答浙江大学2013年数学分析考研试题参考解答浙江大学2014年数学分析考研试题参考解答浙江大学2015年数学分析考研试…

吴恩达课程中的正则化

#Regulation (1) 过拟合问题 ⭐️对过拟合的理解: 本质可以理解成数据集噪声对整个数据拟合时造成的泛化性下降。 \quad比如让机器来识别甜甜圈&#xff0c;一开始提供的特征为圆的、中间有一个空洞&#xff0c;这时机器就会对甜甜圈进行一个基本的判断。但是&#xff0c;当又…

matlab 建模核心用法

matlab 建模核心用法 文章目录(1) 最基础用法(2) matlab 基础函数(3) matlab 文件导入(4) matlab 作图(5) matlab 匿名函数(6) matlab 随机数(1) 最基础用法 (1) 在每一行的语句后面加上分号,表示不显示运行结果。 (2) 多行注释:选中要注释的若干语句,快捷键CtrlR。 (3) 取消…

linux部分命令的学习

最近接触了Linux&#xff0c;所以就写了一些简单的Linux命令&#xff0c;和大家分享&#xff0c;包括简单命令、文本操作命令、目录操作命令和文本编辑vi的使用。1.简单命令1.echo命令将参数显示到标准输出。$ echo hello word!2.date命令显示或设置系统的日期和时间。&#xf…

SVD matlab图像处理

SVD 图像处理 奇异值分解在图形压缩中的应用 文章目录(1) 奇异值分解(2) 利用 SVD 对原数据进行降维(3) matlab的相关操作1. 对单张图片的处理2. 对文件夹中的图片批量处理3. 视频处理(1) 奇异值分解 AmnUmm∑mnVnnTA_{m\times n}U_{m\times m}\sum\nolimits_{m\times n}V^T_{n…

[PHP] 编译构建最新版PHP源码

获取最新PHP代码git clone https://git.php.net/repository/php-src.git构建编译环境apt-get install build-essential 编译&#xff1a;./buildconf报错autoconf not found&#xff0c;apt-get install autoconf ./configure --help./configure --prefix/tmp/ --disable-all /…

并查集的一般操作 ②

RT 题目描述 明天就是母亲节了&#xff0c;电脑组的小朋友们在忙碌的课业之余挖空心思想着该送什么礼物来表达自己的心意呢&#xff1f;听说在某个网站上有卖云朵的&#xff0c;小朋友们决定一同前往去看看这种神奇的商品&#xff0c;这个店里有n朵云&#xff0c;云朵已经被老板…

数模必备插值拟合

插值与拟合 两者都可用于对较少数据量的补充&#xff0c;但是一般插值用于数据量较少的情况n<30 拟合用于数据量较多的情况 n>30。 文章目录(1)插值与拟合采用的方法1.插值2.拟合(2)具体的代码操作方法1.插值的matlab2.拟合的matlab(1)插值与拟合采用的方法 1.插值 拉格…