前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >kaggle-(Santander Value Prediction Challenge)

kaggle-(Santander Value Prediction Challenge)

作者头像
西红柿炒鸡蛋
发布2020-10-26 11:31:32
6500
发布2020-10-26 11:31:32
举报
文章被收录于专栏:自学笔记自学笔记

https://www.kaggle.com/greenarrow2018/santander-value-prediction-challenge

剖析问题

要求你预测用户产生的价值是多少,他会使用RMSLE来估计。简单来说就是回归问题,回归问题之前House prediction就遇到过,一般来说,看找这种问题首先还是要考虑label是否符合高斯分布,因为很多模型就是基于高斯分布完成。

引入数据,数据分析

引入数据后我们看到,首先是test比train要多很多,几乎是10倍了,对于过拟合要小心考虑,深度学习这些还是少用。其次是feature column特别多,feature engineering也要很小心。

观察这些数据,可以看到有很多的0,这是稀疏矩阵。可能会有很多全是0的列

Feature Engineering

Label

首先要观察label是不是符合高斯分布了,符合高斯分布有两个好处,首先许多模型都是基于高斯分布完成的,其次高斯分布会有很好的泛化性,因为大部分的误差都符合高斯分布。

直方图可以看到偏度有点大,需要做一个box-cos变换才行。

变换之后好多了。当然不要忘记对test也要做这个操作。

unique

接下来我们看看有没有多余的列,如果有一个column他的值全都是constant,那么我们可以直接去掉。

发现了256个列,等下直接删掉。

Correlation Coefficient

有三大相关系数,这里我没有选择pearson相关系数,因为很多0,只有少量的是非0元素,如果是线性相关性的话那不就是乘上0的了吗?所以我选择Spearman相关系数。

之所以用scipy不用pandas的corr,是因为pandas这个没办法加上进度条,而且这个4000多个特征,pandas要求很久的。

最后我们画出相关系数的条形图,会发现基本都是0.1左右,其实0.2以上才是弱相关的,所以看不出有什么相关性。

Feature important

既然画图是看不出了,那直接算法分析吧。我们采用ExtraTreesRegressor和lightbgm来判断feature的重要程度。

有些特征是相关系数特别大的,lightbgm也差不多,这里不贴图了。

删去那256列没有用的列之后直接预测的值是1.53。

借鉴了https://www.kaggle.com/alexpengxiao/preprocessing-model-averaging-by-xgb-lgb-1-39

的做法之后改进。

Upgrade

主要改进在5个方面。

  • 特征重要性使用随机森林模型。其实我觉得这个影响应该是不大的。
  • 只保留了1000个重要的模型。
  • 使用Kolmogorov-Smirnov test来判断这train和test的column是否是同一个distribution出来的。
  • 增加了statistical feature 和 low-dimension features
  • 聚合模型 其中第三第四点我是没有想到。第三点使用KS假设检验来检测train和test的column有哪一列不是同一个distribution的,如果不是,就是删了。因为其实检验了之后并没有不是同一个distribution生成的,所以notebook就懒的写的了。第四点中他增加的特征有两种,一种是统计特征,比如一行中的均值,方差,最大值等等,这种做法之前我还没有遇到过,个人认为这种添加可能只是应用于少数情况吧。毕竟想其他如果不是匿名的column这么用就太荒谬了。另一个是添加了低纬度的数据,讲原始数据做的降维之后和原始数据合并,这个做法也是第一次见,很神奇。但是不得不说还是有效果的,可能是一种特征增强的方法吧。 最后score是1.41,比原来的好上不少。 主要接触了几个新的数据预处理方法: 1. 如果column非常多,可能会存在常数列,可以考虑去掉。 2. 增加feature还可以增加statistical feature和low-dimension feature, 但是场合可能要考虑。 3. feature importance主要有3个,random forest,lightbgm,ExtraTrees 4. KS假设检验检测是否同一分布(我觉得这个很重要。)

条形图,直方图,柱状图

条形图和柱状图表达的数据的形式基本相同,只不过一个横着一个竖着。

条形图

柱状图

直方图和条形图和柱状图的区别在于,直方图是描述连续变量的,比如上面的label画的直方图就是,一个一个区间的数量。而条形图和柱状图是离散变量的,如上面的feature importance所画的图。


Pearson correlation coefficient

皮尔森相关系数是一种线性相关系数。用来记录两个变量之间的线性相关程度的。绝对值越大,表示相关系数越强

