Diferencia entre revisiones de «Creación de atributos»

De Wikipedia, la enciclopedia libre
Contenido eliminado Contenido añadido
Srr9810 (discusión · contribs.)
El contenido de esta edición está traducido del artículo de Wikipedia en inglés que se encuentra en en: Feature engineering; ver el historial para verificar su atribución.
Etiquetas: sin categorizar Edición visual
(Sin diferencias)

Revisión del 16:31 20 jul 2023

La ingeniería de características, la extracción de características o el descubrimiento de características es el proceso de utilizar el conocimiento del dominio para extraer características (rasgos, propiedades, atributos) de los datos brutos.[1]​ La motivación es utilizar estas características adicionales para mejorar la calidad de los resultados de un proceso de aprendizaje automático, en comparación con el suministro de sólo los datos brutos al proceso de aprendizaje automático.

Proceso

El proceso de ingeniería de características es:[2]

  • Lluvia de ideas o pruebas de características[3]
  • Decidir qué características crear
  • Crear características
  • Probar el impacto de las características identificadas en la tarea
  • Mejorar las características si es necesario
  • Repetir

Funciones típicas de ingeniería

La siguiente lista[4]​ ofrece algunas formas típicas de diseñar funciones útiles:

Relevancia

Las características varían en importancia.[8]​ Incluso características relativamente insignificantes pueden contribuir a un modelo. La selección de características puede reducir el número de características para evitar que un modelo se vuelva demasiado específico para el conjunto de datos de entrenamiento (sobreajuste).[9]

Explosión

La explosión de características se produce cuando el número de características identificadas crece de forma inadecuada. Las causas más comunes son:

  • Plantillas de características: aplicación de plantillas de características en lugar de codificar características nuevas.
  • Combinaciones de características: combinaciones que no pueden representarse mediante un sistema lineal.

La explosión de características puede limitarse mediante técnicas como la regularización, los métodos de kernel y la selección de características.[10]

Automatización

La automatización de la ingeniería de características es un tema de investigación que se remonta a la década de 1990.[11]​ El software de aprendizaje automático que incorpora la ingeniería de características automatizada está disponible comercialmente desde 2016.[12]​ La literatura académica relacionada puede dividirse en dos tipos:

  • El aprendizaje de árboles de decisión multirrelacional (en inglés: multi-relational decision tree learning, MRDTL) utiliza un algoritmo supervisado que es similar a un árbol de decisión.
  • Deep Feature Synthesis utiliza métodos más simples.

Aprendizaje de árboles de decisión multirrelacional (MRDTL)

