Aprendizado de máquina: a escolha da estratégia de substituição certa para falta de dados

Você tem algumas estratégias possíveis para lidar com falta eficazmente os dados para a aprendizagem de máquina. Sua estratégia pode mudar se você tem que lidar com valores em falta no quantitativo

(valores expressos como números) ou características qualitativas. qualitativo características, embora também expresso por números, são, na realidade, referindo-se a conceitos, para que seus valores são um tanto arbitrária e você não pode significativamente ter uma média ou outros cálculos sobre eles.

Ao trabalhar com características qualitativas, o seu valor adivinhar deve sempre produzir números inteiros, com base nos números usados ​​como códigos. estratégias comuns para manuseio de dados perdidos são os seguintes:

  • Substitua os valores em falta com uma constante calculada como a média ou o valor mediano. Se o seu recurso é uma categoria, você deve fornecer um valor específico porque a numeração é arbitrária, e usando média ou mediana não faz sentido. Use esta estratégia quando os valores em falta são aleatórios.
  • Substitua os valores em falta com um valor fora da faixa de valor normal do recurso. Por exemplo, se o recurso for positiva, substituir os valores em falta com valores negativos. Esta abordagem funciona bem com algoritmos baseados em árvores de decisão e variáveis ​​qualitativas.
  • Substitua os valores em falta com 0, o que funciona bem com modelos de regressão e variáveis ​​padronizadas. Esta abordagem também é aplicável a variáveis ​​qualitativas quando eles contêm valores binários.
  • Interpolar os valores em falta quando fazem parte de uma série de valores vinculados a tempo. Esta abordagem só funciona para valores quantitativos. Por exemplo, se o seu recurso é vendas diárias, você poderia usar uma média móvel dos últimos sete dias ou escolher o valor, ao mesmo tempo da semana anterior.
  • Imputar o seu valor usando as informações de outros recursos de previsão (mas nunca usar a variável de resposta). Particularmente em R, existem bibliotecas especializadas, como missForest, RATOS, e Amelia II que pode fazer tudo para você.

Outra boa prática é criar um novo recurso binário para cada variável cujos valores reparado. A variável binária irá monitorar variações devido à substituição ou imputando com um valor positivo, e seu algoritmo de aprendizado de máquina pode descobrir quando é preciso fazer ajustes adicionais para os valores que você realmente utilizados.

Em Python, valores em falta são apenas possíveis usando a estrutura de dados do pacote ndarray NumPy. marcas Python valores com um valor especial que aparece impresso na tela como NaN (Not a Number) faltando. A estrutura de dados trama de dados do pacote de pandas oferece métodos para ambos substituindo valores ausentes e soltando variáveis.

O exemplo a seguir Python demonstra como realizar tarefas de reposição. Ela começa com a criação de um conjunto de dados de 5 observações e 3 recursos, com o nome “A”, “B”, “C”:

pandas importação como Pd

importar numpy como np

1,2 dados pd.DataFrame = ([[, np.nan], [np.nan, 2, np.nan],

[3, np.nan, np.nan], [np.nan, 3,8],

[5,3, np.nan]], colunas = [ `A`, `B`, `C`])

impressão (dados, ` n`) # imprime a dados

# Conta valores NaN para cada recurso

print (data.isnull (). sum (eixo = 0))

Video: Zeitgeist Moving Forward (2011) - HD Legendado Português

A B C

0 1 2 NaN

1 NaN 2 NaN

2 3 NaN NaN

3 NaN 3 8

4 5 3 NaN

A 2

Video: Tecnologia e Metodologia

B 1

C 4

DTYPE: int64

Porque o recurso C tem apenas um valor, você pode soltá-lo do conjunto de dados. O código, em seguida, substitui os valores em falta em função B, com um valor médio e interpola o valor em função de A porque ele exibe uma ordem progressiva.

Video: Formação de liderança

# Gotas definitivamente C do conjunto de dados

data.drop ( `C`, eixo = 1, inplace = TRUE)

# Cria um espaço reservado para valores ausentes do B

dados [ `missing_B`] = [ `dados B`]. IsNull (). astype (int)

# Preenche faltando itens em B utilizando média de B

Dados [ `B`]. fillna (dados [ `B`]. significar (), inplace = TRUE)

# Interpola A

dados [ `A`]. interpolar (método = `linear`, inplace = TRUE)

print (dados)



A B missing_B

0 1 2.0 0

Video: A falta de Organização da Sociedade Civil.flv

1 2 2.0 0

2 3 1 2,5

3 4 3.0 0

4 5 3.0 0

A saída impressa é o conjunto de dados final. Certifique-se notar que a média de B não é um valor inteiro, para que o código convertido todos os valores B para números flutuantes. Essa abordagem faz sentido se B é numérico. Se fosse uma categoria, ea numeração estavam marcando uma classe, o código deve ter enchido o recurso usando os dados de comando [ `B`]. Fillna (dados de modo [ `B`]. (). ILOC [0], inplace = TRUE), que utiliza o modo, ou seja, o primeiro valor mais frequente na série.

Em R, valores em falta apareça marcado como NA quando impresso ou resumidos. Ambas as línguas oferecem maneiras especiais para localizar e lidar com valores vazios. Depois de ter localizado-los, você tem que decidir se deseja substituir ou removê-los. Para replicar o exemplo pitão em R, você precisa instalar o pacote zoológico para a sua plataforma para criar interpolações:

install.packages (PKGS =&apos-zoológico&apos-, dependências = TRUE)

Depois de instalar o pacote de jardim zoológico, você pode criar um quadro de dados e substituir os valores ausentes usando a mesma estratégia de antes:

biblioteca (jardim zoológico)

df lt; - data.frame (A = C (1, NA, 3, NA, 5),

B = c (2,2, Na, 3,3),

C = C (NA, NA, NA, 8, NA))

print (df)

A B C

1 1 2 NA

2 ND 2 ND

3 3 NA NA

4 NA 3 8

5 5 3 NA

df lt; - subconjunto (df, seleccione = c ( `A`, `B`))

df [ `m_B`] lt; - as.numeric (is.na (df $ B))

df $ B [is.na (df $ B)] lt; - significativo (df $ B, na.rm = TRUE)

df $ A lt; - na.approx (df $ A)

print (df)

A B m_B

1 1 2.0 0

2 2 2.0 0

3 3 1 2,5

4 4 3.0 0

5 5 3.0 0

Como mostrado no exemplo, às vezes você não pode fazer muito com exemplos que têm um monte de valores ausentes em suas características. Em tais casos, se o exemplo é para formação (exemplos de teste não deve ser removido, em vez disso), retire-o do conjunto (um procedimento chamado listwise supressão) de modo que os casos incompletos não vai afetar a aprendizagem. Se em vez disso, o exemplo é parte de seu teste, você não deve removê-lo e usá-lo para obter uma avaliação de quão bem o seu algoritmo de aprendizado de máquina lida com essas situações.


Publicações relacionadas