As 6 principais técnicas usadas na engenharia de recursos [aprendizado de máquina]
Publicados: 2021-03-12Índice
Introdução
A engenharia de recursos é um dos aspectos mais importantes de qualquer projeto de ciência de dados. A engenharia de recursos refere-se às técnicas usadas para extrair e refinar recursos dos dados brutos. Técnicas de engenharia de recursos são usadas para criar dados de entrada adequados para o modelo e melhorar o desempenho do modelo.
Os modelos são treinados e construídos com base nos recursos que derivamos dos dados brutos para fornecer a saída necessária. Pode acontecer que os dados que temos não sejam bons o suficiente para que o modelo aprenda algo com eles. Se formos capazes de derivar os recursos que encontram a solução para nosso problema subjacente, isso se tornará uma boa representação dos dados. Melhor é a representação dos dados, melhor será o ajuste do modelo e melhores resultados serão exibidos pelo modelo.
O fluxo de trabalho de qualquer projeto de ciência de dados é um processo iterativo e não um processo único. Na maioria dos projetos de ciência de dados, um modelo base é criado depois de criar e refinar os recursos dos dados brutos. Ao obter os resultados do modelo base, alguns recursos existentes podem ser ajustados e alguns novos recursos também são derivados dos dados para otimizar os resultados do modelo.
Engenharia de recursos
As técnicas usadas no processo de engenharia de recursos podem fornecer os resultados da mesma maneira para todos os algoritmos e conjuntos de dados. Algumas das técnicas comuns usadas no processo de engenharia de recursos são as seguintes:
1. Transformação de valor
Os valores das características podem ser transformados em alguma outra métrica usando parâmetros como a função logarítmica, função raiz, função exponencial, etc. Existem algumas limitações para essas funções e não podem ser usadas para todos os tipos de conjuntos de dados. Por exemplo, a transformação raiz ou a transformação logarítmica não pode ser aplicada aos recursos que contêm valores negativos.
Uma das funções mais utilizadas é a função logarítmica. A função logarítmica pode ajudar a reduzir a assimetria dos dados que podem ser desviados para uma extremidade. A transformação de log tende a normalizar os dados o que reduz o efeito dos outliers no desempenho do modelo.
Também ajuda a reduzir a magnitude dos valores em um recurso. Isso é útil quando estamos usando alguns algoritmos que consideram os recursos com maiores valores como de maior importância do que os outros.
2. Imputação de dados
A imputação de dados refere-se ao preenchimento dos valores ausentes em um conjunto de dados com algum valor estatístico. Essa técnica é importante, pois alguns algoritmos não funcionam nos valores ausentes, o que nos restringe a usar outros algoritmos ou imputa esses valores ausentes. É preferível usá-lo se a porcentagem de valores ausentes em um recurso for menor (em torno de 5 a 10%), caso contrário levaria a mais distorção na distribuição dos dados. Existem diferentes métodos para fazê-lo para recursos numéricos e categóricos.
Podemos imputar os valores ausentes em características numéricas com valores arbitrários dentro de um intervalo especificado ou com medidas estatísticas como média, mediana, etc. . Para recursos categóricos, podemos imputar os valores ausentes com uma categoria adicional que está faltando no conjunto de dados ou simplesmente imputá-los como ausentes se a categoria for desconhecida.
O primeiro requer um bom senso de conhecimento de domínio para encontrar a categoria correta, enquanto o último é mais uma alternativa para generalização. Também podemos usar o modo para imputar os recursos categóricos. A imputação dos dados com o modo também pode levar à representação excessiva do rótulo mais frequente se os valores ausentes forem muito altos em número.
Participe dos cursos de Inteligência Artificial on-line das principais universidades do mundo - Mestrados, Programas de Pós-Graduação Executiva e Programa de Certificado Avançado em ML e IA para acelerar sua carreira.
3. Codificação Categórica
Um dos requisitos em muitos algoritmos é que os dados de entrada sejam numéricos por natureza. Isso acaba sendo uma restrição para o uso de recursos categóricos em tais algoritmos. Para representar os recursos categóricos como números, precisamos realizar a codificação categórica. Alguns dos métodos para converter os recursos categóricos em números são os seguintes:
1. Codificação One-Hot: – A codificação One-Hot cria um novo recurso que assume um valor (0 ou 1) para cada rótulo em um recurso categórico. Esse novo recurso indica se esse rótulo da categoria está presente para cada observação. Por exemplo, suponha que haja 4 rótulos em um recurso categórico e, ao aplicar a codificação one-hot, ele criaria 4 recursos booleanos.
A mesma quantidade de informação também pode ser extraída com 3 características como se todas as características contivessem 0, então o valor da característica categórica seria o 4º rótulo. A aplicação desse método aumenta o espaço de recursos se houver muitos recursos categóricos com um número alto de rótulos no conjunto de dados.
2. Codificação de frequência: – Este método calcula a contagem ou a porcentagem de cada rótulo no recurso categórico e o mapeia em relação ao mesmo rótulo. Esse método não estende o espaço de recursos do conjunto de dados. Uma desvantagem desse método é que, se os dois ou mais rótulos tiverem a mesma contagem no conjunto de dados, ele daria ao mapa o mesmo número para todos os rótulos. Isso levaria à perda de informações cruciais.
3. Codificação ordinal: – Também conhecido como codificação de rótulo, este método mapeia os valores distintos de um recurso categórico com um número que varia de 0 a n-1, sendo n o número distinto de rótulos no recurso. Esse método não amplia o espaço de recursos do conjunto de dados. Mas cria um relacionamento ordinal dentro dos rótulos em um recurso.
4. Tratamento de valores discrepantes
Outliers são os pontos de dados cujos valores são muito diferentes do resto do lote. Para lidar com esses valores discrepantes, precisamos detectá-los primeiro. Podemos detectá-los usando visualizações como box-plot e scatter-plot em Python, ou podemos usar o intervalo interquartil (IQR). O intervalo interquartil é a diferença entre o primeiro trimestre (percentil 25) e o terceiro trimestre (percentil 75).
Os valores que não se enquadram na faixa de (Q1 – 1,5*IQR) e (Q3 + 1,5*IQR) são denominados como outliers. Após detectar os outliers, podemos tratá-los removendo-os do conjunto de dados, aplicando alguma transformação, tratando-os como valores ausentes para imputá-los usando algum método, etc.
5. Dimensionamento de recursos
O dimensionamento de recursos é usado para alterar os valores dos recursos e trazê-los dentro de um intervalo. É importante aplicar este processo se estivermos usando algoritmos como SVM, regressão linear, KNN, etc, que são sensíveis à magnitude dos valores. Para dimensionar os recursos, podemos realizar padronização, normalização, dimensionamento mínimo-máximo. A normalização redimensiona os valores de um intervalo de recurso de -1 a 1. É a razão da subtração de cada observação e a média para a subtração do valor máximo e mínimo desse recurso. ou seja, [X – média(X)]/[max(X) – min(X)].
Na escala min-max, ele usa o valor mínimo do recurso em vez da média. Este método é muito sensível aos outliers, pois considera apenas os valores finais do recurso. A padronização redimensiona os valores de um recurso de 0 a 1. Ela não normaliza a distribuição dos dados, enquanto o método anterior o fará.
6. Manipulação de variáveis de data e hora
Encontramos muitas variáveis que indicam a data e hora em diferentes formatos. Podemos derivar mais características da data como o mês, dia da semana/mês, ano, fim de semana ou não, a diferença entre as datas, etc. Isso pode nos permitir extrair informações mais perspicazes do conjunto de dados. Das características de tempo, também podemos extrair informações como horas, minutos, segundos, etc.
Uma coisa que a maioria das pessoas perde é que todas as variáveis de data e hora são características cíclicas. Por exemplo, suponha que precisamos verificar qual dia entre quarta (3) e sábado (7) está mais próximo de domingo (sendo 1). Agora sabemos que o sábado está mais próximo, mas em termos numéricos, será uma quarta-feira, pois a distância entre 3 e 1 é menor que a de 7 e 1. O mesmo pode ser aplicado quando o formato da hora estiver no formato de 24 horas.
Para resolver esse problema, podemos expressar essas variáveis como uma representação da função sin e cos. Para o recurso 'minuto', podemos aplicar a função sin e cos usando NumPy para representá-lo na natureza cíclica da seguinte forma:
minute_feature_sin = np.sin(df['minute_feature']*(2*π/60))
minute_feature_cos = np.cos(df['minute_feature']*(2*π/60))
(Nota: Dividindo por 60 porque em uma hora tem 60 minutos. Se quiser fazer isso por meses, divida por 12 e assim por diante)
Ao plotar esses recursos em um gráfico de dispersão, você notará que esses recursos exibem uma relação cíclica entre eles.
Leia também: Ideias e tópicos de projetos de aprendizado de máquina
Conclusão
O artigo se concentrou na importância da engenharia de recursos, citando algumas técnicas comuns usadas no processo de engenharia de recursos. Depende do algoritmo e dos dados disponíveis para decidir quais técnicas de todas as listadas acima forneceriam melhores insights.
Mas isso é realmente difícil e não é seguro assumir, pois os conjuntos de dados podem ser diferentes e os algoritmos usados para os dados também podem variar. A melhor abordagem é seguir uma abordagem incremental e acompanhar os modelos que foram construídos junto com seus resultados, em vez de executar a engenharia de recursos de forma imprudente.
Se você estiver interessado em aprender mais sobre aprendizado de máquina, confira o Programa PG Executivo do IIIT-B e do upGrad em Machine Learning e IA , projetado para profissionais que trabalham e oferece mais de 450 horas de treinamento rigoroso, mais de 30 estudos de caso e atribuições, IIIT -B Alumni status, mais de 5 projetos práticos práticos e assistência de trabalho com as principais empresas.
Quais são os contras de usar a técnica de imputação de dados baseada em mediana média?
Ao utilizar a imputação média, as ligações e correlações entre as variáveis não são preservadas. Mas imputar a média mantém a média dos dados observados. Como resultado, mesmo que todos os dados estivessem faltando aleatoriamente, a estimativa média permaneceria imparcial. A variância das variáveis imputadas é reduzida usando imputação média. A imputação média reduz os erros padrão, tornando a maioria dos testes de hipóteses e cálculos de intervalo de confiança imprecisos. Assim, os erros do tipo I são cometidos inconscientemente.
Por que a extração de recursos é necessária?
A extração de características é usada para localizar a menor e mais informativa coleção de características (padrões distintos) para melhorar a eficácia do classificador. A extração de recursos ajuda na redução de dados desnecessários em uma coleta de dados para que a ênfase seja colocada apenas nas informações e recursos relevantes. Por fim, reduzir os dados torna mais fácil para a máquina desenvolver o modelo com menos esforço, além de acelerar os processos de aprendizado e generalização no processo de aprendizado de máquina. A aplicação mais importante da engenharia de características é na classificação de sinais biomédicos, onde a extração de características é um elemento importante, pois se as características não forem escolhidas com cuidado, o desempenho da classificação pode ser prejudicado.
Existem alguns contras de usar a técnica de extração de recursos?
A extração de recursos surgiu com alguns novos recursos que não são capazes de serem lidos ou compreendidos por pessoas comuns. A escalabilidade é outro desafio enfrentado durante a extração de recursos. Se os conjuntos de dados forem grandes, algumas das técnicas de extração de recursos não poderão ser executadas. Abordagens complexas de extração de recursos não lineares, em particular, seriam impossíveis de implementar. A maioria das técnicas depende de alguma forma de aproximação para lidar com o problema de seleção de características de forma eficiente, que em certas situações é incapaz de resolver o problema preciso.