kaggle-地震预测-LANL Earthquake Prediction

kaggle-地震预测-LANL Earthquake Prediction比赛记录

1.baseline

加入这次比赛的时间比较晚,所以直接先follow了别人的一个baseline来start找找思路,链接如下:
https://www.kaggle.com/artgor/seismic-data-eda-and-baseline

2.比赛记录

  1. 时间:2019/04/17,10:35AM 第一次提交
    score:1.640 TOP73%
    下一步:特征有点少也没有一些表示趋势和峰值的特征,打算去先从更多扩展有效特征入手

扩展特征:

  1. 趋势:用曲线拟合后的斜率来表示趋势
def add_trend_feature(arr, abs_values = False):
    idx = np.array(range(len(arr)))
    if abs_values:
        arr = np.abs(arr)
    lr = LinearRegression()
    lr.fit(idx.reshape(-1,1),arr)
    return lr.coef_[0]
  1. 变化率:
def change_rate(x):
    change = (np.diff(x)/x[:-1]).values
    #每个点的变换rate
    change = change[np.nonzero(change)[0]]
    #返回非0值的下标从而将值为0的数值取出
    change = change[~np.isnan(change)]
    #除去非法字符
    change = change[change!=-np.inf]
    change = change[change!= np.inf]
    return np.mean(change)

3.分位数quantile
4.count_big 计算大于某一值的信号数量的总数
5.mad 中位数绝对偏差
6.kurtosis() and x.skew()衡量信号峰值和扁平程度

  1. 时间:2019/05/15,9:35PM 第13次提交
    score:1.411
    下一步:调参+寻求更有效的特征

  2. 时间:2019/05/19,10:55PM 第19次提交
    score:1.410
    在这里插入图片描述
    下一步:调参+寻求更有效的特征

  3. 时间: 2019/05/27 5:35PM 第28次提交
    昨晚kernel 公开了一个1.399的模型,排名一晚上掉了近200名,被迫将一个调参一半的NN模型融合交了上去,Score 1.369
    在这里插入图片描述
    下一步,继续训练自己的LSTM model。这个model的提升空间还很大,特征处理再好一点的话应该还能进不少。加油
    (ps:lstm处理时间序列优势太大了,随便几个特征丢上去就能得分好高)

  4. 时间:2019/5/30 34次提交
    看了不少讨论,感觉自己在LB上过拟合的非常厉害,可能最后的成绩会掉不少,毕竟只选了百分之13的数据,头疼。
    kaggle-地震预测-LANL Earthquake Prediction_第1张图片
    model 现在是CATboost+LGBM+LSTM+GP的blend模型。
    最近破事有点多,有点烦。

  5. 时间: 2019/6/2
    在这里插入图片描述

  6. 6/3
    在这里插入图片描述
    挺喜欢这个位次的,就这样吧。

结局

凉凉~~~ 没在地震中幸存下来,不过还好没有掉出奖牌区,也算是一个安慰了。
完事之后写个复盘把。
以后加油

learning

  • question1:
    Can you please share some insights on choosing hyperparameters for each training method?

  • answer:
    Basically this is experience + intuition + trial and error.
    The meaning of each parameter can be read in the documentation. Usually for lgb at first I tune max_depth and learning rate manually for a first solution. Then I try adding regularizarion on case of overfitting - lowering max_depth and num_leaves, increase min_data_in_leaf and reg_. After this I use bayesian optimization to tune all parameters.
    Xgboost, catboost are similar.
    For SVM I tuned nu and C with gridsearch.

  • question2:
    Could you give a brief explanation on the part where you used windows to extract some features.

  • answer:
    Here are some articles with explanations of this approach:
    https://www.kdnuggets.com/2017/11/automated-feature-engineering-time-series-data.html
    https://medium.com/making-sense-of-data/time-series-next-value-prediction-using-regression-over-a-rolling-window-228f0acae363
    https://machinelearningmastery.com/basic-feature-engineering-time-series-data-python/

  • question3:
    loss function 的选择?
    -answer:
    本问题中最好选择huber loss 而非L1 or L2因为huber对异常值更加敏感。

你可能感兴趣的:(深度学习,kaggle)