MRDTL genera características en forma de consultas SQL añadiendo sucesivamente cláusulas a las consultas. [Por ejemplo, el algoritmo puede empezar con

SELECT COUNT(*) FROM ATOM t1 LEFT JOIN MOLECULE t2 ON t1.mol_id = t2.mol_id GROUP BY t1.mol_id

A continuación, la consulta puede refinarse sucesivamente añadiendo condiciones, como "WHERE t1.charge <= -0.392".

Sin embargo, la mayoría de los estudios MRDTL basan sus implementaciones en bases de datos relacionales, lo que da lugar a muchas operaciones redundantes. Estas redundancias pueden reducirse utilizando técnicas como la propagación de id de tupla.[13][14]​ La eficiencia puede aumentarse utilizando actualizaciones incrementales, que eliminan las redundancias.[15]

Implementaciones de código abierto

Existen varias bibliotecas y herramientas de código abierto que automatizan la ingeniería de características en datos relacionales y series temporales:

  • featuretools es una biblioteca de Python para transformar series temporales y datos relacionales en matrices de características para el aprendizaje automático.[16][17][18]
  • OneBM o One-Button Machine combina transformaciones de características y selección de características en datos relacionales con técnicas de selección de características.[19]

[OneBM] ayuda a los científicos de datos a reducir el tiempo de exploración de datos permitiéndoles probar y errar muchas ideas en poco tiempo. Por otro lado, permite a los no expertos, que no están familiarizados con la ciencia de datos, extraer rápidamente valor de sus datos con poco esfuerzo, tiempo y coste.[20]

  • getML community es una herramienta de código abierto para la ingeniería automatizada de características en series temporales y datos relacionales.[21][22]​ Está implementada en C/C++ con una interfaz en Python.[23]​ Se ha demostrado que es al menos 60 veces más rápida que tsflex, tsfresh, tsfel, featuretools o kats.[24]
  • tsfresh es una biblioteca de Python para la extracción de características de datos de series temporales.[25]​ Evalúa la calidad de las características mediante pruebas de hipótesis.[26]
  • tsflex es una biblioteca Python de código abierto para la extracción de características a partir de datos de series temporales.[27]​ A pesar de estar escrita al 100% en Python, ha demostrado ser más rápida y eficiente en memoria que tsfresh, seglearn o tsfel.[28]
  • seglearn es una extensión para datos multivariantes y secuenciales de series temporales de la biblioteca scikit-learn de Python.[29]
  • tsfel es un paquete de Python para la extracción de características de datos de series temporales.[30]
  • kats es un conjunto de herramientas de Python para analizar datos de series temporales.[31]

Síntesis profunda de características

El algoritmo de síntesis profunda de rasgos (en inglés: deep feature synthesis, DFS) venció a 615 de 906 equipos humanos en una competición.[32][33]

Almacenes de características

El almacén de características es donde se almacenan y organizan las características con el propósito explícito de que se utilicen para entrenar modelos (por parte de los científicos de datos) o para realizar predicciones (por parte de las aplicaciones que tienen un modelo entrenado). Se trata de una ubicación central en la que se pueden crear o actualizar grupos de características creados a partir de múltiples fuentes de datos diferentes, o crear y actualizar nuevos conjuntos de datos a partir de esos grupos de características para entrenar modelos o para su uso en aplicaciones que no desean calcular las características, sino simplemente recuperarlas cuando las necesitan para hacer predicciones.[34]

Un almacén de características incluye la capacidad de almacenar el código utilizado para generar características, aplicar el código a los datos sin procesar y servir esas características a los modelos que lo soliciten. Entre las funciones útiles se incluyen el control de versiones y las políticas que rigen las circunstancias en las que se pueden utilizar las funciones.[35]

Los almacenes de características pueden ser herramientas de software independientes o estar integrados en plataformas de aprendizaje automático.

Alternativas

La ingeniería de características puede ser un proceso largo y propenso a errores, ya que requiere conocimientos especializados y a menudo implica ensayo y error.[36][37]​ Los algoritmos de aprendizaje profundo pueden utilizarse para procesar un gran conjunto de datos en bruto sin tener que recurrir a la ingeniería de características.[38]​ Sin embargo, es importante tener en cuenta que los algoritmos de aprendizaje profundo siguen requiriendo un preprocesamiento y una limpieza minuciosos de los datos de entrada.[39]​ Además, elegir la arquitectura, los hiperparámetros y el algoritmo de optimización adecuados para una red neuronal profunda puede ser un proceso difícil e iterativo.[40]

Véase también

Referencias

  1. «Machine Learning and AI via Brain simulations». Stanford University (en inglés). Consultado el 1 de agosto de 2019. 
  2. «Big Data: Week 3 Video 3 - Feature Engineering». youtube.com (en inglés). 
  3. Jalal AA (1 de enero de 2018). «Big data and intelligent software systems». International Journal of Knowledge-based and Intelligent Engineering Systems (en inglés) 22 (3): 177-193. doi:10.3233/KES-180383. 
  4. «Creating Features». kaggle.com (en inglés). Consultado el 30 de septiembre de 2021. 
  5. «Category Encoders — Category Encoders 2.2.2 documentation». contrib.scikit-learn.org (en inglés). Consultado el 1 de octubre de 2021. 
  6. Dash T, Chitlangia S, Ahuja A, Srinivasan A (Enero de 2022). «A review of some techniques for inclusion of domain-knowledge into deep neural networks». Scientific Reports (en inglés) 12 (1): 1040. Bibcode:2022NatSR..12.1040D. PMC 8776800. PMID 35058487. doi:10.1038/s41598-021-04590-0. 
  7. MacQueron, C. (2021). SOLID-LIQUID MIXING IN STIRRED TANKS : Modeling, Validation, Design Optimization and Suspension Quality Prediction. doi:10.13140/RG.2.2.11074.84164/1. 
  8. «Feature Engineering» (en inglés). 22 de abril de 2010. Consultado el 12 de noviembre de 2015. 
  9. Alexandre Bouchard-Côté (1 de octubre de 2009). «Feature engineering and selection» (en inglés). Consultado el 12 de noviembre de 2015. 
  10. «Feature engineering in Machine Learning». Archivado desde el original el 4 de marzo de 2016. Consultado el 12 de noviembre de 2015. 
  11. Knobbe AJ, Siebes A, Van Der Wallen D (1999). «Multi-relational Decision Tree Induction». Principles of Data Mining and Knowledge Discovery. Lecture Notes in Computer Science (en inglés) 1704. pp. 378-383. ISBN 978-3-540-66490-1. doi:10.1007/978-3-540-48247-5_46. 
  12. «Its all about the features». Reality AI Blog (en inglés). Septiembre de 2017. 
  13. Yin X, Han J, Yang J, Yu PS (2004). «CrossMine: Efficient Classification Across Multiple Database Relations». Proceedings. 20th International Conference on Data Engineering. Proceedings of the 20th International Conference on Data Engineering (en inglés). pp. 399-410. ISBN 0-7695-2065-0. doi:10.1109/ICDE.2004.1320014. 
  14. Frank R, Moser F, Ester M (2007). «A Method for Multi-relational Classification Using Single and Multi-feature Aggregation Functions». Knowledge Discovery in Databases: PKDD 2007. Lecture Notes in Computer Science (en em) 4702. pp. 430-437. ISBN 978-3-540-74975-2. doi:10.1007/978-3-540-74976-9_43. 
  15. «How automated feature engineering works - The most efficient feature engineering solution for relational data and time series». Consultado el 21 de noviembre de 2019. 
  16. «What is Featuretools?» (en inglés). Consultado el 7 de septiembre de 2022. 
  17. «Featuretools - An open source python framework for automated feature engineering» (en inglés). Consultado el 7 de septiembre de 2022. 
  18. «github: alteryx/featuretools». GitHub (en inglés). Consultado el 7 de septiembre de 2022. 
  19. Hoang; Sinn; Bei; Mai; Alkan (2017-06-01). «One button machine for automating feature engineering in relational databases» (en inglés). arXiv:1706.00327  [cs.DB]. 
  20. Thanh Lam; Thiebaut; Sinn; Chen; Mai; Alkan (2017-06-01). «One button machine for automating feature engineering in relational databases» (en inglés). arXiv:1706.00327  [cs.DB]. 
  21. «getML documentation» (en inglés). Consultado el 7 de septiembre de 2022. 
  22. «github: getml/getml-community». GitHub (en inglés). Consultado el 7 de septiembre de 2022. 
  23. «github: getml/getml-community». GitHub (en inglés). Consultado el 7 de septiembre de 2022. 
  24. «github: getml/getml-community». GitHub. Consultado el 7 de septiembre de 2022. 
  25. «tsfresh documentation» (en inglés). Consultado el 7 de septiembre de 2022. 
  26. «Time Series FeatuRe Extraction on basis of Scalable Hypothesis tests (tsfresh – A Python package)» (en inglés). Consultado el 7 de septiembre de 2022. 
  27. «predict-idlab/tsflex» (en inglés). Consultado el 7 de septiembre de 2022. 
  28. «tsflex: Flexible time series processing & feature extraction» (en inglés). Consultado el 7 de septiembre de 2022. 
  29. «seglearn user guide» (en inglés). Consultado el 7 de septiembre de 2022. 
  30. «Welcome to TSFEL documentation!» (en inglés). Consultado el 7 de septiembre de 2022. 
  31. «github: facebookresearch/Kats». GitHub. Consultado el 7 de septiembre de 2022. 
  32. «Automating big-data analysis» (en inglés). 
  33. Kanter, James Max; Veeramachaneni, Kalyan (2015). «Deep Feature Synthesis: Towards Automating Data Science Endeavors». 2015 IEEE International Conference on Data Science and Advanced Analytics (DSAA) (en inglés). IEEE International Conference on Data Science and Advanced Analytics. pp. 1-10. ISBN 978-1-4673-8272-4. doi:10.1109/DSAA.2015.7344858. 
  34. «What is a feature store» (en inglés). Consultado el 19 de abril de 2022. 
  35. «An Introduction to Feature Stores» (en inglés). Consultado el 15 de abril de 2021. 
  36. «Feature Engineering in Machine Learning». Engineering Education (EngEd) Program | Section (en inglés estadounidense). Consultado el 21 de marzo de 2023. 
  37. explorium_admin (25 de octubre de 2021). «5 Reasons Why Feature Engineering is Challenging». Explorium (en inglés). Consultado el 21 de marzo de 2023. 
  38. Spiegelhalter, D. J. (2019). The art of statistics : learning from data (en inglés). [London] UK. ISBN 0-241-39863-0. OCLC 1064776283. 
  39. Sarker IH (Noviembre de 2021). «Deep Learning: A Comprehensive Overview on Techniques, Taxonomy, Applications and Research Directions». SN Computer Science (en inglés) 2 (6): 420. PMC 8372231. PMID 34426802. doi:10.1007/s42979-021-00815-1. 
  40. Bengio, Yoshua. «Practical Recommendations for Gradient-Based Training of Deep Architectures». Lecture Notes in Computer Science (en inglés) (Berlin, Heidelberg: Springer Berlin Heidelberg): 437-478. ISBN 978-3-642-35288-1. Consultado el 21 de marzo de 2023. 

Lectura adicional

  • Boehmke B, Greenwell B (2019). «Feature & Target Engineering». Hands-On Machine Learning with R (en inglés). Chapman & Hall. pp. 41-75. ISBN 978-1-138-49568-5. 
  • Zheng A, Casari A (2018). Feature Engineering for Machine Learning: Principles and Techniques for Data Scientists (en inglés). O'Reilly. ISBN 978-1-4919-5324-2. 
  • Zumel N, Mount (2020). «Data Engineering and Data Shaping». Practical Data Science with R (2 edición). Manning. pp. 113-160. ISBN 978-1-61729-587-4.