皮皮网
皮皮网

【超度泛目录源码】【总龙头指标源码】【macd背离镶嵌源码】xgboost 源码分析

来源:ai皮肤检测源码 发表时间:2024-11-25 11:51:15

1.推荐收藏! 38 个 Python 数据科学顶级库!码分
2.Win10 环境下,码分LightGBM GPU 版本的码分安装
3.XGBoost源码解读
4.机器学习树集成模型-CART算法
5.如何在Mac OSX上安装xgboost
6.如何在Mac上安装xgboost

xgboost 源码分析

推荐收藏! 38 个 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 - 数据可视化和数据探索平台,macd背离镶嵌源码

       星:,贡献:,贡献者:

       . 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 种交叉验证方法详解;文章推荐更多,点个赞和爱心,更多精彩欢迎关注。

Win 环境下,LightGBM GPU 版本的安装

       在Win环境下,想要利用GPU提升LightGBM的训练速度,安装过程并非易事。LightGBM,微软开发的高效梯度提升框架,可与XGBoost比肩,尤其适用于大规模数据。由于其GPU版本的教程相对较少,本文基于官方指南和Stack Overflow上的解答,总结了安装步骤和注意事项。

       安装步骤

       1. 对于CPU版本,LightGBM的安装方法有三种,与Python包安装类似。但使用GPU版本需要从源代码编译安装。极速开发源码

       GPU版本安装

       主要流程包括下载LightGBM源代码,使用CMake进行构建,然后通过`python setup.py install --gpu`安装。对于Windows用户,有两种编译方式:

       VS Build Tools:推荐用于Win平台,可以简化步骤,避免MinGW可能遇到的问题。

       MinGW:虽然速度可能较快,但可能会产生更多问题,且不推荐。

       对于VS Build Tools,需要安装Git、CMake、VS Build Tools,以及对应的OpenCL和Boost Binaries。具体步骤涉及下载、安装、设置环境变量,然后编译源文件。

       MinGW编译步骤类似,但需要下载MinGW或MinGW-w,然后按照类似流程操作。

       参数设置与性能测试

       安装成功后,通过设置`device='gpu'`和相关GPU参数,可以启用GPU计算。测试性能时,如能顺利运行,表明安装成功。不过,与其他框架相比,LightGBM在GPU调用上稍显不便,但其支持更多类型的显卡,对Intel集成显卡友好。

       性能提升方面,实际测试显示使用GPU计算有明显加速,但具体提升程度取决于硬件配置,如Intel集显和Nvidia独显的性能差异。

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的优化策略,展示了研究与工程结合的实践,强调在追求性能的同时,不能忽视效果的重要性。

机器学习树集成模型-CART算法

       机器学习树集成模型-CART算法

       决策树,作为机器学习中的经典方法,凭借其直观易懂的决策逻辑,即使在面临过拟合挑战时,也凭借改进后的模型如随机森林和XGBoost等焕发新生。CART(分类和回归树)算法,年由Breiman等人提出,是决策树的基础,适用于分类和回归任务。CART构建起二叉决策树,决策过程直观,能处理不同类型的数据,如连续和离散数值。

       在应用决策树前,通常需要处理缺失值,如通过空间插值或模型估计。连续数值属性需要离散化,无监督的等宽或等频分桶需谨慎,以避免异常值影响。CART算法中,关键在于衡量节点分割的质量,如基尼不纯度和基尼增益,它们通过数据集的类别分布均匀程度来评估分割效果。基尼增益高的特征意味着更好的分割,能提高模型纯度。

       CART分类决策树的构建流程包括选择最优特征进行分割,直到满足停止条件。在遥感应用中,可能需要人工设置特征和划分方式。为了防止过拟合,剪枝技术是必备的,包括预剪枝和后剪枝。通过递归算法构建和预测,理解核心源码有助于深入掌握决策树的构建和应用。

       理解CART算法是遥感和机器学习领域的重要基础,它在地物分类、变化检测、遥感数据分析等方面发挥着关键作用。后续内容将深入探讨如何处理连续特征、模型剪枝以及实际应用中的代码实现。

如何在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

如何在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

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环境。

机器学习的特征重要性究竟是怎么算的

       了解主流机器学习模型计算特征重要性的过程。常用算法包括xgboost、gbdt、randomforest、tree等,它们都能输出特征的重要性评分。本文将重点阐述xgboost和gbdt特征重要性计算方法。

       xgboost计算特征重要性涉及到复杂的过程。在xgboost R API文档中能找到部分解释。在Python代码中,通过get_dump获取树规则,规则描述了特征在决策树中的使用情况。然而,原始的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的标准适用于该类问题。

相关栏目:探索