返回列表

8th place solution: One trick to win the gold

551. AMP®-Parkinsons Disease Progression Prediction | amp-parkinsons-disease-progression-prediction

开始: 2023-02-16 结束: 2023-05-18 药物研发 数据算法赛

第8名解决方案:赢得金牌的一个关键技巧

Joseph
Joseph
Kaggle Master
发布日期:2023年5月19日 | 投票数:28 | 竞赛排名:第8名

感谢我的队友 @hookman @zui0711 @max2020 @librauee,我从他们身上学到了很多。他们发现的关键技巧是数据中存在两个群体:真实患者和对照组。我们可以通过每个ID的最小visit_month差值来识别:

for df in [clinical, sup_clinical]:
    df['visit_month_diff'] = df.groupby(['patient_id'])['visit_month'].diff()
    df['visit_month_diff_min'] = df.groupby('patient_id')['visit_month_diff'].transform('min')

在clinical和sup_clinical数据中,visit_month差值有3、5、6、12、36个月。我们只选择3、6、12、36部分作为训练数据,并将3、36转换为6。我们发现3、6和36的updrs值明显更高,而12的updrs值较低(5部分因异常被剔除)。

不同visit_month差值和月份的updrs值

由此我们可以得出结论:visit_month差值==6的是真实患者,visit_month差值==12的是对照组。

我们使用分段函数分别优化两个组的smape指标:

def calculate_predictions(pred_month, trend):
    if target == 'updrs_4': 
        pred_month = pred_month.clip(60, None) 
    pred_month2 = (pred_month-60).clip(0, None)
    return np.round(trend[0] + pred_month * trend[1] + pred_month2 * trend[2])
0=对照组, 1=真实患者

在第一次推理循环中,我们无法获得visit_month差值,因此基于真实患者+对照组训练了额外的系数。在每次循环中,我们记录历史数据以便获得最小visit_month差值

发现这两个群体可以帮助你在公开榜上达到54.2~54.8分,在私有榜上达到60.1~60.7分。

团队成员

Max2020 (Grandmaster)
老肥 (Master)
ADAM. (Grandmaster)
嘴爷 (Master)

同比赛其他方案