\rho_{x,y} = \frac{cov(X, Y)}{\sigma_X\sigma_Y} = \frac{E(X - \mu_X)E(Y - \mu_Y)}{\sigma_X \sigma_Y}
\rho_{x,y} = \frac{cov(X, Y)}{\sigma_X\sigma_Y} = \frac{E(X - \mu_X)E(Y - \mu_Y)}{\sigma_X \sigma_Y}

估算样本的协方差和标准差,可得到样本相关系数:

r = \frac{\sum^n_{i=1} (X_i - X)(Y_i - Y)}{\sqrt{\sum^n_{i=1}(X_i - X)^2}\sqrt{\sum^n_{i=1}(Y_i - Y)^2}}
r = \frac{\sum^n_{i=1} (X_i - X)(Y_i - Y)}{\sqrt{\sum^n_{i=1}(X_i - X)^2}\sqrt{\sum^n_{i=1}(Y_i - Y)^2}}

当r > 0的时候说明两个变量是正相关,一个变量越大另一个变量也是越大的。 当r < 0的时候说明两个变量负相关,一个变量越大另一个变量反而越小。 当r = 0说明两个变量无相关性。 当r = 1 or -1说明两个变量相关性呈线性直线。 0.8-1.0 极强相关 0.6-0.8 强相关 0.4-0.6 中等程度相关 0.2-0.4 弱相关 0.0-0.2 极弱相关或无相关 皮尔森系数通常要求是数据间要符合联合高斯分布,不是仅仅X和Y分比符合高斯分布,而是两个数据一起符合一个联合高斯分布,当然这个条件并不是严格限制的。另外皮尔森系数还要求数据间差距不能太大,也就是离群点不能多,否则会干扰计算结果。 所以pearson相关系数有四个使用条件: 1. 两个变量都是要测量到的连续变量。 2. 两个变量总体都应该符合高斯分布。 3. 变量必需是成对存在。 4. 变量间应该为线性关系。 但是就算是Pearson相关系数是0,也可能存在曲线的关系。

Spearman correlation coefficient

Pearson相关系数并不是在什么情况下都可以使用,而Spearman相关系数是一个非参数度量两个变量相关性的指标,用单调函数来评估两个变量之间的相关性。 首先对

X_i, Y_i
X_i, Y_i

按照从大到小的顺序排列,

X_i^{'},Y_i^{'}
X_i^{'},Y_i^{'}

为排列之后的下标,也就是排列之后所在的位置,令

d_i = X_i^{'}-Y_i^{'}
d_i = X_i^{'}-Y_i^{'}

为秩差。则相关系数可以表示成:

\rho_{X,Y} = 1 - \frac{6\sum^n_{i=1} d_{i}^2}{n(n^2-1)}
\rho_{X,Y} = 1 - \frac{6\sum^n_{i=1} d_{i}^2}{n(n^2-1)}

Spearman相关系数经常被称为是非参数相关的参数,有两层含义: 1. 只要X和Y都单调的函数关系,X和Y就是spearman相关的。而pearson是只有在线性相关的才有相关性。 2. Spearman可以在不知道X和Y的概率密度的时候求解。 3. Spearman对离群点的敏感性不高。因为你最大要不是排第一个要不就是排最后一个。 虽然这个Spearman的适用范围会广一些,但是统计效能要比Pearson低一些,不太容易检测出相关性。

Kendall correlation coefficient

kendall相关系数是基于协同的思想,对于两个变量,如果

X_i > Y_i and X_j > Y_j 或X_i < Y_i and X_j <Y_j
X_i > Y_i and X_j > Y_j 或X_i < Y_i and X_j <Y_j

就称这两对观察值是和谐的,否则就是不是。

\rho_{X,Y} = \frac{(number of the concordant pairs)-(number of the discordant pairs)}{\frac{1}{2}n(n-1)}
\rho_{X,Y} = \frac{(number of the concordant pairs)-(number of the discordant pairs)}{\frac{1}{2}n(n-1)}

和谐的观察值对减去不和谐的观察值对的数量,除以总的观察值对数。 Kendall主要是检测两个变量之间的等级关系。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 剖析问题
  • 引入数据,数据分析
  • Feature Engineering
    • Label
      • unique
        • Correlation Coefficient
          • Feature important
          • Upgrade
          • 条形图,直方图,柱状图
          • Pearson correlation coefficient
          • Spearman correlation coefficient
          • Kendall correlation coefficient
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档