XGBoost 是梯度方向提高集成化优化算法的强劲且时兴的完成,配备 XGBoost 模型的一个主要领域是挑选在模型练习期内降到最低的损失函数。
该损失函数务必配对预测分析模型问题种类,以相同的方法,大家需要挑选依据问题种类与深学习培训神经元网络的合理的耗损的作用。
XGBoost 和损失函数
Extreme Gradient Boosting,通称 XGBoost,是梯度方向提高优化算法的高效率开源系统完成。因而 XGBoost 是一个优化算法、一个开源软件和一个 Python 库。
它最开始由 Tianqi Chen 开发设计,并由 Chen 和 Carlos Guestrin 在 2016 年题写“ XGBoost:A Scalable Tree Boosting System ”的文章中开展了叙述。
它被设计为测算高效率(例如实行速度更快)和高效率,很有可能比别的开源系统完成更合理。
XGBoost 适用一系列不一样的预测分析模型问题,更显着的是分类和重归。 根据降到最低目标函数对数据的损害开展练习。因而,损失函数的选用是一个主要的超参数,立即与要处理的问题种类有关,如同深度神经网络神经元网络一样。
该完成容许根据 objective 超参数特定目标函数,并应用适用大部分状况的有效初始值。
殊不知,针对在练习 XGBoost 模型时应用哪些损失函数,新手依然具有一些疑惑。
在逐渐以前,使我们开展配备
XGBoost 可以当做单独库安裝,而且可以应用 scikit-learn API 开发设计 XGBoost 模型。
安裝 XGBoost 库(假如并未安裝)。这可以在大部分服务平台上应用 pip python 包管理工具来完成。
pip install xgboost
随后,您可以确定 XGBoost 库已恰当安裝而且可以根据运作下列脚本制作来应用。
import xgboost
print(xgboost.._version__)
运作该脚本制作将打印出您已安裝的 XGBoost 库的版本号。
1.1.1
您很有可能在应用新版本的库时碰到问题。不是你的的问题,由于有时候库的最新版会明确提出另外的规定,或是很有可能不太平稳。
假如您在试着运作以上脚本制作时的确碰到不正确,我我们建议您降权到 1.0.1(或更低版)。这可以根据特定要安裝到 pip 指令的版本号来完成,如下所示所显示:
pip install xgboost==1.0.1
假如您见到警示信息,现在可以安心地忽视它。例如,下列是您也许会见到并可以忽视的警示信息实例:
FutureWarning: pandas.util.testing is deprecated. Use the functions in the public API at pandas.testing instead.
假如您必须对于您的开发工具的特殊表明,客户程序实例教程:
XGBoost 安裝手册
XGBoost 源有自身的自定 API,虽然大家将根据 scikit-learn 包装类应用该方式:XGBRegressor 和 XGBClassifier 。这将使人们可以应用 scikit-learn 人工神经网络库文件的整套专用工具来提前准备数据信息和评定模型。
2个模型以同样的形式运作,并选用同样的技术参数来危害决策树算法的建立和加上到集成化的方法。
分类的 XGBoost 损失函数
分类每日任务涉及到在给出键入样版的情形下预测分析每一个很有可能类型的标识或几率。
具备互斥标识的分类每日任务有2种关键种类:具备2个类标识的二元分类和具备2个以上类标识的多种类型分类。
- 二元分类:具备2个类标识的分类每日任务。
- 多类分类:具备2个以上类标识的分类每日任务。
相关不一样种类分类每日任务的其他信息,客户程序实例教程:
人工神经网络中的 4 种分类每日任务,分别是:二元分类、多类分类、多标识分类、不平衡分类。
XGBoost 为这种问题种类中的每一种都保证了损失函数。
在人工神经网络中,典型性的作法是练习模型来预测分析几率每日任务的类组员几率,及其每日任务是不是必须明确的类标识来对预测分析的几率开展后处理工艺(例如应用argmax)。
这类方式 在练习深度神经网络神经元网络开展分类时应用,在使用 XGBoost 开展分类时也建议应用。
用以预测分析二元分类问题几率的损失函数是 binary:logistic ,用以预测分析多类问题类型几率的损失函数是 multi:softprob 。
- binary:logistic :用以二进制分类的 XGBoost 损失函数。
- multi:softprob :用于多类分类的 XGBoost 损失函数。
在配备 XGBClassifier 模型时,可以根据“ objective ”超参数特定这种字符串数组值。
针对二元分类
# 二元分类模型
model = XGBClassifier(objective=\'binary:logistic\')
对于多类分类
# 多元化分类模型
model = XGBClassifier(objective=\'multi:softprob\')
关键的是,假如您不特定 objective 超参数,XGBClassifier 将依据练习过程中给予的数据信息全自动挑选这种损失函数之一。
我们可以根据一个合理有效的事例来实际表明这一点。
下边的实例建立一个生成二元分类数据,应用默认设置超参数在数据上线性拟合 XGBClassifier ,随后打印出模型总体目标配备。
from sklearn.datasets import make_classification
from xgboost import XGBClassifier
# 随机生成数据信息
X, y = make_classification(n_samples=1000, n_features=20, n_informative=15, n_redundant=5, random_state=1)
# 挑选模型
model = XGBClassifier()
# 线性拟合模型
model.fit(X, y)
# 归纳模型损失函数
print(model.objective)
运作实例在数据上线性拟合模型并打印损失函数配备。
我们可以见到模型全自动选取一个损失函数开展二元分类。
binary:logistic
或是,我们可以特定总体目标并线性拟合模型,确定应用了损失函数。
from sklearn.datasets import make_classification
from xgboost import XGBClassifier
# 随机生成数据信息
X, y = make_classification(n_samples=1000, n_features=20, n_informative=15, n_redundant=5, random_state=1)
# 挑选模型
model = XGBClassifier(objective=\'binary:logistic\')
# 线性拟合模型
model.fit(X, y)
# 归纳模型损失函数
print(model.objective)
运作实例在数据上线性拟合模型并打印损失函数配备。
我们可以见到用以特定二元分类损失函数的模型。
binary:logistic
使我们在具备2个以上类的数据上反复此实例。在这样的情况下,三个类型。
下边列举了完善的实例。
from sklearn.datasets import make_classification
from xgboost import XGBClassifier
# 随机生成数据信息
X, y = make_classification(n_samples=1000, n_features=20, n_informative=15, n_redundant=5, random_state=1, n_classes=3)
# 挑选模型
model = XGBClassifier()
# 线性拟合模型
model.fit(X, y)
# 归纳模型损失函数
print(model.objective)
运作实例在数据上线性拟合模型并打印损失函数配备。
我们可以见到模型全自动为多种类型分类挑选了一个损失函数。
multi:softprob
或是,我们可以手动式特定损失函数并确定它用以练习模型。
from sklearn.datasets import make_classification
from xgboost import XGBClassifier
# 随机生成数据信息
X, y = make_classification(n_samples=1000, n_features=20, n_informative=15, n_redundant=5, random_state=1, n_classes=3)
# 挑选模型
model = XGBClassifier(objective=\"multi:softprob\")
# 拟合模型
model.fit(X, y)
# 归纳模型损失函数
print(model.objective)
运作实例在数据上拟合模型并打印损失函数配备。
我们可以见到用以为多种类型归类特定损失函数的模型。
multi:softprob
最终,也有别的损失函数可用以归类,包含:用以二元归类的 binary:logitraw 和 binary:hinge及其用以多类归类的 multi:softmax 。
您可以在这里查询详细目录:
Learning Task Parameters: objective
回归的 XGBoost 损失函数
回归就是指在给出键入样版的情形下预测分析标值的预测分析建模问题。
尽管预测分析几率听起来像一个回归问题(即概率是一个标值),但它通常不被视作回归种类的预测分析建模问题。
预测标值时采用的 XGBoost 目标函数是 reg:squarederror 损失函数。
- reg:squarederror :回归预测分析建模问题的损失函数。
在配备XGBRegressor模型时,可以根据“ objective ”超参数特定此字符串数组值。
例如:
model = XGBRegressor(objective=\'reg:squarederror\')
关键的是,假如你沒有特定 objective 超参数,XGBRegressor 会全自动给你挑选这一目标函数。
我们可以根据一个合理有效的事例来实际表明这一点。
下边的实例建立一个生成回归数据,在数据集上线性拟合XGBRegressor,随后打印出模型总体目标配备。
from sklearn.datasets import make_regression
from xgboost import XGBRegressor
# 随机生成数据信息
X, y = make_regression(n_samples=1000, n_features=20, n_informative=15, noise=0.1, random_state=7)
# 挑选模型
model = XGBRegressor()
# 拟合模型
model.fit(X, y)
# 归纳损失函数
print(model.objective)
运作实例在数据上拟合模型并打印损失函数配备。
我们可以见到模型全自动选取一个损失函数开展回归。
reg:squarederror
或是,我们可以特定总体目标并拟合模型,确定应用了损失函数。
from sklearn.datasets import make_regression
from xgboost import XGBRegressor
# 随机生成数据信息
X, y = make_regression(n_samples=1000, n_features=20, n_informative=15, noise=0.1, random_state=7)
# 挑选模型
model = XGBRegressor(objective=\'reg:squarederror\')
# 拟合模型
model.fit(X, y)
# 归纳损失函数
print(model.objective)
运作实例在数据上拟合模型并打印损失函数配备。
我们可以见到模型应用特定的损失函数开展回归。
reg:squarederror
最终,也有别的损失函数可用以回归,包含:reg:squaredlogerror 、 reg:logistic 、 reg:pseudohubererror 、 reg:gamma 和 reg:tweedie 。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。