551. AMP®-Parkinsons Disease Progression Prediction | amp-parkinsons-disease-progression-prediction
感谢我的队友 @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差值==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])
在第一次推理循环中,我们无法获得visit_month差值,因此基于真实患者+对照组训练了额外的系数。在每次循环中,我们记录历史数据以便获得最小visit_month差值。
发现这两个群体可以帮助你在公开榜上达到54.2~54.8分,在私有榜上达到60.1~60.7分。