O que é Kriging?

Bruno Jacoia
Datarisk.io
Published in
5 min readSep 21, 2020

Kriging é um método de interpolação espacial criado pelo engenheiro sul-africano Danie Krige na década de 60. A ideia básica por trás dessa técnica é conseguir prever os valores de uma função a partir de uma quantidade limitada de pontos em cujo valor é conhecido.

Imagine a seguinte situação: um grupo de mineradores descobre que existe ouro no solo de uma região montanhosa. Eles começam a escavar essa região e retirar as pepitas. Com o passar do tempo, eles conseguem abrir vários locais de escavação nesta região e percebem que, em alguns desses locais, a concentração de ouro é muito alta, mas em outros pontos quase não há metal para retirar.

Logo, uma pergunta natural deve surgir: com a informação já disponível sobre a concentração de ouro em determinados pontos da região, conseguimos prever as melhores localidades para abrir uma nova escavação?

O método de Kriging surgiu para resolver exatamente este problema para os mineradores de ouro da região montanhosa de Witwatersrand na África do Sul.

Desde então, essa técnica geoestatística tem sido utilizada nas últimas décadas de forma ampla em problemas de mineração, geologia e meio-ambiente. Além disso, ela pode ser uma técnica poderosa para ser utilizada em feature engineering, possibilitando a criação de variáveis baseadas em geolocalização para a utilização em modelos de machine learning.

Mas afinal, como funciona?

A técnica se baseia na primeira lei da geografia, introduzida pelo geógrafo Waldo Tobler:

“Todas as coisas estão relacionadas com todas as outras, mas coisas próximas estão mais relacionadas do que coisas distantes.”

Por exemplo, em um raio menor do que um metro, é bastante provável que não exista uma grande diferença na elevação do terreno. Em um raio de 20 metros, pode existir uma variação maior, mas ainda é bem provável que a diferença de elevação não seja muito grande. Agora, se você considerar um raio de 10 quilômetros, a elevação do terreno pode ter variado muito.

Mas como fazemos para calcular o quanto os pontos estão relacionados utilizando apenas a sua distância? Para isso, definimos três funções: a semivariância, o variograma empírico e o variograma teórico.

A função de semivariância foi originalmente definida em 1963 pelo matemático francês Georges Matheron. Ela nada mais é do que a metade da variância entre todos os pontos que estão separados por uma distância h. Matematicamente podemos escrevê-la da seguinte forma:

onde P(h) é o conjunto de todos os pares de pontos si e sj separados por uma distância h, e Z(si) e Z(sj) são os valores da função nesses pontos respectivamente.

A partir dessa função podemos plotar o gráfico do variograma empírico. Ele nada mais é do que o gráfico da função em função da distância hpara todos os pontos que já sabemos o valor da função que estamos tentando prever.

Variograma empírico

Com essa informação em mãos, podemos então definir o variograma teórico. Assim, escolhemos uma curva que melhor se ajuste aos dados que temos. Isso é importante para conseguirmos generalizar qual a semivariância que esperamos em novos pontos que iremos prever. Esse passo é extremamente importante no processo de Kriging e pode influenciar bastante na qualidade das previsões.

Variograma teórico

De acordo com a forma do variograma empírico, podemos escolher entre alguns tipos de curva para aproximar os dados.

Imagem original retirada de: https://desktop.arcgis.com/en/arcmap/10.3/tools/3d-analyst-toolbox/how-kriging-works.htm

Prevendo os valores de novos pontos

De forma geral, para prever o valor de um novo ponto, iremos calcular uma média ponderada dos valores reais da função em uma vizinhança daquele ponto.

Assim, dado um ponto s, estimamos o valor da função nesse ponto como:

onde N é a quantidade de pontos na vizinhança do ponto, s1, s2 ,…, sN são os pontos nessa vizinhança, Z(s1), Z(s2), …, Z(sN) são os respectivos valores da função nesses pontos e os lambdas são os pesos utilizados na média ponderada.

Dependendo das hipóteses que assumirmos para o nosso modelo, teremos diferentes formas de encontrar os pesos que serão utilizados no cálculo da média ponderada. Duas das formas mais comuns são o Kriging Ordinário e o Kriging Universal.

No Kriging Ordinário, assumimos que a função é estacionária, ou seja, que a média do valor da função não varia de acordo com a região a ser analisada. Nesse caso o variograma depende apenas da diferença entre a posição dos pontos, e não da sua localização. Já no Kriging Universal, essa hipótese é considerada mais fraca, permitindo que a média possa variar de acordo com a região. Em ambos os casos, encontrar os valores para os pesos da média ponderada pode ser reduzido a encontrar a solução de um sistema linear. Por exemplo, no caso do Kriging Ordinário resolvemos o seguinte sistema:

Para ilustrar essa técnica que acabamos de descrever, vamos utilizar os dados de coletas sobre a quantidade de zinco presentes no solo nas margens do rio Mosa, que está dividido entre o território da França, Bélgica e dos Países Baixos.

Vemos no dataset que temos as coordenadas x e y onde cada amostra foi coletada, bem como a quantidade de zinco observada. Usando o Kriging Ordinário para estimar a quantidade de zinco distribuída entre as margens do rio, chegamos aos seguintes modelos (dependendo do variograma utilizado):

Vemos claramente que aproximar o variograma empírico por uma função linear não é uma boa abordagem nesse caso. Também conseguimos observar que utilizar as outras três aproximações do variograma empírico resulta em modelos bastante semelhantes, onde podemos identificar claramente três regiões com uma provável alta concentração de zinco.

Conclusão

Kriging é uma poderosa técnica para a estimação dos valores de funções dependendo de sua geolocalização. Essa técnica é amplamente utilizada em problemas de mineração e geologia, mas pode ser também uma ótima forma de se criar variáveis para utilização em modelos de machine learning. Poderíamos, por exemplo, utilizar essa técnica para estimar as rendas das pessoas a partir da região em que elas residem.

Da próxima vez que você estiver pensando em criar variáveis com dados de geolocalização, utilize Kriging!

--

--