Kaggle债务违约预测冠军经验分享
债务违约预测是Kaggle中的一个比赛,本文将介绍取得第一名成绩的方法,本次比赛的目标包括两个方面。其一是建立一个模型,债务人可以通过它来更好地进行财务方面的决策。其二是债权人可以预测这个债务人何时会陷入到财务方面的困境。最终目的是,通过预测未来两年内债务违约的概率,来改进现有的信用评分制度。这是一个极度复杂和困难的Kaggle挑战,因为银行和各种借贷机构一直都在不断地寻找和优化信用评分的算法。这个模型是银行用来判定是否准许某一笔贷款的。根据这个模型提供的信息,银行可以更好地作出决策,借贷者也可以更好地进行财务方面的规划,以免将来陷入债务危机。
本次挑战允许团队使用集成模型和算法,如XGBoost, Gradient Boosting, 随机森林(Random Forest), 限制玻尔兹曼机(Restricted Boltzman Machine Neural Networks), Adaboost。以及使用先进的堆叠技术(stacking)和投票分类器来准确地预测违约概率。
我们的测量和排名严格使用ROC曲线的AUC值。我们遵照了Agile过程,来确保我们分块、并行地完成关键的任 ...
Exploration data analysis(unfinished)
主要是常用的画图函数
主要是常用的数据分析函数模块
加载所需要模块
1234567import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snscolor = sns.color_palette()# pd.options.mode.chained_assignment = None%matplotlib inline
读取数据
12train = pd.read_json("train.json")test = pd.read_json("test.json")
显示前5行
1train.head()
从上可以看到数据类型都有:数值型,类别型,时间特征,文本特征…
查看数据的行数:
12print("Train Rows: ",train.shape[0])print("Test Rows: ",test.shape[0])
条形图
利用矩阵条的高度反映数值变量的集中趋势,某一类别下出现 ...
XGBoost-LightGBM和CatBoost的同与不同
尽管近年来神经网络复兴并大为流行,但是 boosting 算法在训练样本量有限、所需训练时间较短、缺乏调参知识等场景依然有其不可或缺的优势。本文从算法结构差异、每个算法的分类变量时的处理、算法在数据集上的实现等多个方面对 3 种代表性的 boosting 算法 CatBoost、Light GBM 和 XGBoost 进行了对比;虽然本文结论依据于特定的数据集,但通常情况下,XGBoost 都比另外两个算法慢。
2014 年 3 月,XGBOOST 最早作为研究项目,由陈天奇提出
2017 年 1 月,微软发布首个稳定版 LightGBM
2017 年 4 月,俄罗斯顶尖技术公司 Yandex 开源 CatBoost
由于 XGBoost(通常被称为 GBM 杀手)已经在机器学习领域出现了很久,如今有非常多详细论述它的文章,所以本文将重点讨论 CatBoost 和 LGBM,在下文我们将谈到:
算法结构差异
每个算法的分类变量时的处理
如何理解参数
算法在数据集上的实现
每个算法的表现
LightGBM 和 XGBoost 的结构差异
在过滤数据样例寻找分割值时,Light ...
数据探索的综合指南
没有任何捷径能一步掌握数据探索.如果你想要提高模型的准确性,你会发现数据探索会极大地帮助你提高模型的准确度.
我可以很自信地说,因为我经历过很多这样的情况。
本教程帮助您理解数据挖掘的底层技术。和往常一样,我尽力用最简单的方式来解释这些概念。为了更好的理解,我举了几个例子来演示复杂的概念。
数据准备
记住一点,我们输入的数据的质量决定了我们输出的质量,因此,一旦你拿到了你的业务准备,是值得花费时间和精力在这上面的。根据我个人的经验而言,数据探索、清洗和准备能耗费整个项目的70%的时间。下面是为建立你的预测性模型所做的数据理解、清洗和准备工作:
变量识别
单变量分析
双变量分析
缺失值处理
异常值检测
变量转换
变量创造
最终,我们将需要在提出我们的模型之前重复前面步骤4-7多次
现在让我们从每个步骤的细节学起
变量识别
首先,搞明白自变量(predictor(input))和因变量(target(output))。下一步,清楚数据类型和变量类别.
让我们通过一个例子更清楚的理解这个步骤:
Example:-假设,我们要预测学生是否将会打板球(参考下面的 ...
hyperopt-调参模块
超参数优化是实现模型性能最大化的重要步骤。为此大神们专门开发了几个Python包。scikitt -learn提供了一些选项,GridSearchCV和RandomizedSearchCV是两个比较流行的选项。在scikitt之外,Optunity、Spearmint和hyperopt包都是为优化设计的。在这篇文章中,我将重点介绍hyperopt软件包,它提供了能够超越随机搜索的算法,并且可以找到与网格搜索相媲美的结果,同时也能找到更少的模型。
接口说明
具体的详细文档: http://www.coxlab.org/pdfs/2013_bergstra_hyperopt.pdf
fmin接口:需要定义一个概率分布,确保能在变化的超参中找到一个可信的值。就像scipy中的optimize.minimize借口。因此需要我们提供一个优化的目标函数。很多优化算法都要假设在一个向量空间里面搜索最佳值,hyperopt可以对搜索空间进一步细化,比如说使用log话活着均匀分布随机获取之类。
hyperopt需要定义的主要有四个地方:
1.需要最小化的目标函数
2.优化所需要搜索的搜 ...