Creación de atributos
La creación de atributos, ingeniería de atributos, extracción de atributos o descubrimiento de atributos es el proceso de utilizar el conocimiento del dominio para extraer atributos (rasgos, propiedades, atributos) de los datos brutos.[1] La motivación es utilizar estos atributos 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
[editar]El proceso de ingeniería de atributos es:[2]
- Lluvia de ideas o pruebas de atributos[3]
- Decidir qué atributos crear
- Crear atributos
- Probar el impacto de los atributos identificados en la tarea
- Mejorar los atributos si es necesario
- Repetir
Funciones típicas de ingeniería
[editar]La siguiente lista[4] ofrece algunas formas típicas de diseñar funciones útiles:
- Transformaciones numéricas (como tomar fracciones o escalar)
- Codificador de categorías, como codificador de un punto u objetivo (para datos categóricos).[5]
- Agrupación
- Agrupación de valores agregados
- Análisis de componentes principales (para datos numéricos)
- Construcción de atributos: construcción de nuevos parámetros "físicos", basados en el conocimiento, relevantes para el problema.[6] Por ejemplo, en física, construcción de números adimensionales como el número de Reynolds en dinámica de fluidos, el número de Nusselt en transferencia de calor, el número de Arquímedes en sedimentación, construcción de primeras aproximaciones de la solución como las soluciones analíticas de resistencia de materiales en mecánica, entre otros.[7]
Relevancia
[editar]Los atributos varían en importancia.[8] Incluso atributos relativamente insignificantes pueden contribuir a un modelo. La selección de atributos puede reducir el número de atributos para evitar que un modelo se vuelva demasiado específico para el conjunto de datos de formación (sobreajuste).[9]
Explosión
[editar]La explosión de atributos se produce cuando el número de atributos identificados crece de forma inadecuada. Las causas más comunes son:
- Plantillas de atributos : aplicación de plantillas de atributos en lugar de codificar atributos nuevos.
- Combinaciones de atributos: combinaciones que no pueden representarse mediante un sistema lineal.
La explosión de atributos puede limitarse mediante técnicas como la regularización, los métodos de kernel y la selección de atributos.[10]
Automatización
[editar]La automatización de la ingeniería de atributos 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 atributos 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)
[editar]MRDTL genera atributos 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
[editar]Existen varias bibliotecas y herramientas de código abierto que automatizan la ingeniería de atributos en datos relacionales y series temporales:
- featuretools es una biblioteca de Python para transformar series temporales y datos relacionales en matrices de atributos para el aprendizaje automático.[16][17][18]
- OneBM o One-Button Machine combina transformaciones de atributos y selección de atributos en datos relacionales con técnicas de selección de atributos.[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 atributos 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 atributos de datos de series temporales.[25] Evalúa la calidad de las atributos mediante pruebas de hipótesis.[26]
- tsflex es una biblioteca Python de código abierto para la extracción de atributos 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 atributos 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 atributos
[editar]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 atributos
[editar]El almacén de atributos es donde se almacenan y organizan los atributos con el propósito explícito de que se utilicen para formar modelos (por parte de los científicos de datos) o para realizar predicciones (por parte de las aplicaciones que tienen un modelo formado). Se trata de una ubicación central en la que se pueden crear o actualizar grupos de atributos creados a partir de múltiples fuentes de datos diferentes, o crear y actualizar nuevos conjuntos de datos a partir de esos grupos de atributos para formar modelos o para su uso en aplicaciones que no desean calcular los atributos, sino simplemente recuperarlos cuando las necesitan para hacer predicciones.[34]
Un almacén de atributos incluye la capacidad de almacenar el código utilizado para generar atributos, aplicar el código a los datos sin procesar y servir esos atributos 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 atributos pueden ser herramientas de software independientes o estar integrados en plataformas de aprendizaje automático.
Alternativas
[editar]La ingeniería de atributos 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 creación de atributos.[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
[editar]- Aprendizaje de atributos
- Variables dependientes e independientes
- Variable instrumental
- Transformación de datos
Referencias
[editar]- ↑ «Machine Learning and AI via Brain simulations». Stanford University (en inglés). Consultado el 1 de agosto de 2019.
- ↑ «Big Data: Week 3 Video 3 - Feature Engineering». youtube.com (en inglés).
- ↑ 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.
- ↑ «Creating Features». kaggle.com (en inglés). Consultado el 30 de septiembre de 2021.
- ↑ «Category Encoders — Category Encoders 2.2.2 documentation». contrib.scikit-learn.org (en inglés). Consultado el 1 de octubre de 2021.
- ↑ 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.
- ↑ 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.
- ↑ «Feature Engineering» (en inglés). 22 de abril de 2010. Consultado el 12 de noviembre de 2015.
- ↑ Alexandre Bouchard-Côté (1 de octubre de 2009). «Feature engineering and selection» (en inglés). Consultado el 12 de noviembre de 2015.
- ↑ «Feature engineering in Machine Learning». Archivado desde el original el 4 de marzo de 2016. Consultado el 12 de noviembre de 2015.
- ↑ 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.
- ↑ «Its all about the features». Reality AI Blog (en inglés). Septiembre de 2017.
- ↑ 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.
- ↑ 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.
- ↑ «How automated feature engineering works - The most efficient feature engineering solution for relational data and time series». Consultado el 21 de noviembre de 2019.
- ↑ «What is Featuretools?» (en inglés). Consultado el 7 de septiembre de 2022.
- ↑ «Featuretools - An open source python framework for automated feature engineering» (en inglés). Consultado el 7 de septiembre de 2022.
- ↑ «github: alteryx/featuretools». GitHub (en inglés). Consultado el 7 de septiembre de 2022.
- ↑ Hoang; Sinn; Bei; Mai; Alkan (2017-06-01). «One button machine for automating feature engineering in relational databases» (en inglés). .
- ↑ Thanh Lam; Thiebaut; Sinn; Chen; Mai; Alkan (2017-06-01). «One button machine for automating feature engineering in relational databases» (en inglés). .
- ↑ «getML documentation» (en inglés). Consultado el 7 de septiembre de 2022.
- ↑ «github: getml/getml-community». GitHub (en inglés). Consultado el 7 de septiembre de 2022.
- ↑ «github: getml/getml-community». GitHub (en inglés). Consultado el 7 de septiembre de 2022.
- ↑ «github: getml/getml-community». GitHub. Consultado el 7 de septiembre de 2022.
- ↑ «tsfresh documentation» (en inglés). Consultado el 7 de septiembre de 2022.
- ↑ «Time Series FeatuRe Extraction on basis of Scalable Hypothesis tests (tsfresh – A Python package)» (en inglés). Consultado el 7 de septiembre de 2022.
- ↑ «predict-idlab/tsflex» (en inglés). Consultado el 7 de septiembre de 2022.
- ↑ «tsflex: Flexible time series processing & feature extraction» (en inglés). Consultado el 7 de septiembre de 2022.
- ↑ «seglearn user guide» (en inglés). Consultado el 7 de septiembre de 2022.
- ↑ «Welcome to TSFEL documentation!» (en inglés). Consultado el 7 de septiembre de 2022.
- ↑ «github: facebookresearch/Kats». GitHub. Consultado el 7 de septiembre de 2022.
- ↑ «Automating big-data analysis» (en inglés).
- ↑ 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.
- ↑ «What is a feature store» (en inglés). Consultado el 19 de abril de 2022.
- ↑ «An Introduction to Feature Stores» (en inglés). Consultado el 15 de abril de 2021.
- ↑ «Feature Engineering in Machine Learning». Engineering Education (EngEd) Program | Section (en inglés estadounidense). Consultado el 21 de marzo de 2023.
- ↑ 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.
- ↑ Spiegelhalter, D. J. (2019). The art of statistics : learning from data (en inglés). [London] UK. ISBN 0-241-39863-0. OCLC 1064776283.
- ↑ 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.
- ↑ 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
[editar]- 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.