【整站源码下载】【宁乡源码】【119源码】xgboost 源码阅读

时间:2024-12-18 20:56:44 来源:sweep算法源码 编辑:切换源码

1.xgboost Դ?码阅??Ķ?
2.机器学习的特征重要性究竟是怎么算的
3.XGBoost源码解读
4.如何在Mac OSX上安装xgboost
5.Apple M1的AI环境搭建
6.机器学习树集成模型-CART算法

xgboost 源码阅读

xgboost Դ???Ķ?

       在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、gbdt、randomforest、tree等,它们都能输出特征的重要性评分。本文将重点阐述xgboost和gbdt特征重要性计算方法。

       xgboost计算特征重要性涉及到复杂的过程。在xgboost R API文档中能找到部分解释。在Python代码中,通过get_dump获取树规则,规则描述了特征在决策树中的使用情况。然而,原始的get_score方法输出的仅为统计值,包含权重、增益和覆盖度,未转换为百分比形式,这还不是119源码真正的特征重要性得分。在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的标准适用于该类问题。

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

如何在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环境。

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

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

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

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

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

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

FATE实战:对比TFF,联邦学习框架FATE有何优势?这篇案例记录告诉你

       引言:本文记录了FATE框架中横向和纵向联邦学习的案例使用,并与笔者近期使用过的谷歌TFF(TensorFlow-Federated)框架对比,阐述使用感受,对研究联邦学习及使用FATE的用户极有价值。

       1.横向联邦学习案例

       在本节中,以逻辑回归为例记录横向联邦学习案例使用。

       实验设置文件说明

       上传数据json文件

       upload_my_homolr_guest.json, upload_my_homolr_host.json

       组件

       test_my_homolr_train_dsl.json

       运行时配置文件

       test_my_homolr_train_conf.json

       实验步骤

       进入实验环境

       1.上传训练数据

       注意是先上传guest数据,后上传host数据

       2.提交训练任务

       3.查看结果

       点击提示url可以查看相关结果:

       2.纵向联邦学习案例

       在本节中,以secureboost为例记录纵向联邦学习案例使用。

       实验设置实验步骤

       上传数据、提交任务和查看结果

       展示结果

       实验结果

       1.训练中

       2.查看结果

       点击view this job查看所有结果,同时可以通过切换job查看guest端和host端的数据和模型输出,此处只做部分展示:

       结果分析

       模型输出的各项指标都很好,结果非常令人满意,通过阅读过SecureBoost论文了解到这个算法是无损的,所以达到了如此高的指标;secureboost是由xgboost改进而来的,所以训练速度也很快。

       小结

       读者可以根据需求修改以上列举的文件进行不同训练。笔者记录以上案例时使用的是FATE的早期版本,横向联邦学习支持的模块很少,目前FATE框架已经支持深度学习,读者可以尝试使用。

       3.使用感受

       本节笔者将对比FATE框架和TFF框架的使用感受。

       1.环境部署

       FATE框架需要较多软件,安装操作比较琐碎,安装过程中可能出一些小问题,但对软件版本对应要求不是很高,环境部署可以参考 这里和 官方GitHub。

       TFF框架官方没有中文文档,安装过程中也会出各种各样的错误,支持conda安装;如果使用gpu,需要严格按照版本对应安装,笔者在此吃了不少苦头。

       2.应用场景

       FATE框架支持横向、纵向联邦学习;而TFF仅支持横向联邦。

       FATE目前已经支持多种算法,TFF同样支持各种算法和深度学习。

       3.上手难度

       FATE如果只是修改部分json文件,还可以接受,但是如果需要大片重置,在linux系统下不是很方便;但FATE源码中已搭建好大部分组件结构,基本不需要编写代码,用户可以0基础训练并查看结果。

       TFF编译器可以配置到IDE中,编写代码比较方便;但TFF有其federated core等编程范式和API,有一定上手难度,使用时需要编写大量代码。

       4.可视化

       FATE在可视化部分做的比较好,轻松点击便可查看结果。

       TFF需要自行编写代码从tf.Session中取出中间和最终结果。

       5.调试

       FATE代码涉及多种语言,且代码封装性较高,笔者由于对python了解甚少,未曾尝试修改FATE中的python代码,更未尝试debug。

       TFF笔者使用较少,不过TFF计算时使用静态图并tf.Session保存中间结果,调试也比较困难。

       6.GPU支持

       据笔者目前了解FATE暂时不支持GPU计算,在这一方面TFF更有优势。

       7.使用场景

       FATE支持多方部署,同时可以由多方发起联邦计算,可以用于实验测试和真实环境部署。

       TFF虽然是谷歌已经用于实际训练终端Gboard的框架,但据笔者至目前的使用并未发现开放给用户的多方联邦接口,仅适用于实验测试。

       本文由盛立杰撰写,微信号:urinmydreaM_,FATE社区特邀作者发布于FATE社区,未经许可,禁止转载。

       欢迎关注更多AI技术干货:

       FedAI联邦学习知乎机构号: FedAI联邦学习- 知乎

copyright © 2016 powered by 皮皮网   sitemap