Como lidar com recursos que nem sempre estão disponíveis?

8

Eu tenho um recurso no meu vetor de recurso que nem sempre está disponível, respectivamente, às vezes (para alguns exemplos), não faz sentido usá-lo. Alimento um sklearn MLPClassifier com esse vetor de recurso. A rede neural aprende por si só quando o recurso faz sentido usar para sua decisão ou eu tenho que adicionar uma bandeira no vetor de recurso que diz, por exemplo, "1" se faz sentido ou "0" se não faz sentido .

jochen6677
fonte

Respostas:

1

Se o recurso não fizer sentido em um subconjunto das amostras, isso não significa que este é (ou deveria ser) um conjunto de dados separado, que precisa de um segundo modelo? Essa é uma abordagem em que penso.

O segundo seria trabalhar com os dados (recurso) em si. Provavelmente é melhor usar valor neutro.

  • Em caso de valor numérico:
    • tente usar um valor médio ou mediano, calculado em todas as entradas
    • tente usar um valor extremo, por exemplo, -1, se o seu recurso tiver apenas valores positivos. Isso deve indicar que o recurso está ausente e a rede deve poder lidar com isso.
  • No caso de valor textual, por exemplo, incorporação de palavras, substitua o valor por um espaço reservado como N/Aesse que não possui incorporação
stan0
fonte
0

Se os recursos com os quais você treina não são os mesmos que você deseja prever, você tem algumas opções:

  1. Treine novamente o modelo para que o recurso em questão não seja usado, pois não estará no seu conjunto de dados de previsão.
  2. Atribuir algum valor para esse recurso se ele estiver ausente no seu conjunto de dados. No seu exemplo, você pode supor que seja "0" se estiver faltando, mas terá que decidir isso com base no conjunto de dados e na sua intuição.

Se os comprimentos do vetor de recurso do seu conjunto de treinamento e do conjunto de previsão forem diferentes, você encontrará erros no conjunto de previsão.

Wes
fonte
0

Dependendo do problema, você pode resolvê-lo excluindo esses valores e atribuindo-os uma estimativa, se possível. Outra estratégia é dimensionar recursos em uma escala -1,1 e estimular esses valores com, por exemplo, -3. Em seguida, use alguns métodos robustos que ignoram completamente os "outliers". Espero que isto ajude.

Nemanja Boskovic
fonte
0

Você pode usar codificação de variável dummy se os casos. Você também pode aprimorar essa ideia para o seu problema. Ilustrarei o procedimento para uma regressão linear simples.

Imagine que queremos prever a renda de uma pessoa yi usando anos de educação x1ipalestras ensinadas x2itrabalhos publicados x3i e posição acadêmica atual x4i. A amostra contém pessoas acadêmicas e não acadêmicas.

1. Alternativa : atribua valores vazios naturais. Por exemplo, se estamos procurando um filho, não faz sentido incluir a renda. Mas a renda tem um valor nulo natural que é0. Você pode verificar se suas variáveis ​​também permitem esse valor nulo.

2. Alternativa : você pode dividir o conjunto de dados em dois grupos (acadêmico e não acadêmico). E execute dois modelos separados.

3. Alternativa : introduz uma nova variável dummyis_academic x5i essa variável é 0 se a pessoa i não é acadêmico e o valor é 1 se a pessoa ié acadêmico. Então seu modelo de regressão seria semelhante

yi=w0+w~0x5i+w1x1i+w~1x5ix1i+w~2x5ix2i+w~3x5ix3i++w~4x5ix4i+εi

Portanto, nosso conjunto de dados não é x1 1Eu,x2Eu,x3Eu,x4Eu,yEu mas x1 1Eu,x5Eu,x5Eux1 1Eu,x5Eux2Eu,x5Eux3Eu,x5Eux4Eu,yEuAgora o conjunto de dados está completo, mas o modelo não está mais usando a função base linear.

Da mesma forma, você pode pensar no seu conjunto de dados e introduzir variáveis ​​fictícias quando perceber que alguns recursos estão presentes / são úteis apenas para uma subamostra no seu conjunto de dados.

MachineLearner
fonte