机器学习|Week3 Logistic Regression and Regularzation

逻辑回归与正则化详解
本文深入探讨了逻辑回归模型及其在分类问题中的应用,详细解析了逻辑回归的数学原理,包括Sigmoid函数、决策边界及代价函数的推导。同时,针对过拟合问题,介绍了正则化技术,通过调整参数避免模型复杂度过高,保持泛化能力。

作为英语课程,读中文参考资料的确有助于理解,但是出于对以后更长久的学习优势考虑,笔记中我会尽量采用英文来表述,这样有助于熟悉专有名词以及常见语法结构,对于无中文翻译的资料阅读大有裨益。

Week3 Logistic Regression and Regularzation

一、Logistic Regression

  1. Classification分类问题

  2. Logistic Regression逻辑回归模型

    • hθ(x)=g(θTX)h_\theta(x)=g(\theta_TX)hθ(x)=g(θTX)
      • 对于给定的输入变量X,θ\thetaθ,计算输出变量=1的可能性
      • hθ(x)=P(y=1∣x;θ)h_\theta(x)=P(y=1|x;\theta)hθ(x)=P(y=1x;θ)
    • X:Feature Vector
    • g:Logistic function/Sigmoid function
      • g(z)=11+e−zg(z)=\frac{1}{1+e^{-z}}g(z)=1+ez1
  3. Decision Boundary决策边界

    1. 根据逻辑回归模型函数可归纳得到

      θTx>=0,y=1\theta^Tx>=0,y=1θTx>=0,y=1

      θT<0,y=0\theta^T<0,y=0θT<0,y=0

  4. 如何拟合Logistic Regression的参数θ\thetaθ——Cost Function

    1. We know in Linear Regression
      • j(θ)=1m∑i=1m12(hθ(xi)−yi)2j(\theta)=\frac{1}{m}\sum_{i=1}^{m}\frac{1}{2}(h_\theta(x^i)-y^i)^2j(θ)=m1i=1m21(hθ(xi)yi)2
    2. In Logistic Regression
      • J(θ)=1m∑i+1mCost(hθ(xi)−yi)J(\theta)=\frac{1}{m}\sum_{i+1}^{m}Cost(h_\theta(x^i)-y^i)Jθ)=m1i+1mCost(hθ(xi)yi)
        • Cost(hθ,y)=−log(hθ(x)),y=1Cost(h_\theta,y)=-log(h_\theta(x)) ,y=1Cost(hθ,y)=log(hθ(x)),y=1(成本函数)
        • Cost(hθ(x),y)=−log(1−hθ(x)),y=0Cost(h_\theta(x),y)=-log(1-h_\theta(x)) ,y=0Cost(hθ(x),y)=log(1hθ(x)),y=0
        • Cost(hθ,y)=−ylog(h)−(1−y)log(1−h)Cost(h_\theta,y)=-ylog(h)-(1-y)log(1-h)Cost(hθ,y)=ylog(h)(1y)log(1h)
        • 带入J(θ\thetaθ)后得到的J可以证明是一个凸函数,化简后代价函数形式上与Linear Logistic的代价函数一致
        • J(θ)=1m∑i=1m[hθ−y]xjJ(\theta)=\frac{1}{m}\sum_{i=1}^{m}[h_\theta-y]x_jJ(θ)=m1i=1m[hθy]xj
      • Meaning: when y=0 h=0,then Cost=0;when y=0,h=1,then cost->+∞+\infty+
    3. Octave中的高级函数
      • costFunction自动寻找当前参数的最优高级算法,返回
  5. Multiclass Classification——one-vs-all 一对多,多类别分类

    1. 将数据分成1和很多类,仍然是二元分类

      hθ(x)=p(y=i∣x;θ);i=1,2...kh_\theta(x)=p(y=i|x;\theta);i=1,2...khθ(x)=p(y=ix;θ);i=1,2...k

