经典的机器学习二分类算法——Logistic回归

2023-05-16

问题描述

对于维度为 m+1 m + 1 特征为 x x 样本的二分类问题,有负类(Negative Class)记为0,正类(Positive Class)记为 1 1 ,即对于类别y,有

y{0,1}. y ∈ { 0 , 1 } .

我们期望找到一个 hθ(x) h θ ( x ) ,使得
0hθ(x)1. 0 ⩽ h θ ( x ) ⩽ 1 .

其中, θ θ 为待优化的参数,使得在对未知类别的样本 x0 x 0 分类时,
hθ(x0) h θ ( x 0 ) 为样本为正类的概率。即分类准则如下:
y0={0,1,if hθ(x0)<0.5;if hθ(x0)0.5. y 0 = { 0 , if  h θ ( x 0 ) < 0.5 ; 1 , if  h θ ( x 0 ) ≥ 0.5.

Logistic回归

在线性回归(Linear Regression)中,我们常找一组参数

θ=θ0θ1...θm θ = ( θ 0 θ 1 . . . θ m )

计算
f(x)=θTx. f ( x ) = θ T x .

设置阈值 T T ,通过f(x) T T 的大小关系判断正负类。
而在Logistic回归中,我们引入Sigmoid函数
g(z)=11+ez.

其图像如下
这里写图片描述
Logistic回归取hypothesis function为
hθ(x)=g(θTx)=11+eθTx=p(y=1|x;θ)=p(y=0|x;θ). h θ ( x ) = g ( θ T x ) = 1 1 + e θ T x = p ( y = 1 | x ; θ ) = p ( y = 0 | x ; θ ) .

hθ(x) h θ ( x ) 等价于正类的概率,由Sigmoid函数图像可知,当 θTx0 θ T x ≥ 0 时,判定为正类,当 θTx<0 θ T x < 0 时,判定为负类。

代价函数(cost function)

与线性回归问题类似,Logistic同样需要定义代价函数使用梯度下降法优化参数
由于Sigmoid函数的使用,若使用与线性回归相同的二次损失函数,优化问题将变为非凸问题,即可能存在很多局部最优解。Logistic回归采用以下损失函数

cost(hθ(x),y)={log(hθ(x)),log(1hθ(x)),if y=1;if y=0. c o s t ( h θ ( x ) , y ) = { − log ⁡ ( h θ ( x ) ) , if  y = 1 ; − log ⁡ ( 1 − h θ ( x ) ) , if  y = 0.

为了方便计算,将分段损失函数改写为如下形式
cost(hθ(x),y)=ylog(hθ(x))(1y)log(1hθ(x)). c o s t ( h θ ( x ) , y ) = − y log ⁡ ( h θ ( x ) ) − ( 1 − y ) log ⁡ ( 1 − h θ ( x ) ) .

优化目标

对于样本数目为 n n 的训练集,定义目标函数为

J(θ)=1ni=1ncost(hθ(x(i)),y(i))=1n[i=1ny(i)log(hθ(x(i))+(1y(i))log(1hθ(x(i))]

优化目标为:找到令 J(θ) J ( θ ) 最小的 θ θ .

算法描述

want w a n t :

minθJ(θ) m i n θ J ( θ )

Repeat R e p e a t
θj:=θjαJ(θ)θj,j=0,...,m. θ j := θ j − α ∂ J ( θ ) θ j , j = 0 , . . . , m .

其中, α α 为梯度下降法的学习率.

优化算法列举

1)Gradient descent
2)Conjugate gradient
3)BFGS
4)L-BFGS

利用Octave实现Logistic回归

Octave是一种高层解释类编程语言,旨在解决线性和非线性的数值计算问题。Octave为GNU项目下的开源软件,早期版本为命令行交互方式,4.0.0版本发布基于QT编写的GUI交互界面。Octave语法与Matlab语法非常接近,可以很容易的将matlab程序移植到Octave。同时与C++,QT等接口较Matlab更加方便。
注:Octave与Matlab语法类似,下标从1开始。
例子:

θ=(θ1θ2) θ = ( θ 1 θ 2 )

J(θ)=(θ11)2+(θ21)2 J ( θ ) = ( θ 1 − 1 ) 2 + ( θ 2 − 1 ) 2

J(θ)θ1=2(θ11) ∂ J ( θ ) θ 1 = 2 ( θ 1 − 1 )

J(θ)θ2=2(θ21) ∂ J ( θ ) θ 2 = 2 ( θ 2 − 1 )

代码:
定义函数,给出优化目标及对应的梯度,初始化梯度

    function [jVal, gradient] = costFunction(theta)
      jVal = (theta(1)-1)^2 + (theta(2)-1)^2;
      gradient = zeros(2,1)
      gradient(1) = 2 * (theta(1)-1);
      gradient(2) = 2 * (theta(2)-1);
    endfunction

设定option,设置梯度目标参数为打开,最大迭代次数为100,并初始化 θ θ .

options = optimset('GradObj', 'on', 'MaxIter','100')
initialTheta = zeros(2,1)

调用fminunc这个函数,传入三个参数,其中第一个参数@costFunction这里的@符号代表指向之前我们定义的costFunction函数的指针。后面两个参数分别是我们定义的thetatheta初始值和配置信息options。它会自动的从众多高级优化算法中挑选一个来使用。

[optTheta, functionVal, exitFlag]=...
fminunc(@costFunction, initialTheta, options)

输出结果
这里写图片描述
θ1=1 θ 1 = 1 , θ2=1 θ 2 = 1 exitFlag=1 e x i t F l a g = 1 表明已经收敛.

注:本文内容为网易云课堂吴恩达机器学习视频学习时的记录的笔记,仅做学习使用,笔者对OCTAVE首次接触,仅仅实现了课堂上的例子。如有错误,欢迎联系笔者。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

经典的机器学习二分类算法——Logistic回归 的相关文章

随机推荐

  • BEV(Bird’s-eye-view)三部曲之三:demo和验证

    1 PYVA Projecting Your View Attentively CVPR 2021 数据集 xff1a KITTIpaper xff0c github xff0c 35 FPS输入 xff1a 单张摄像头前向图输出 xff1
  • 记录自己的日常学习生活

    大家好 xff0c 今天是我第一次写博客 xff0c 刚才看了很多大佬的博文 xff0c 突然就想写一下自己的生活 xff0c 记录自己的学习过程 xff0c 本人是一个地地道道的东本人 xff0c 性格算是活泼开朗吧 xff0c 现就读于
  • 自动驾驶之MultiPath++论文阅读笔记

    预测道路参与者的future behavior 摘要 将输入由dense image based encoding改为a sparse encoding of heterogeneous scene elements 即用polylines
  • 自动驾驶之多任务方法调研

    1 YOLOP github C 43 43 TRT TX2 我们提出了一种高效的多任务网络 xff0c 该网络可以联合处理自动驾驶中的目标检测 车 xff0c 没有红绿灯 可驾驶区域分割和车道检测三个关键任务 速度 xff1a TX2上2
  • 自动驾驶之去光晕调研

    中文版综述github 一 光晕类型 常见去光晕算法的光晕 去光晕算法的光晕之二 汇总 样式包括有 halos 色圈 streaks 条纹 bright lines 亮线 saturated blobs 深污点 color bleeding
  • 自动驾驶之3D点云聚类算法调研

    1 方法 总共分为4类 基于欧式距离的聚类Supervoxel 聚类深度 Depth 聚类Scanline Run 聚类 1 1 基于欧氏距离的聚类 思路 在点云上构造kd tree 然后在某个半径阈值 例如0 5m 则分割为一个实例 相似
  • 自动驾驶之夜间检测调研

    1 ExDark 第一个 公开 特定的提供 natural low light images for object的数据集 7363张 low light images 12 classes Low light image enhancem
  • 自动驾驶之行人轨迹预测数据集

    一 Real Data ETH Univ 43 Hotel 750 pedestrians exhibiting complex interactions UCY Zara01 Zara02 and Uni 780 pedestrians
  • 自动驾驶之单目3D目标检测TensorRT调研

    目前在github上只能找到2个项目 TensorRT CenterNet 3D tkDNN 两者都是使用CenterNet xff0c 但第1个基于TensorRT5 无法与当前最新的TensorRT6和TensorRT7兼容 经测试 x
  • 秋招之字节面试智力题

    1 倒水 只有两个无刻度的水桶 xff0c 一个可以装6L水 xff0c 一个可以装5L水 xff0c 如何在桶里装入3L的水 6L装满倒入5L xff0c 剩1L5L倒出 1L倒入5L6L装满倒入5L剩2L5L倒出 xff0c 2L倒入5
  • 数学专业外语之一: 基本概念与术语

    一 四则运算 加法 plus xff0c 1 43 2 one plus two减法 minus 3 2 three minus two乘法 times or multiplied by xff0c 3x2 three times two
  • 数学专业外语之二: 阅读理解与翻译初步

    一 比 率与比例 number xff1a 数 xff1b number axis xff1a number theory xff1a 数论 xff1b the number of xff1a 的数量quantity xff1a 量 xff
  • 从iphone一代看产品创新

    第一代iPhone2007年6月29日正式发售 xff0c 可能大多数人接触Iphone是从iphone4开始 xff0c 先展示一下iphone一代 xff0c 提醒一下这是2007年的一款手机 xff0c 当时市面所有手机都是键盘机 x
  • 自动驾驶之3D目标检测的SMOKE算法

    SMOKE Single Stage Monocular 3D Object Detection via Keypoint Estimation 论文github知乎 一 数据集 KITTI 1 1 输入 单张图像 xff1a 1242x3
  • 自动驾驶之车道线检测调研与实测

    一 LaneNet 论文代码 xff1a github python tensorflow 1 15 1 1 主要过程 inference xff0c 分上下两个分支 xff0c 如图 Enocder decoder stage 图像空间编
  • 推荐系统之AUC指标的一些理解

    以下是在一些整理的和自己的关于AUC的理解 1 AUC和GAUC的区别 auc反映的是整体样本间的一个排序能力 在计算广告领域 实际要衡量的是不同用户对不同广告之间的排序能力 因此实际应该更关注的是同一个用户对不同广告间的排序能力 GAUC
  • 逻辑回归相关问题整理

    1 写逻辑回归的logloss损失函数 对于样本 x x x xff0c 输出为 p x i
  • 如何防止softmax函数overflow和underflow?

    上溢出 xff1a c极其大的时候 xff0c 计算 e c e c e c 下溢出 xff1a 当c趋于负无穷的时候 xff0c 分母是一个极小的数 xff0c 导致下溢出 解决方法 令
  • 使用matplotlib绘图库的pyplot快速绘图

    使用matplotlib绘图库的pyplot快速绘图 matplotlib是Python最常用的绘图库 xff0c 在结果或数据可视化中常用pyplot实现快速绘图 xff0c 下面参考张若愚主编的Python科学计算 xff08 第2版
  • 经典的机器学习二分类算法——Logistic回归

    问题描述 对于维度为 m 43 1 m 43 1 特征为 x x 样本的二分类问题 有负类 Negative Class 记为 0 0 xff0c 正类 xff08 Positive Class xff09 记为 1