码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • pdp部分依赖图


    目录

    一、作用

    二、存在的问题

    三、代码

    3.1 单特征对预测结果的边际效应

    3.2 两个特征对预测结果的边际效应


    一、作用

    【定义一】:部分依赖图(Partial Dependence Plot)显示了一个或两个特征对机器学习模型的预测结果的边际效应

    【定义二】:通过改变感兴趣特征的值同时保持补充特征的值不变,分析模型输出,从而计算特征变量对模型预测结果影响的函数关系:例如近似线性关系、单调关系或者更复杂的关系。

    二、存在的问题

    • 自变量间可能存在复杂的交互关系,所以单看一个变量的pdp图是不全面的。
    • pdp图不显示特征分布,这可能会产生误导,因为可能会过度解释几乎没有数据的区域。
    • pdp假设计算部分依赖的特征与其他特征不相关,如果相关,pdp图会包含不可能的点。
    • pdp绘制的是平均响应,个体间的异质性可能无法被观察到;即有可能个体间的变化差异明显。(个体间的变化差异通过个体条件期望(Individual Conditional Expectation,ICE)曲线观察)
    • 由于算法的精度和难以避免的过拟合,pdp图可能存在较小的波动,而解释性研究更加关注整体的变化趋势。

    三、代码

    def partial_dependence(
            ind,  //目标特征
            model,  //预测函数model.predict
            data,  //数据集
            xmin="percentile(0)",
            xmax="percentile(100)",
            npoints=None, 
            feature_names=None, 
            hist=True, 
            model_expected_value=False, //平均模型预测
            feature_expected_value=False, //平均特征值
            shap_values=None,
            ylabel=None, 
            ice=True,  //是否制作部份依赖图或个体条件期望图
            ace_opacity=1, 
            pd_opacity=1, 
            pd_linewidth=2,
            ace_linewidth='auto', 
            ax=None, 
            show=True)

    补充说明:model_expected_value,feature_expected_value

    3.1 单特征对预测结果的边际效应

    1. from sklearn.datasets import fetch_california_housing
    2. from sklearn.ensemble import RandomForestRegressor
    3. X, y = fetch_california_housing(return_X_y=True, as_frame=True)
    4. model = RandomForestRegressor(random_state=42).fit(X, y)
    5. X100 = X.sample(n=100)
    6. from shap.plots._partial_dependence import partial_dependence
    7. partial_dependence(ind="AveOccup", model=model.predict, data=X100, ice=False, model_expected_value=True, feature_expected_value=True)
    8. partial_dependence(ind="MedInc", model=model.predict, data=X100, ice=False, model_expected_value=True, feature_expected_value=True)

     

    1. partial_dependence(ind="AveOccup", model=model.predict, data=X100, ice=True, model_expected_value=True, feature_expected_value=True)
    2. partial_dependence(ind="MedInc", model=model.predict, data=X100, ice=True, model_expected_value=True, feature_expected_value=True)

    3.2 两个特征对预测结果的边际效应

     pip install plotly_express

    1. import plotly_express as px
    2. fig = px.scatter(x=X["AveOccup"], y=X["MedInc"], color=y,labels={"x": "AveOccup", "y": "MedInc", "color": "price"},range_x=(0, 10))
    3. fig.write_image('./1.png')
    4. fig.show()

    【参考资料】:

    1. 8.1 Partial Dependence Plot (PDP) | Interpretable Machine Learning
    2. 科研中的部分依赖图(pdp)绘制 - 知乎
    3. 4.1. Partial Dependence and Individual Conditional Expectation plots — scikit-learn 1.1.3 documentation
    4. https://www.toutiao.com/article/7076250560642515467/?app=news_article×tamp=1667365264&use_new_style=1&req_id=202211021301040101511830281138B758&group_id=7076250560642515467&wxshare_count=1&tt_from=weixin&utm_source=weixin&utm_medium=toutiao_android&utm_campaign=client_share&share_token=52f690e2-4a1d-4ecb-a4c9-66974484cac5&source=m_redirect

  • 相关阅读:
    huggingface/transformers 用Trainer 和 不用Trainer
    6.Docker 容器数据卷
    四甲基罗丹明TRITC修饰聚缩醛Polyacetal/HA透明质酸载药纳米粒|TRITC-Polyacetal|TRITC-TK-PEG-HA
    使用YOLOv10训练自己的【目标检测】数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】
    实战项目【7】MEMS惯性传感器的精度参数和单位换算
    linux下python连接oracle数据库
    LeetCode-20-有效的括号
    双周赛114(模拟、枚举 + 哈希、DFS)
    海关 瑞数5.5 找后缀加密入口解析
    Posgresql数据库项目sql实操1
  • 原文地址:https://blog.csdn.net/SmartDemo/article/details/127647514
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号