Lintulajien levinneisyysmallinnus koneoppimisella

Päivitys 16.2.2024: Sivun lopussa tietoja mallin uudesta versiosta.

Meneillään olevassa Suomen 4. lintuatlashankkessa kerätään tietoa lintujen levinneisyydestä. Hanke toteutetaan pääosin vapaaehtoistyönä: lintuharrastajat tekevät havaintoja ja tarkkailevat pesinnän merkkejä Suomen kaikissa n. 3859 yhtenäiskoordinaatistoruudussa (ykj-ruudusta, kukin 10 x 10 km). Havainnoinnin suuntaamisessa auttaisi tieto siitä, mitä lajeja milläkin alueella todennäköisesti esiintyy, mutta joista vielä puuttuu havaintoja.

Helppo tapa tehdä tällaisia puutelistoja olisi verrata nykyisen atlaksen havaintoja edellisen 2006-2010 toteutetun 3. lintuatlaksen tietoihin. Mutta tämä voisi vinouttaa havainnointia kannustamalla replikoimaan edellisen atlaksen tuloksia.

Ajantasaisempaa vertailua varten kokeilin tehdä levinneisyysmallin lintulajeista tekoälyn ja koneoppimisen avulla. Tässä kerron teknisiä yksityiskohtia tämän tekemisestä. Malli on käytössä Havistin-palvelun puutelistoilla, ks. esim. Hollolan Arrankorven ruudun puutelista

Data

Koulutusdatana käytin 12. toukokuuta 2023 mennessä vähintään tyydyttävästi kartoitettujen ruutujen lajitietoja. Tällaisia ruutuja oli 769 kappaletta eli 19,9 % kaikista ruuduista. (Ruutu katsotaan tyydyttävästi kartoitetuksi, jos sen pesimävarmuussumma ylittää tietyn 1980-luvulla määritellyn raja-arvon. Raja-arvo on määritelty mm. ruudun mereisyyden ja leveyspiirin perusteella.) Rajasin havainnot 229 yleisimmin havainnoituun lintulajiin (havaintomäärän perusteella: yleisin kirjosieppo, harvinaisin lapinkirvinen).

Lisäksi käytin jokaisesta ykj-ruudusta laskettuja Corine-datan karkean biotooppijaon (kiitos Ilona Aalto!) mukaisia prosenttiosuuksia. Biotoopit olivat makea vesi, merivesi, metsä, maaseutu, taajama ja puuttuva data.

Kokosin tämän datan taulukoksi, jossa yhdellä rivillä on seuraavat sarakkeet:

  • lajinimi
  • pesimävarmuusluokka (0-3; ei havaintoja/epätodennäköinen, mahdollinen, todennäköinen tai varma)
  • ykj-ruudun pohjoiskoordinaatti, esim. 667
  • ykj-ruudun itäkoordinaatti, esim. 337
  • kunkin biotoopin osuus ruudulla, 0.1 prosenttiyksikön tarkkuudella

Kaikkiaan dataa tuli 176.101 riviä.

Koulutus

Seuraavaksi latasin tämän taulukon Googlen Vertex AI -palveluun. Käytin palvelua oletusasetuksilla luodakseni regressiomallin, joka ennustaa pesimävarmuusluokan muiden tietojen perusteella. Datasta 80 % käytettyyn mallin luomiseen, 10 % testaamiseen ja 10 % validointiin, satunnaisotannalla.

Koulutukseen kului aikaa 1 nooditunti (node hour), joka maksoi noin 20 euroa.

Valmiin mallin tunnusluvut ovat:

  • Mean absolute error (MAE): 0,438
  • Mean absolute percentage error (MAPE): 171.626.220 
  • Root mean square error (RMSE): 0,699 
  • Root mean squared log error (RMSLE): 0,343
  • r squared (r^2): 0,654

Googlen palvelu antaa myös tilastoja siitä, mitkä tekijät vaikuttavat ennusteeseen. Lajilla on odotetusti suurin merkitys:

Tulokset

Kokonaisuutena malli vaikuttaa kohtuullisen hyvältä. Joillakin Lapin lajeilla ennusteet vaikuttavat epätavallisilta, todennäköisesti koska biotooppidata niputtaa metsät, tunturikoivikot ja tunturipaljakat kaikki yhden biotoopin alle.

Mallikarttoja: järripeippo, peltopyy ja harmaalokki. Tummempi väri merkitsee varmempaa pesintää (musta = 3, valkoinen = 0):

Mallia voisi kokeilla parantaa 

  • Lisäämällä uusia biotooppiluokkia kuten
    • avosuo
    • tunturipaljakka
    • tunturikoivikko
    • lehtimetsä
    • havumetsä
    • ruovikko ja rantaniitty (kosteikkolinnuille)
    • joki vs. muu makea vesi
  • karkeistamalla koordinaatteja 100 kilometrin tasoon, jotta havaintojen sijainnin satunnaisvaihtelu ei vaikuttaisi malliin liikaa
  • Lisäämällä koulutusaikaa

