Landslide Prevention and Innovation Challenge
Can you identify if a landslide occurred or not?
Prize
3 000 Zindi Points
Time
Ended 4 months ago
Participants
172 active · 473 enrolled
Helping
Hong Kong
Good for beginners
Classification
Safety
Help · 3 Oct 2022, 12:31 · 3

I used CNN.

Nice idea, the 5x5 forms a spatial grid and the various features are channels in that grid. Makes a lot of sense, but also lots of hard work. Unlike GBM, you have to scale the channels and it is a really small grid, so just a few convolutions.

I'll just share one thing that improved my CV and LB a little bit. It is in code snippet below. I calculate the angle of each tile that points to the tile in the middle (13). This can then be combined with others (e.g. placurve or procurve) to get new features that e.g. calculate how much force is excerted on 13 - or that is the idea.

For a CNN this was a nice comp, as you could try ideas like this. But CNN failed compared to GBM it seems, perhaps because 5x5 is too small for CNN to benefit and still small enough for GBM to fit well?

```# Angle pointing to 13
midpoint  = [ 135, 112.5, 90, 67.5, 45, 157.5, 135, 90, 45, 22.5, 180, 180, 0, 0, 0, 202.5, 225, 270, 315, 337.5, 225, 247.5, 270, 292.5, 315 ]

# Calculate
# (ix_aspect = 1_aspect, 2_aspect ...)
# (ix_point = 1_point, 2_point ...)
for x, y, a in zip ( ix_aspect, ix_point, midpoint ) :
train.loc [ :, y ] = np.cos ( np.radians ( train.loc [ :, x ].to_numpy ( dtype = float ) - a ) )
test.loc  [ :, y ] = np.cos ( np.radians ( test .loc [ :, x ].to_numpy ( dtype = float ) - a ) )

train.loc [ :, "13_point" ] = 1
test .loc [ :, "13_point" ] = 1```