1.机器学习的的代码特征重要性究竟是怎么算的
2.å¦ä½å¨Mac OSXä¸å®è£
xgboost
3.Apple M1的AI环境搭建
4.å¦ä½å¨Macä¸å®è£
xgboost
5.推荐收藏! 38 个 Python 数据科学顶级库!
6.XGBoost源码解读
机器学习的特征重要性究竟是怎么算的
了解主流机器学习模型计算特征重要性的过程。常用算法包括xgboost、的代码gbdt、源码s源randomforest、的代码tree等,源码s源娇喘源码它们都能输出特征的的代码重要性评分。本文将重点阐述xgboost和gbdt特征重要性计算方法。源码s源
xgboost计算特征重要性涉及到复杂的的代码过程。在xgboost R API文档中能找到部分解释。源码s源在Python代码中,的代码通过get_dump获取树规则,源码s源规则描述了特征在决策树中的的代码使用情况。然而,源码s源原始的的代码get_score方法输出的仅为统计值,包含权重、增益和覆盖度,未转换为百分比形式,这还不是真正的特征重要性得分。在xgboost的sklearn API中,feature_importance_方法对重要性统计量进行归一化处理,将之转换为百分比形式,计算分母为所有特征的重要性统计量之和。默认情况下,xgboost sklearn API计算重要性时使用importance_type="gain",而原始get_score方法使用importance_type="weight"。
对于gbdt,首先查找BaseGradientBoosting类,得到feature_importances_方法的源码。进一步追踪至tree模块,发现特征重要性来源于tree_.compute_feature_importances()方法。关于gbdt评估特征重要性的标准,存在疑问:它是依据分裂前后节点的impurity减少量进行评估。impurity的计算标准取决于节点的分裂标准,如MSE或MAE,具体在_criterion.pyx脚本中有所说明。gbdt中的树都是回归树,因此计算impurity的标准适用于该类问题。
å¦ä½å¨Mac OSXä¸å®è£ xgboost
1. Mac OSXç³»ç»ä¸è¬èªå¸¦pythonï¼æå¼ç»ç«¯è¾å ¥pythonå³å¯åpython代ç ï¼æ以pythonç¯å¢å·²ç»å ·å¤äºã
2.å®è£ Homebrew ,禅意花园编辑源码 类似äºubuntuä¸çapt-getåcentosä¸çyumï¼æ¯OSXéé¢çä¸ä¸ªé常æç¨è½¯ä»¶å®è£ å·¥å ·ã
/usr/bin/ruby -e "$ï¼curl -fsSL /Homebrew/install/master/installï¼"
ç´æ¥å°ä¸è¿°ä»£ç ç²è´´è³ç»ç«¯å³å¯å®è£ ãï¼å®è£ è¿ä¸ªè½¯ä»¶çç®çå¨äºæ´æ°gccçæ¬ï¼å 为å®æ¹ææ¡£ä¸è¯´åªæææ°çgccçæ¬æè½ä½¿xgboostæ¯æå¤çº¿ç¨ï¼
3.å®è£ ææ°çæ¬çgcc ï¼gcc-6ï¼
brew install gcc --without-multilib
è¿æ¥æ¯è¾èæ¶ï¼ç¨äºå°è¿1å°æ¶ã
4.ä»gitä¸ä¸è½½æºç
cdè¿å ¥ä½ æ³è¦å®è£ çç®å½ï¼ç¶åè¾å ¥ä¸é¢ç代ç ãï¼ææ¯ç´æ¥å¨æå¼ç»ç«¯çç®å½ï¼
git clone --recursive /dmlc/xgboost
Apple M1的AI环境搭建
首先,搭建Apple M1的AI环境,Python3.9作为基础,考虑到M1的ARM架构,Anaconda不再适用,转而选择Miniforge3。必需的库有Tensorflow、xgboost、Lightgbm、Numpy、Pandas、Matplotlib和NGBoost等。由于是Python3.9,部分库可能无法正常使用。
Homebrew,作为Mac的包管理工具,对于ARM架构的支持已经到位。如果有X版本的Homebrew,需先卸载,然后通过Homebrew的ARM版本进行安装。安装后,Homebrew会提示设置环境变量,推荐执行相应操作以确保环境配置。
在bash shell下,记得source ~/.zprofile。对于X版本的Homebrew,虽然安装后未提示添加环境变量,但同样需要手动管理。
为了优化软件源,可以考虑设置中科大源或清华大学源,如果需要更多选择,可以查看Homebrew的其他设置。对于cask,由于GitHub API访问限制,可能需要申请Api Token。
接下来,下载并安装Miniforge3的arm版本,安装过程中会询问是否添加conda init到~/.zshrc。安装完成后,怎么获得源码私信可以创建一个专为Tensorflow学习的虚拟环境。
Tensorflow的安装方式有两种,一是默认安装,Apple已优化支持;二是通过environment.yml预先配置。在tf环境内,可以测试安装是否成功。
对于Lightgbm,编译安装是较为可靠的方法,通过brew安装并设置编译环境。至于Numpy,通常会在Tensorflow安装时自动安装,其他库如Pandas、Matplotlib和NGBoost,可以通过conda或pip进行安装。
注意,可能遇到的库问题,如OpenCV、Dlib等,需自行下载源码编译。在整个过程中,遇到问题时,Google搜索和官方文档是不可或缺的参考资源。
最后,值得注意的是相关教程和指南,如TensorFlow-macos、Run xgboost on Mac、加速Mac上的TensorFlow性能等,这些都能提供具体步骤和帮助,确保在M1芯片Mac上顺利搭建AI环境。
å¦ä½å¨Macä¸å®è£ xgboost
1. Mac OSXç³»ç»è¬èªå¸¦pythonæç»ç«¯è¾å ¥pythonå³åpython代ç æpythonç¯å¢å·²ç»å ·å¤
2.å®è£ Homebrew , 类似äºubuntuapt-getcentosyumOSXé¢éç¨è½¯ä»¶å®è£ å·¥å ·
/usr/bin/ruby -e "$ï¼curl -fsSL ï¼"
ç´æ¥è¿°ä»£ç ç²è´´è³ç»ç«¯å³å®è£ ï¼å®è£ 软件ç®äºæ´æ°gccçæ¬å®æ档说æ°gccçæ¬æè½ä½¿xgboostæ¯æ线ç¨ï¼
3.å®è£ æ°çæ¬gcc ï¼gcc-6ï¼
brew install gcc --without-multilib
æ¥æ¯è¾èç¨è¿1
4.gitè½½æºç
cdè¿å ¥æ³è¦å®è£ ç®å½è¾å ¥é¢ä»£ç ï¼æç´æ¥æç»ç«¯ç®å½ï¼
git clone --recursive
推荐收藏! 个 Python 数据科学顶级库!
欢迎关注@Python与数据挖掘 ,专注 Python、数据分析、数据挖掘、好玩工具!
数据科学领域的顶级 Python 库推荐:
1. Apache Spark - 大规模数据处理的统一分析引擎,
星:,贡献:,音乐发行系统源码贡献者:
2. Pandas - 用于数据处理的快速、灵活且可表达的 Python 软件包,
星:,贡献:,贡献者:
3. Dask - 并行计算任务调度系统,
星:,贡献:,贡献者:
4. Scipy - 用于数学、科学和工程的开源 Python 模块,
星:,贡献:,贡献者:
5. Numpy - Python 科学计算的基本软件包,
星:,贡献:,贡献者:
6. Scikit-Learn - 基于 SciPy 的 Python 机器学习模块,
星:,贡献:,贡献者:
7. XGBoost - 可扩展、便携式和分布式梯度增强 GBDT 库,
星:,贡献:,贡献者:
8. LightGBM - 基于决策树的快速、高性能梯度提升 GB库,
星:,贡献:,贡献者:
9. Catboost - 高速、可扩展、高性能梯度提升库,
星:,贡献:,贡献者:
. Dlib - 用于创建解决实际问题的复杂软件的 C++ 工具箱,
星:,贡献:,贡献者:
. Annoy - C++/Python 中的优化内存使用和磁盘加载/保存的近似最近邻居系统,
星:,贡献:,贡献者:
. H2O.ai - 快速可扩展的开源机器学习平台,
星:,鸿蒙源码详解图贡献:,贡献者:
. StatsModels - Python 中的统计建模和计量经济学,
星:,贡献:,贡献者:
. mlpack - 直观、快速且灵活的 C++ 机器学习库,
星:,贡献:,贡献者:
. Pattern - 包含 Web 挖掘工具的 Python 模块,
星:,贡献:,贡献者:
. Prophet - 生成具有多个季节性和线性或非线性增长的时间序列数据的高质量预测工具,
星:,贡献:,贡献者:
. TPOT - Python 自动化机器学习工具,使用遗传编程优化机器学习 pipeline,
星:,贡献:,贡献者:
. auto-sklearn - 自动化机器学习工具包,scikit-learn 估计器的直接替代品,
星:,贡献:,贡献者:
. Hyperopt-sklearn - scikit-learn 中基于 Hyperopt 的模型选择,
星:,贡献:,贡献者:
. SMAC-3 - 基于顺序模型的算法配置,
星:,贡献:,贡献者:
. scikit-optimize - 用于减少非常昂贵且嘈杂的黑盒功能的 Scikit-Optimize,
星:,贡献:,贡献者:
. Nevergrad - 用于执行无梯度优化的 Python 工具箱,
星:,贡献:,贡献者:
. Optuna - 自动超参数优化软件框架,
星:,贡献:,贡献者:
数据可视化:
. Apache Superset - 数据可视化和数据探索平台,
星:,贡献:,贡献者:
. Matplotlib - 在 Python 中创建静态、动画和交互式可视化的综合库,
星:,贡献:,贡献者:
. Plotly - 适用于 Python 的交互式、基于开源和基于浏览器的图形库,
星:,贡献:,贡献者:
. Seaborn - 基于 matplotlib 的 Python 可视化库,提供高级界面进行吸引人的统计图形绘制,
星:,贡献:,贡献者:
. folium - 建立在 Python 数据处理能力之上并与 Leaflet.js 库地图能力结合的可视化库,
星:,贡献:,贡献者:
. Bqplot - Jupyter 的二维可视化系统,基于图形语法的构造,
星:,贡献:,贡献者:
. VisPy - 高性能的交互式 2D / 3D 数据可视化库,利用 OpenGL 库和现代图形处理单元 GPU 的计算能力显示大型数据集,
星:,贡献:,贡献者:
. PyQtgraph - 科学/工程应用的快速数据可视化和 GUI 工具,
星:,贡献:,贡献者:
. Bokeh - 现代 Web 浏览器中的交互式可视化库,提供优雅、简洁的构造,并在大型或流数据集上提供高性能的交互性,
星:,贡献:,贡献者:
. Altair - Python 的声明性统计可视化库,用于创建更简洁、更可理解的数据可视化,
星:,贡献:,贡献者:
解释与探索:
. eli5 - 用于调试/检查机器学习分类器并解释其预测的库,
星:,贡献:,贡献者:
. LIME - 用于解释任何机器学习分类器预测的工具,
星:,贡献:,贡献者:
. SHAP - 基于博弈论的方法,用于解释任何机器学习模型的输出,
星:,贡献:,贡献者:
. YellowBrick - 可视化分析和诊断工具,用于辅助机器学习模型的选择,
星:,贡献:,贡献者:
. pandas-profiling - 从 pandas DataFrame 对象创建 HTML 分析报告的库,
星:,贡献:,贡献者:
技术交流群:
建了技术交流群,想要进群的同学直接加微信号:dkl,备注:研究方向 + 学校/公司 + 知乎,即可加入。
关注 Python与数据挖掘 知乎账号和 Python学习与数据挖掘 微信公众号,可以快速了解到最新优质文章。
机器学习画图神器推荐,论文、博客事半功倍;模型可解释 AI (XAI) Python 框架盘点,6 个必备;prettytable - 可完美格式化输出的 Python 库;机器学习建模调参方法总结; 个机器学习最佳入门项目(附源代码);精通 Python 装饰器的 个神操作;VS Code 神级插件推荐;Schedule 模块 - Python 周期任务神器;4 款数据自动化探索 Python 神器;数据模型整理,建议收藏;Python 编程起飞的 个神操作;深度学习、自然语言处理和计算机视觉顶级 Python 框架盘点;用户画像标签体系建设指南;机器学习模型验证 Python 包推荐;可视化大屏模板精选,拿走就用;Python 可视化大屏不足百行代码;Python 中的 7 种交叉验证方法详解;文章推荐更多,点个赞和爱心,更多精彩欢迎关注。
XGBoost源码解读
前言
XGBoost是一代神器,其推理逻辑独树一帜,与Glove等相似,皆以思考出发,推导出理想结果。高斯正是这种思维的典范,XGBoost的代码实现也异常精妙,本文尝试将两者相结合,供您参考。
高斯的做法
优化目标设定,以均值为目标函数的导数为零。利用线性假设推导目标函数,进而优化以误差平方项为出发点。
进一步,高斯将误差目标公式推广到参数求解中,实现优化。
Glove的做法
通过log-bilinear models, LBL启发,寻找满足概率约束的目标表达式,并推导出指数函数,从而实现类似LSA的因子分解。
引入优化权重函数,最终实现最大似然估计。
XGBoost的做法
引入Stagewise限制,目标为找到最优的叶子节点,以最佳方式拆分,优化损失。
通过泰勒展开,结合叶子节点权重假设,推导出目标公式。
基于贪心算法,实现树的生长。
代码解读
从命令行入口开始,核心代码框架包括数据加载、初始化、循环训练与模型保存。训练过程包括计算样本预测结果、一阶和二阶梯度计算以及Boost操作。
DoBoost实现GBLine和GBTree两种方式,提供GradientBooster核心函数,如DoBoost、PredictLeaf、PredictBatch等。
默认采用GBTree,对于线性部分,效果难与非线性分类器相比。
代码基本框架集成了DMLC的注册使用机制,插件式管理实现更新机制。
实现精准和近似算法,主要关注ColMaker更新实现。在GBTree的DoBoost中,生成并发新树,更新ColMaker和TreePruner。
ColMaker实现包括Builder与EnumerateSplit,最终依赖于TreeEvaluator的SplitEvaluator。
SplitEvaluator实现树的分拆,对应论文中的相关函数,包括Gain计算、权重计算、单个叶子节点Gain计算与最终损失变化。
本文仅作为案例介绍,XGBoost在近似计算、GPU计算与分布式计算方面也极具亮点。
小结
本文通过对比分析高斯、Glove与XGBoost的优化策略,展示了研究与工程结合的实践,强调在追求性能的同时,不能忽视效果的重要性。
Ray使用教程(一):基本用法
Ray是一个高效且功能丰富的分布式机器学习框架,旨在降低大规模机器学习的门槛。它拥有一系列模块,包括Ray Core、Ray Data、Ray Train、Ray Tune、Ray Serve、Ray RLlib和Ray AIR,为人工智能领域的科研人员和工程师提供支持。
Ray的生态位高于TensorFlow和PyTorch等深度学习框架,用于神经网络训练。通过pip命令轻松安装Ray,不同命令可安装不同库,确保安装覆盖所有功能需执行“pip install -U "ray[all]"”。Ray兼容多种操作系统和Python版本,支持从源码到Docker的安装方式。
本教程将详细介绍Ray的安装和每个模块的基本用法,以版本2.4.0为例。首先了解Ray Core的基本分布式能力,初始化Ray后,通过装饰器控制函数或类的并行/分布式执行。
接下来是Ray AIR(AI Runtime),它提供一个集成的API,简化了数据处理和模型训练的过程。使用xgboost时,注意配置环境以兼容Windows系统。该模块通过读取数据、预处理、定义模型和训练等步骤实现高效学习。
Ray Train模块提供与PyTorch类似的API接口,简化了分布式训练的实现。输出结果展示了训练过程的可视化和性能指标。
Ray Tune模块用于超参数搜索,通过定义搜索空间和目标函数,实现自动化优化。结果输出展示了搜索过程和最佳参数设置。
Ray RLlib专注于强化学习领域,通过定义配置文件和训练算法,实现智能决策系统的构建。输出结果反映了算法的训练效果和性能指标。
为了便于学习和实践,所有示例代码已整合至开源仓库:github.com/OpenRL-Lab/R...
此教程仅为Ray的入门指南,后续将深入探索Ray Core、Ray RLlib、Ray AIR等模块的高级用法,并持续更新到GitHub仓库中。