Päivitys 16.2.2024

Tein mallin uudelleen helmikuussa 2024 samalla menetelmällä, mutta käyttäen päivtettyä atlasdataa ja tarkempia biotooppitietoja:

Vähintään tyydyttävästi kartoitettujen ruutujen havainnot 10.2.2024 tilanteen mukaan. Ruutuja oli 1814 kpl (989 tyydyttävää, 437 hyvää, 388 erinomaista.) eli 47 % kaikista ruuduista.

Rajasin havainnot 220 yleisimmin havainnoituun lintulajiin (havaintomäärän perusteella: yleisin kirjosieppo, harvinaisin ruokosirkkalintu.)

Käytin jokaisesta ykj-ruudusta laskettuja Corine-datan karkean mukaisia prosenttiosuuksia. Biotoopit olivat urbaani alue (ml. tiet), maatalousalue, metsä, avoin metsä (esim. hakkuuaukea), avoin alue (esim. kalliot), puisto (esim. kaupunkipuistot, niityt), avosuo, kosteikko, makea vesi, meri, tunturipaljakka ja puuttuva data (= Suomen ulkopuoliset alueet). Luokituksen tein pistokokeilla Corine-datasta, huomioiden Suomen biotoopit.

Lisäksi laskin Luken b. 2019 metsänvaratietojen perusteella ykj-ruudun keskimääräisen puuston tilavuuden.

Kaikkiaan koulutusdataa tuli 397.322 riviä.

Koulutukseen aikaa kului 1 nooditunti, joka maksoi noin 40 euroa.

Valmiin mallin tunnusluvut olivat varsin samanlaiset kuin aiemmallakin mallilla:

  • Mean absolute error (MAE): 0,426
  • Mean absolute percentage error (MAPE): 158,957,780
  • Root mean square error (RMSE): 0,684
  • Root mean squared log error (RMSLE): 0,334
  • r squared (r^2): 0,683

Tilastoja siitä, mitkä tekijät vaikuttavat ennusteeseen. Lajilla on odotetusti suurin merkitys:

Kokonaisuutena malli vaikuttaa kohtuullisen hyvältä ja pienipiireteisemmältä kuin aiempi malli. Paikoin ennusteissa on kummallisuuksia, jotka johtunevat Corine-datan epätarkkuuksista ja puuttuvasta tiedosta.

  • Lapissa, estenkin käsivarren pohjoisosassa, esiintyy mallin mukaan runsaasti eteläisiä lajeja (esim. viiksitimali). Tämä todennäköisesti johtuu siitä, että Corine-datassa Lapin kosteat niityt ovat samassa luokassa Etelä-Suomen ruovikkojen ja kosteikkojen kanssa.
  • Itärajalla esiintyy mallin mukaan merilintuja (esim. haahka). Tämä todennäköisesti johtuu siitä, sekä itärajalla että merialueilla on paljon puuttuvaa dataa. Malli on siis on oppinut, että puuttuva data viittaa merilintujen esiintymiseen.
  • Malli ennustaa pienille ulkoluodoille suurta lajimäärää. Tämä todennäköisesti johtuu siitä, että koulutusdatassa ei ole kovin montaa tyydyttävästi tai paremmin kartoitettua ulkomeren ruutua.
  • Malli ennustaa suurta lajimäärää asutuskeskuksiin (esim. pk-seutu, Tampere, Turku, Jyväskylä, Oulu). Tämä johtunee siitä, että asutuskeskuksissa retkeillään ja havainnoidaan suhteessa enemmän kuin muualla.

Tämän takia kun tein ennustekartat lajeille, muokkasin mallille annettavia biotooppitietoja seuraavasti:

  • jos ruudussa on alle 1 % merta, jätin tiedon puuttuvasta datasta pois.
  • jos ruudussa on ly 0,1 % tunturia, jätin tiedon kosteikosta pois.

Tämä paransi ennusteita hieman.

Mallikarttoja: järripeippo, peltopyy ja harmaalokki. Kirkkaankeltainen merkistee varmempaa pensintää.

Kaikkia karttoja voi tarkastella Havistin-palvelun atlassivuilla.

Uutta mallia voisi kokeilla parantaa

  • Käyttämällä siivottua Corine-dataa tai muuta biotooppiluokitusta, joka huomioi paremmin Lapin biotoopit, kuten kosteat niityt ja tunturikoivikot.
  • Ottamalla mukaan lisää muuttujia, kuten rantaviivan pituuden.
  • Jättämällä tiedon puuttuvasta datasta kokonaan pois, ja toisaalta suhteuttamalla ennusteen ko- ruudun Suomen alueella olevaan pinta-alaan.
  • Ottamalla mukaan enemmän ulkomeren ruutuja, vaikka ne eivät olisi virallisesti saavuttaneet tyydyttävää kartoitustasoa.