决策树总结
1.决策树的路径及其对应的if-then规则集合具有一个重要的性质:互斥且完备。
2.学习的目标是根据给定的训练数据集构建一个决策树模型,使它能够对实例进行正确的分类。
3.决策树学习的损失函数通常是正则化的极大似然函数。决策树学习的策略是以损失函数为目标函数的最小化。
4.决策树学习的算法通常是一个递归的选择最优特征,并根据该特征对训练数据进行分割,使得对各个子数据集有一个最好的分类过程,这一过程对应着整个空间的划分,也对应着决策树的构建。
ID3是基本的决策树构建算法,作为决策树经典的构建算法,其具有结构简单、清晰易懂的特点。虽然ID3比较灵活方便,但是有以下几个缺点: 只能处理离散型属性,并且对倾向于选择取值较多的属性
(1)采用信息增益进行分裂,分裂的精确度可能没有采用信息增益率进行分裂高
(2)不能处理连续型数据,只能通过离散化将连续性数据转化为离散型数据
(3)不能处理缺省值
(4)没有对决策树进行剪枝处理,很可能会出现过拟合的问题
C4.5算法的不足: C4.5算法流程与ID3相类似,只不过将信息增益改为信息增益比,以解决偏向取值较多的属性的问题,另外它可以处理连续型属性。
1)由于决策树算法非常容易过拟合,因此对于生成的决策树必须要进行剪枝。
2)C4.5生成的是多叉树,即一个父节点可以有多个节点。在计算机中二叉树模型会比多叉树运算效率高。如果采用二叉树,可以提高效率。
3)C4.5只能用于分类,如果能将决策树用于回归的话可以扩大它的使用范围。
4)C4.5由于使用了熵模型,里面有大量的耗时的对数运算,如果是连续值还有大量的排序运算。
GB和xgboost原理推导:
调参总结:
网格搜索GridSearchCV
GridSearchCV用于系统地遍历多种参数组合,通过交叉验证确定最佳效果参数。
class sklearn.model_selection.GridSearchCV(estimator, param_grid, scoring=None, fit_params=None, n_jobs=None, iid=’warn’, refit=True, cv=’warn’, verbose=0, pre_dispatch=‘2*n_jobs’, error_score=’raise-deprecating’, return_train_score=’warn’)
常用参数:
estimator:所使用的分类器:estimator=XGBoostRegressor(eta=0.1, num_boost_round=50, colsample_bytree=0.5, subsample=0.5),并且传入除需要确定最佳的参数之外的其他参数。每一个分类器都需要一个scoring参数,或者score方法。
param_grid:值为字典或列表,即需要最优化的参数的取值,param_grid=xgb_param_grid,xgb_param_grid = {‘max_depth’: list(range(4,9)), ‘min_child_weight’: list((1,3,6))}。
scoring:准确度评价标准,默认为None,这是需要使用score函数;或者scoring=‘roc_auc’,根据所选模型不同,评价准则不同。
cv:交叉验证参数,默认为None,使用三折交叉验证。指定fold数量,默认为3,也可以是产生训练/测试数据的生成器。
refit:默认为True,程序将会以交叉验证训练集得到的最佳参数,重新对所有可用的训练集与开发集进行,作为最终用于性能评估的最佳模型参数。即在搜索参数结束后,用最佳参数结果再次fit一遍全部数据集。
iid:默认True,为True时,默认为各个样本fold概率分布一致,误差估计为所有样本之和,而非各个fold的平均。
verbose:日志冗长度,int类型。0:不输出训练过程,1:偶尔输出,>1:对每个子模型都输出。
n_jobs: 并行数,int类型。-1:和CPU核数一致;默认值为1;>1:指定并行数。
pre_dispatch:指定总共分发的并行任务数。当n_jobs大于1时,数据将在每个运行点进行复制,这可能导致OOM,而设置pre_dispatch参数,则可以预先划分总共的job数量,使数据最多被复制pre_dispatch次。
随机参数优化RandomizedSearchCV
RandomizedSearchCV 实现了对参数的随机搜索, 其中每个设置都是从可能的参数值的分布中进行取样。 这对于穷举搜索有两个主要优势:
1. 可以选择独立于参数个数和可能值的预算
2.添加不影响性能的参数不会降低效率
大体类似于GridSearchCV指定参数进行如何取样。此外,通过n_iter参数指定计算预算,即取样候选项数或取样迭代次数。对于每个参数,可以指定在可能值上的分布或离散选择的列表(均匀采样):
搜索的输出值
cv_results_:给出不同参数情况下的评价结果的记录
best_params_:描述了已取得最佳结果的参数的组合
best_score_:成员提供优化过程期间观察到的最好的评分