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
Conteúdo
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.