Recentemente, aprendi que uma das maneiras de encontrar melhores soluções para problemas de ML é através da criação de recursos. Pode-se fazer isso, por exemplo, somando dois recursos.
Por exemplo, possuímos dois recursos "ataque" e "defesa" de algum tipo de herói. Em seguida, criamos um recurso adicional chamado "total", que é uma soma de "ataque" e "defesa". Agora, o que me parece estranho é que mesmo "ataques" e "defesas" difíceis estão quase perfeitamente correlacionados com "total", ainda obtemos informações úteis.
Qual é a matemática por trás disso? Ou eu estou raciocinando errado?
Além disso, isso não é um problema, para classificadores como kNN, que "total" será sempre maior que "ataque" ou "defesa"? Assim, mesmo após a padronização, teremos características que contêm valores de diferentes faixas?
fonte
Respostas:
Você questiona o título e o conteúdo parece incompatível comigo. Se você estiver usando o modelo linear, adicione um recurso total, além de ataque e defesa que pioram as coisas.
Primeiro, eu responderia por que o trabalho de engenharia de recursos em geral.
Uma imagem vale mais que mil palavras. Esta figura pode fornecer algumas informações sobre a engenharia de recursos e por que ela funciona ( fonte da imagem ):
Os dados nas coordenadas cartesianas são mais complicados e é relativamente difícil escrever uma regra / construir um modelo para classificar dois tipos.
Os dados nas coordenadas polares são muito fáceis: podemos escrever uma regra simples em para classificar dois tipos.r
Isso nos diz que a representação dos dados importa muito. Em determinado espaço, é muito mais fácil executar determinadas tarefas do que outros espaços.
Aqui eu respondo a pergunta mencionada no seu exemplo (total em ataque e defesa)
De fato, a engenharia de recursos mencionada nesta soma de exemplo de ataque e defesa não funcionará bem para muitos modelos, como o modelo linear, e causará alguns problemas. Consulte Multicolinearidade . Por outro lado, essa engenharia de recursos pode funcionar em outros modelos, como árvore de decisão / floresta aleatória. Consulte a resposta de @ Imran para obter detalhes.
Portanto, a resposta é que, dependendo do modelo usado, alguma engenharia de recursos ajudará em alguns modelos, mas não em outros modelos.
fonte
O tipo de modelo que estamos usando pode não ser muito eficiente para aprender certas combinações de recursos existentes.
a
d
Como as árvores de decisão só podem se dividir ao longo de eixos de recursos individuais, nosso modelo acabará tentando construir uma escada para ajustar uma linha, que será mais ou menos assim:
Como você pode ver, isso não generaliza perfeitamente para novos dados. Podemos ter círculos acima da verdadeira linha de decisão que estão sob nosso limite de decisão e vice-versa para cruzamentos.
No entanto, se adicionarmos
a+d
como um recurso, o problema se tornará trivial para uma árvore de decisão. Ele pode ignorar o indivíduoa
e osd
recursos e resolver o problema com um únicoa+d<0
tronco de decisão.Em resumo, certos recursos adicionais podem ajudar, dependendo do tipo de modelo que você está usando, e você deve ter cuidado ao considerar os dados e o modelo ao projetar os recursos.
fonte
a
ed
bastasse, a adiçãoa+d
como um recurso não faria diferença.total
total
attack
defense
attack
defense
total
attack
total
defense
Se você deseja padronizar seus preditores, deve fazê-lo depois que todos forem construídos.
fonte
[attack, defense, total]
é, naturalmente, a classificação 2. Eu poderia imaginar que algo como um modelo linear penalizado poderia fazer a diferença, mas isso é baseado na intuição e não em trabalhar completamente com ela. Você pode explicar por que, seattack
edefense
não está fortemente correlacionadototal
(o que acontece quandoattack
edefense
está fortemente correlacionado negativamente), por quetotal
pode ser útil?total
não precisa estar fortemente correlacionado comattack
oudefense
, mas você nunca usaria dois preditores e sua soma no mesmo modelo, devido ao linear dependência, implica uma forte correlação entre cerca de dois dos três.Para dar uma resposta geral, a engenharia de recursos, na maioria dos casos, consiste em extrair recursos significativos dos seus dados; portanto, se você fornecer mais informações ao seu modelo, obviamente ele deverá se comportar melhor. Digamos que seus dados consistam em endereços de email no formato '[email protected]'. Se você as usasse como estão em seu modelo, cada pessoa seria caracterizada por um e-mail exclusivo; portanto, isso não nos diria muito. Nos diria apenas que um e-mail possivelmente pertence a uma pessoa diferente e outro. Com a engenharia de recursos, a partir desses endereços, você pode extrair informações sobre possível sexo (nome), origem familiar e etnia (sobrenome), nacionalidade (domínio) e muito mais - fornece praticamente informações, não é?
fonte
O que você está tentando realizar com o total de "recursos" ? Se você está apenas comparando heróis, ataque e defesa podem ser mais úteis. Se você achar que o tipo de construção (como ofensivamente orientado versus defensivo) é útil, talvez ataque / defesa seja mais útil. Ou talvez o MyAttack - YourDefense seja mais útil.
Realmente depende do seu objetivo e tudo se resume a você injetando conhecimentos adicionais no problema, para que você possa obter melhores respostas. Você pode ter ouvido pessoas analisando log e ao quadrado e proporções e todos os tipos de maneiras de criar recursos, mas a conclusão é que "útil" depende da tarefa em questão e envolve transformar os dados que você possui em um domínio em que as decisões são tomadas. mais simples.
fonte