码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 06 逻辑回归


    目录

    1. LR逻辑回归

    1.1 需要解决的问题

    1.2 问题的抽象/本质

    2. 解决方案

    2.1 建模

    2.1.1 原理

    2.1.2 决策边界                 

    2.2 目标函数——最大似然估计

    2.3 参数估计

    2.4 过拟合和欠拟合

    2.4.1 逻辑回归的过拟合现象

    2.4.2 避免过拟合方法——正则化

    2.4.3 逻辑回归使用正则化,避免过拟合

    2.5 模型结果评估

    2.5.1 混淆矩阵 准确度 & 精确率 & 召回率

    2.5.2 PR曲线

    2.5.3 ROC & AUC

    3. 逻辑回归实践

    3.1 逻辑回归的简单案例

    3.2 个性化排序


    -------出自火哥

    1. LR逻辑回归

    1.1 需要解决的问题

    信用舆情预测:根据一个人的特征,怎么判断该人是否会逾期呢?

     年龄

     工资

     学历

     是否逾期

     20

     4000

     本

     1

     25

     5000

     专

     0

     21

     6000

     本

     0

     25

    5000

     专

    1

     28

     8000

     本

     0

     27

     7000

     本

     ???

    1.2 问题的抽象/本质

    学习输入到输出的映射:Y=f(x)

    • X:输入
    • Y:输出,“是” “否”两种情况,即二分类问题

    2. 解决方案

    使用逻辑回归解决二分类问题

    2.1 建模

    2.1.1 原理

    定义一个条件概率:p(Y|X),相当于用模型来捕获输入X和输出Y之间的关系

    2.1.2 决策边界                 

    决策边界:即p(y=1 | x, w) == p(y=0 | x, w)

    2.2 目标函数——最大似然估计

    2.3 参数估计

    凸函数

    • 逻辑回归是凸函数

    优化算法

    • GD(Gradient Descent)
    • SGD(Stochastic Gradient Descent)

    举例

    一元凸函数利用梯度下降法求解参数

    梯度下降法求解逻辑回归的最优参数w,b

    对W求导

    对b求导

    迭代更新,找到使得目标函数最小的w,b(即最优的w,b)

    优化算法总结

    GD(Gradient Descent)

    SGD(Stochastic Gradient Descent)

    2.4 过拟合和欠拟合

    2.4.1 逻辑回归的过拟合现象

    2.4.2 避免过拟合方法——正则化

    (1)L1正则和L2正则

    (2) 弹性网

    弹性网结合了L1正则和L2正则,是一种优化的正则方法(类比随机批量梯度下降法:结合了批量梯度和随机梯度下降的优点)。

    2.4.3 逻辑回归使用正则化,避免过拟合

    目标:避免w过大,避免w过大的最主要的原因是:容易导致梯度更新波动大

    2.5 模型结果评估

    可参考博客:分类算法中准确率的一些问题_zhao_crystal的博客-CSDN博客_分类算法的准确率

    2.5.1 混淆矩阵 准确度 & 精确率 & 召回率

    例子:

    混淆表

    分类器预测的类别

    军事

    科技

    实际

    类别

    军事(60)

    50

    10

    科技(40)

    5

    35

    准确度Accuracy:(50 + 35) / (35 + 5 + 10  + 50) = 85%

    军事

    科技

    精确率(Precision)

    预测为某类,且实际也是某类的概率

    50 /(50+5)

    35/(10+35)

    召回率(Recall)

    实际是某类,且预测为某类的概率

    50 /(50+10)

    35 /(5 + 35)

    2.5.2 PR曲线

    PR曲线即 precision recall curve, 横坐标为precision,纵坐标为 recall。根据不同的阈值,得到不同的precision,recall 对,从而绘制而成的曲线

    2.5.3 ROC & AUC

    视频讲解:https://wq1myhtg4r.feishu.cn/minutes/obcn3edm716436jrm8466i6g

    (1) ROC曲线

    (2) AUC指标

    负样本排在正样本前面的概率

    # cat auc.raw | sort -t$'\t' -k2g |awk -F'\t' '($1==-1){++x;a+=y;}($1==1){++y;}END{print 1.0-a/(x*y);}'

    • x*y:正负样本pair对
    • a:错误的pair对
    • a/x*y:错误的概率
    • 1-a/x*y:正确的概率

    3. 逻辑回归实践

    3.1 逻辑回归的简单案例

    Python

    # 梯度下降(GD)

    % python GD.py

    # 随机梯度下降(SGD)

    % python SGD.py

    # 预测代码

    % predict.py

    3.2 个性化排序

    3.2.1 基本逻辑

     

    3.2.2 具体实现步骤

    Python

     # data

     # # music_meta [itemid, name, desc, total_timelen, location, tags] item 信息

     # # user_profile.data [userid, gender, age, salary, location] user 信息

     # # user_watch_pref.sml [userid, itemid, watch_len, hour] user关于item的行为

     # 将多个文件合并成一个文件

     % python gen_base.py

     # 产生模型数据

     % python gen_samples.py

     # 模型训练,并保存模型

     % python lr.py

     # 得到 真实值 T.txt 预测的概率 P.txt (其中,第一列是为0的概率,第二列是为1的概率)

     % python lr_auc.py

     # 取出 p.txt 的第二列, 预测为1的概率

     % cat P.txt| awk -F'\]' '{print $1}' | awk '{print $2}' > P_2.txt

     # 将T.txt 和 P_2.txt 粘贴在一起,输出auc.raw

     % paste T.txt P_2.txt > auc.raw

     # 评估auc

     % cat auc.raw | sort -t$'\t' -k2g |awk -F'\t' '($1==0){++x;a+=y;}($1==1){++y;}END{print 1.0-a/(x*y);}'

     # 评估 PR

     % python pr.py

  • 相关阅读:
    2021:Python的下载安装教程(很详细,初学者也能懂)
    《机械设计基础》题库
    纽交所上市公司安费诺宣布将以1.397亿美元收购无线解决方案提供商PCTEL
    java毕业设计某服装店购物网站源码+lw文档+mybatis+系统+mysql数据库+调试
    DirectX 3D C++ 圆柱体的渲染(源代码)
    gitee-快速设置
    RocketMQ 消费者(2)客户端设计和启动流程详解 & 源码解析
    登上抖音同城热搜榜:如何让你的短视频成为焦点?
    基于SpringBoot的在线聊天室系统,源码,数据库脚本,项目导入运行视频教程,论文撰写教程
    flutter聊天界面-TextField输入框实现@功能等匹配正则表达式展示高亮功能
  • 原文地址:https://blog.csdn.net/zhao_crystal/article/details/127606301
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号