我们这次拿新西兰六次洪灾的数据给大家讲讲,一共搞了674套住房和247套地下建筑的资料。以前大家都习惯用那种只看水深的“水深-损失曲线”,觉得损失肯定跟着水越深越多。但其实情况没这么简单,水流速度、房子的样子还有大家平时做的防护措施,这些乱七八糟的因素都在影响结果。这几年大家虽然用上了神经网络、贝叶斯网络这些多变量的算法,但大部分都盯着整栋楼看,很少有人去关心房子的结构、墙面或者水管这些具体构件是怎么受损的。而且因为数据太少,模型搬到别的地方准头就不行了。我们这次专门做了件事儿,就是把单变量和多变量模型在建筑和构件这两个层面拉出来溜溜,看看是不是越复杂越准。结果发现,那个叫随机森林的算法表现最好。 跟最简单的平方根函数比起来,它的预测精度提升了22-24%(就是MSE),还有4-27%(MAE)。有意思的是:1)在预测水位时,房子表面的水深是最重要的因素(Gini值比水流速度高四倍),但真要算哪块构件受损了,那还是水流速度说了算(Gini值比水深高七倍);2)具体到每个构件里,内部墙面和管道的预测最准,因为结构主体没多少受损的样本,所以不太靠谱;3)多变量模型要是把所有暴露因素都塞进去也没啥用,说明现在的数据里房子的差别没那么大;4)大家都有个毛病,就是喜欢低估高损失的情况(超过0.6),因为训练数据里的中低损失情况多。 总的来说,模型复杂了肯定能把结果算得更准,不过关键还是得把水深、速度、面积和楼层这些关键变量选对了。