二、Regularization正则化

  1. 过拟合问题——与training set高度吻合,但是失去预测意义
  2. 解决方案
    • 手动丢弃或者模型选择
    • 正则化,保留所有Features,但是减少参数大小
      • 以多项式拟合为例,过拟合是由高次项导致的,让高次项系数趋于0是解决思想
  3. 对J(θ\thetaθ)引入Regularization Parameter(正则化参数)(不对θ0\theta_0θ0进行修正(or called “惩罚”)
    • J(θ)=12m[∑i=1m(hθ(xi)−yi)2+λ∑j=1nθj2]J(\theta)=\frac{1}{2m}[\sum_{i=1}^{m}(h_\theta(x^i)-y^i)^2+\lambda\sum_{j=1}^n\theta_j^2]J(θ)=2m1[i=1m(hθ(xi)yi)2+λj=1nθj2]
    • 原理解释:令λ\lambdaλ很大,则为了Cost Function尽量小,所有θi(i!=0)\theta_i(i!=0)θi(i!=0)都会减小;但也不能太大,不然所有参数趋于0
  4. Regularized Linear Regression正则化的线性回归
    • θ0:=θ0−α[1m∑i=1m(hθ−yi)x0i]\theta_0:=\theta_0-\alpha[\frac{1}{m}\sum_{i=1}^m(h_\theta-y^i)x_0^i]θ0:=θ0α[m1i=1m(hθyi)x0i]
    • θj:=θj−α[1m∑i=1m(hθ−yi)xji+λmθj]=θj(1−aλm)−a1m∑i=1m(hθ−yi)xj\theta_j:=\theta_j-\alpha[\frac{1}{m}\sum_{i=1}^m(h_\theta-y^i)x_j^i+\frac{\lambda}{m}\theta_j]=\theta_j(1-a\frac{\lambda}{m})-a\frac{1}{m}\sum_{i=1}^{m}(h_\theta-y^i)x_jθj:=θjα[m1i=1m(hθyi)xji+mλθj]=θj(1amλ)am1i=1m(hθyi)xj
  5. Regularized Logistic Regression正则化的逻辑回归
    • J(θ)=1m∑i=1m[−yilog(hθ)−(1−yi)log(1−hθ)]+λ2m∑j=1nθj2J(\theta)=\frac{1}{m}\sum_{i=1}^{m}[-y^ilog(h_\theta)-(1-y^i)log(1-h_\theta)]+\frac{\lambda}{2m}\sum_{j=1}^n\theta_j^2J(θ)=m1i=1m[yilog(hθ)(1yi)log(1hθ)]+2mλj=1nθj2
    • 梯度下降函数与Linear Regression形式上一致

三、Week3 编程练习

  1. Logistic Regression

    1. Visuralizing the data

      Function plot(x,y,color,style...)

      plot函数提供的可选线属性如下表

      可选全局属性如下

      ​ LineWidth——指定线宽

      ​ MarkerEdgeColor——指定标识符的边缘颜色

      ​ MarkerFaceColor——指定标识符填充颜色

      ​ MarkerSize——指定标识符的大小

      • Find函数

        • Find(X)找到X为真的结果,元素顺序按列排序
        • [row,col] = find(X>0 & X<10,3),找到矩阵中满足条件得前三个元素,输出[row,col]坐标
      • size

        • 一个返回值返回行、列,向量返回

        • size(A,n)

          如果在size函数的输入参数中再添加一项n,并用1或2为n赋值,则 size将返回矩阵的行数或列数。其中r=size(A,1)该语句返回的是矩阵A的行数, c=size(A,2) 该语句返回的是矩阵A的列数

      • ones(a,b)

        • 输出一个a*b的全1矩阵
      • fminunc Matlab自带的一个高级函数,可以找到最好的θ\thetaθ

      • contour

        • 绘制等高线函数
      • Legend

        • 给画出的图像放上图例
      • Linspace(1,100,2)

        • 产生等差数列
      • matlab逻辑判断为真即可赋值=1

    2. 特别注意,在我编写代码的过程中对于矩阵的转置几次没有仔细查看,导致计算结果错误,这种错有时不会报错,但是你本想获得一个标量,会得到一个矢量;本想获得矢量,变成了标量,这是我对自己很大的一个收获

    3. 参考代码

      1. 写出S函数

        g=1./(1+exp(-z));
        
      2. 求代价函数和相应的θ\thetaθ导数

        J=(-y'*log(sigmoid(X*theta))-(1-y)'*log(1-sigmoid(X*theta)))/m;
        grad = (sigmoid(X*theta)-y)'*X/m;
        
      3. 对模拟数值,求出大于一的预测量

        p = sigmoid(X*theta)>=0.5;
        
      4. 求正则化后的逻辑回归代价函数以及相应的θ\thetaθ导数

     J=(-y'*log(sigmoid(X*theta))-(1-y)'*log(1-sigmoid(X*theta)))/m+lambda*sum(theta(2:size(theta),:).^2)/(2*m);
     grad(2:n)= (sigmoid(X*theta)-y)'*X(:,2:n)/m+lambda*theta(2:n)'/m;
     grad(1)= (sigmoid(X*theta)-y)'*X(:,1)/m;
     ```

     ​
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值