1.xgboost Դ?码阅??Ķ?
2.机器学习的特征重要性究竟是怎么算的
3.XGBoost源码解读
4.å¦ä½å¨Mac OSXä¸å®è£
xgboost
5.Apple M1的AI环境搭建
6.机器学习树集成模型-CART算法
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联邦学习- 知乎