逻辑回归

2 逻辑回归


2.1 从线性回归到逻辑回归

分类问题可以通过 线性回归+阈值 去解决吗?

image

分类问题 在有噪声点的情况下,阈值偏移大,健壮性不够

image

2.2 逻辑回归决策边界

在逻辑回归(Logistic Regression)里,通常我们并不拟合样本分布,而是确定决策边界

下面为各式各样的决策边界

image

线性决策边界

image

image

非线性决策边界

image

2.3 逻辑回归损失函数

损失函数与正则化

依旧存在过拟合问题,决策边界可能“抖动很厉害”!

image

如何最小化损失函数?

对于凸函数,依旧可以用梯度下降!

image

2.4 从二分类到多分类

多分类

我们已经知道二分类问题如何处理了,那么多分类呢?

image

要点总结

逻辑回归

  • 线性回归+阈值
    • 解决分类问题鲁棒性不OK
  • Sigmoid函数与决策边界
    • Sigmoid函数:压缩至0-1之间
    • 根据阈值,产生对应的决策边界
  • 损失函数
    • 最大似然到对数损失
  • 梯度下降
    • 沿着损失函数梯度方向逐步修正参数
  • 二分类到多分类
    • one vs one
    • one vs rest

3. 工程应用经验


3.1 逻辑回归 VS 其他模型

LR 弱于 SVM/GBDT/RandomForest... ?

  • 模型本身并没有好坏之分
    1. LR能以概率的形式输出结果,而非只是0,1判定
    2. LR的可解释性强,可控度高
    3. 训练快,特征工程(feature engineering)之后效果赞
    4. 因为结果是概率,可以做排序模型
    5. 添加特征非常简单...
  • 应用
    1. CTR预估/推荐系统的learning to rank/各种分类场景
    2. 很多搜索引擎厂的广告CTR预估基线版是LR
    3. 电商搜索排序/广告CTR预估基线版是LR
    4. 新闻app的推荐和排序基线也是LR

3.2 样本处理

  • 样本特征处理
    1. 离散化后用独热向量编码(one-hot encoding)处理成0,1值
    2. LR训练连续值,注意做幅度缩放(scaling)
  • 处理大样本量
    1. 试试spark MLlib
    2. 试试采样(注意是否需要分层采样)
  • 注意样本的平衡
    1. 对样本分布敏感
    2. 欠采样,过采样
    3. 修改损失函数,给不同权重

3.3 工具包与库

  • Liblinear

image

https://www.csie.ntu.edu.tw/~cjlin/liblinear/

  • Spark Mllib

image

http://spark.apache.org/docs/latest/mllib-linear-methods.html#logistic-regression

  • Scikit-learn

image

http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html

要点总结


逻辑回归

  • 优缺点
    • 优点:可解释性强、输出概率结果、可用于排序、添加特征方便
    • 缺点:模型效果与特征工程程度有关系、数据要做好预处理
  • 样本与数据处理
    • 数据样本采样
    • 特征离散化、独热向量编码
  • 工具包
    • Liblinear | Spark | Scikit-learn

4 数据案例讲解


4.1 Python完成线性回归与逻辑回归

image

image

image

附 参考文献/Reference


  •  Prof. Andrew Ng. Machine Learning. Stanford University
  •  李航,统计学习方法,清华大学出版社,2012
  •  周志华,机器学习,清华大学出版社,2016
  •  Thomas M. Cover, Joy A. Thomas. Elements of Information Theory. 2006
  •  Christopher M. Bishop. Patte

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Reference Nodes(引用节点)

    iOSDevLog
  • 人工智能-总结

    iOSDevLog
  • 线性回归

    iOSDevLog
  • 应对掘金CDN开启防盗链 记一次爬取markdown图片的经历

    原来我喜欢在 掘金或简书后台 写markdown文章, 然后复制粘贴到 gitbook(前提是gitbook已经和github做了关联), 就可以发布到gith...

    zhaoolee
  • docker源码分析(3)---镜像 (2)

    第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang

    月牙寂道长
  • 以1个具体接口为例来展示腾讯云.NET SDK的使用

    【.NET Core和ASP.NET Core】是什么,它们跟【.NET Framework和ASP.NET】的区别是什么,为什么要选用前者

    我爱你的一诺
  • Web开发---单页面应用(签到日报--横向扩展)

    疫情前期,员工分布在各个地区,需要上报个人的健康状态和位置信息,于是做了一个单页面应用(当时钉钉和微信上的健康上报模板还没出现)

    MiaoGIS
  • Python入门-环境搭建详解(Window平台)

    安装成功后重启电脑,再重新打开Python安装程序就可以了。一定要看好Python的安装路径。

    秦子帅
  • 基于脚本的modelsim自动化仿真

    FPGA的仿真与调试在FPGA开发过程中起着至关重要的作用,也占用了FPGA开发的大部分时间。所以适当减少或简化FPGA的仿真与调试过程无疑是对FPGA开发的加...

    FPGA开源工作室
  • Kangle部署多节点CDN

    CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容...

    flyxber

扫码关注云+社区

领取腾讯云代金券