Explorador M1
Explorador M1
ARTIFICIAL
Nivel Explorador
MISIÓN 1
BOOTCAMP INTELIGENCIA ARTIFICIAL
Nivel Explorador
Semana 1
Introducción a la Inteligencia Artificial
Introducción
La inteligencia artificial (IA) ha capturado la atención mundial en las últimas décadas debido a sus
numerosas aplicaciones en diversos campos, como la medicina, la industria, el entretenimiento y la
educación. Esta disciplina se refiere a la capacidad de los sistemas informáticos para realizar tareas
que normalmente requieren inteligencia humana, como el aprendizaje, la percepción, la toma de
decisiones y la resolución de problemas (Caparrini, 2018).
Históricamente, la IA ha evolucionado desde los primeros experimentos en los años 50 hasta los
avances más recientes en áreas como el aprendizaje automático (machine learning) y el
procesamiento del lenguaje natural (García et al., 2020). Estas innovaciones han transformado la
manera en que interactuamos con la tecnología, permitiendo que los sistemas sean más autónomos
y eficientes.
Este documento explorará los conceptos básicos y la evolución histórica de la inteligencia artificial.
Abordaremos las diferencias clave entre la IA, el aprendizaje automático y el aprendizaje profundo
(deep learning), y examinaremos diversas aplicaciones de la IA en la vida cotidiana, desde la
medicina hasta el entretenimiento (Hernández & Prats, 2022).
Para comprender mejor la IA, es crucial reconocer sus implicaciones sociales y éticas. A medida que
los sistemas de IA se integran más en nuestra vida diaria, es necesario enfrentar desafíos como la
transparencia, la privacidad de los datos y la equidad. Estos temas se discutirán en profundidad en
las secciones posteriores (Rani, 2020).
Conceptos Básicos y Evolución Histórica de la IA
La inteligencia artificial se originó en la década de 1950 cuando investigadores como Alan Turing,
John McCarthy y Marvin Minsky comenzaron a explorar la posibilidad de crear máquinas con
capacidades cognitivas similares a las humanas. Este período inicial fue marcado por optimismo,
pero también por desafíos significativos, lo que llevó a períodos de escepticismo conocidos como
"invernadas de la IA" (Caparrini, 2018).
El aprendizaje automático ha permitido que las máquinas analicen grandes volúmenes de datos y
extraigan patrones significativos, lo que ha impulsado innovaciones en muchos sectores. Por
ejemplo, las redes neuronales artificiales han sido esenciales en la evolución de la IA, permitiendo
avances significativos en la capacidad de las máquinas para procesar información de manera similar
al cerebro humano (Rani, 2020).
Ejemplo de Código:
Considera el siguiente script que utiliza una red neuronal básica para clasificar imágenes:
import tensorflow as tf
model = models.Sequential()
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))
# Compilar el modelo
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# Entrenar el modelo
El aprendizaje profundo, por su parte, es una técnica avanzada de aprendizaje automático que
emplea redes neuronales artificiales para procesar datos de manera más similar al cerebro humano.
Estas redes pueden aprender características complejas a partir de los datos, lo que les permite
resolver problemas de manera más eficiente y precisa (Yun et al., 2022).
Ejemplo de Código:
Aquí tienes un ejemplo de un algoritmo de aprendizaje automático que clasifica datos utilizando
un árbol de decisión:
iris = load_iris()
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
La privacidad y la protección de datos personales son otras áreas de preocupación, ya que los
sistemas de IA requieren grandes volúmenes de información para funcionar. Esto plantea serios
desafíos de privacidad, ya que las tecnologías pueden recopilar, almacenar y procesar información
sensible sobre los individuos (Hernández & Prats, 2022). Las políticas sólidas de privacidad y
seguridad de datos son esenciales para proteger los derechos y la autonomía de las personas.
Además, existe el riesgo de que la IA perpetúe y amplifique sesgos humanos presentes en los datos
de entrenamiento, lo que podría resultar en decisiones discriminatorias y resultados injustos
(Caparrini, 2018). Los desarrolladores de IA deben abordar proactivamente estos problemas de
sesgo y equidad para evitar consecuencias negativas.
Instrucciones:
Instrucciones:
1. Realice una línea de tiempo de los hitos más importantes en la historia de la IA.
Instrucciones:
1. Lea y resuma las diferencias clave entre IA, aprendizaje automático y aprendizaje
profundo.
Instrucciones:
3. Prepare una presentación breve sobre las ventajas y desafíos del uso de IA en el sector
elegido.
Instrucciones:
2. Discuta las medidas que se podrían tomar para mitigar estos desafíos éticos.
Referencias
● Barakat, Y., Bourekkadi, S., Khoulji, S., & Kerkeb, M. L. (2021). What contributions of Artificial Intelligence in
Innovation?. EDP Sciences, 234, 00105-00105. https://doi.org/10.1051/e3sconf/202123400105
● Caparrini, F. S. (2018). Breve historia de la inteligencia artificial. Fundación José Ortega y Gasset, 19-33.
https://dialnet.unirioja.es/servlet/articulo?codigo=6503791
● García, J. D. R., Moreno-León, J., González, M. R., & Robles, G. (2020). LearningML: A Tool to Foster
Computational Thinking Skills Through Practical Artificial Intelligence Projects. University of Murcia, 20(63).
https://doi.org/10.6018/red.410121
● Hernández, F. S., & Prats, G. M. (2022). Aportes de ingeniería en inteligencia artificial aplicada en la educación.
Área de Innovación y Desarrollo S.L., 11(1), 133-143. https://doi.org/10.17993/3ctic.2022.111.133-143
● Rani, P. (2020). A Comprehensive Survey of Artificial Intelligence (AI): Principles Techniques and Applications.
Karadeniz Technical University, 11(3), 1990-2000. https://doi.org/10.17762/turcomat.v11i3.13596
● Yun, L., Jiao, H., & Lu, K. (2022). Tourist Attraction Recommendation Method Based on Megadata and Artificial
Intelligence Algorithm. Wiley, 2022, 1-8. https://doi.org/10.1155/2022/4461165
BOOTCAMP INTELIGENCIA ARTIFICIAL
Nivel Explorador
Semana 2
Herramientas y Entornos de Desarrollo para IA
Introducción
La inteligencia artificial (IA) ha emergido como una de las tecnologías más innovadoras y de rápido
avance, aplicándose en diversas áreas, desde el reconocimiento de imágenes hasta la conducción
autónoma de vehículos. Este auge tecnológico exige a los desarrolladores el uso de una amplia gama
de herramientas y entornos de programación para crear, entrenar y desplegar modelos de
aprendizaje automático eficientemente (González, 2023).
A pesar de la predominancia de Python, otros lenguajes como R, Java y C++ también son utilizados
en el ámbito de la IA. La elección del lenguaje ideal depende de los requerimientos específicos del
proyecto, la experiencia del equipo y las preferencias individuales.
Seleccionar las herramientas y lenguajes adecuados es crucial para el éxito de un proyecto de IA.
Python se ha consolidado como uno de los lenguajes de programación más populares para
implementar aplicaciones de IA debido a su facilidad de uso y su capacidad para manejar grandes
volúmenes de datos (Rosas, 2023).
Características Clave de Python para IA:
2. Biblioteca Amplia de Paquetes y Módulos: Python cuenta con una variedad de bibliotecas
y frameworks diseñados para el desarrollo de aplicaciones de IA, como NumPy, Pandas, y
Scikit-Learn (Sodhi et al., 2019).
3. Integración con Otros Lenguajes: Python puede integrarse fácilmente con otros lenguajes
de programación, permitiendo a los desarrolladores aprovechar sus fortalezas específicas
(Mosquera et al., 2021).
Además de Python, lenguajes como R, Java y C++ ofrecen características únicas que pueden ser
ventajosas dependiendo del proyecto. La elección del lenguaje adecuado dependerá de los
requisitos del proyecto y de la experiencia del equipo de desarrollo.
Estas bibliotecas permiten a los desarrolladores realizar tareas cruciales como la carga y
procesamiento de datos, la selección y entrenamiento de modelos, y la evaluación y optimización
de los mismos.
Una adecuada configuración del entorno de desarrollo es esencial para la creación de aplicaciones
de IA en Python. Esto incluye la instalación y gestión de bibliotecas y dependencias necesarias, así
como la creación de entornos virtuales para aislar el entorno de ejecución.
Pasos Comunes para la Configuración de Entornos:
2. Creación de Entornos Virtuales: Usar venv o conda environments para aislar proyectos y
evitar conflictos entre dependencias.
4. Evaluación y Optimización del Modelo: Evaluación del modelo entrenado con el conjunto
de prueba, ajuste de hiperparámetros o selección de algoritmos alternativos.
Conclusión
Este documento ha proporcionado una visión general de las herramientas y entornos de desarrollo
para la inteligencia artificial, enfatizando el uso de Python como lenguaje de programación. Se han
discutido conceptos clave relacionados con las herramientas y lenguajes básicos para IA, el manejo
de bibliotecas de IA en Python, la configuración de entornos de desarrollo y el ciclo de vida de un
proyecto de aprendizaje automático (Caparrini, 2018).
La información presentada sirve como una base sólida para que los desarrolladores comiencen a
explorar y aplicar la inteligencia artificial en sus proyectos, aprovechando las potentes herramientas
y bibliotecas disponibles en el ecosistema de Python.
Ejemplos de Código
python
Copy code
import numpy as np
import pandas as pd
# Operaciones básicas
print(df.describe())
print(df.mean())
python
Copy code
# Cargar dataset
iris = load_iris()
X, y = iris.data, iris.target
# Dividir datos en conjuntos de entrenamiento y prueba
# Entrenar modelo
clf = RandomForestClassifier()
clf.fit(X_train, y_train)
# Evaluar modelo
y_pred = clf.predict(X_test)
Actividades Propuestas
o Instrucciones:
o Instrucciones:
Referencias
• Caparrini, F. S. (2018). Breve historia de la inteligencia artificial. Fundación José Ortega y
Gasset.
• García, J. D. R., Moreno-León, J., González, M. R., & Robles, G. (2020). LearningML: A Tool
to Foster Computational Thinking Skills Through Practical Artificial Intelligence Projects.
University of Murcia.
• González, C. S. G. (2023). El impacto de la inteligencia artificial en la educación:
transformación de la forma de enseñar y de aprender. University of La Laguna.
• Mosquera, J. M. L., Suarez, C. G. H., & Bucheli, V. (2021). Una revisión sistemática sobre aula
invertida y aprendizaje colaborativo apoyados en inteligencia artificial para el aprendizaje
de programación. District University of Bogotá.
• Rosas, V. Q. (2023). Aplicaciones de Inteligencia Artificial Aliadas en la Enseñanza de las
Matemáticas. Latin American Association for the Advancement of Sciences.
• Shenouda, J., & Bajwa, W. U. (2021). A Guide to Computational Reproducibility in Signal
Processing and Machine Learning. Cornell University.
• Sodhi, P., Awasthi, N., & Sharma, V. (2019). Introduction to Machine Learning and Its Basic
Application in Python. RELX Group (Netherlands).
BOOTCAMP INTELIGENCIA ARTIFICIAL
Nivel Explorador
Semana 3
Tipos de Aprendizaje en IA
Introducción
La inteligencia artificial (IA) es un campo en constante evolución que abarca una amplia variedad de
técnicas y enfoques para abordar problemas complejos. Desde su concepción, la IA ha demostrado
ser una herramienta valiosa para resolver desafíos en diversos dominios, incluyendo la medicina, la
industria y el entretenimiento. A medida que la tecnología avanza, el interés en las aplicaciones
prácticas de la IA continúa creciendo, impulsado por la capacidad de los sistemas de aprendizaje
automático para procesar y analizar grandes volúmenes de datos de manera eficiente.
Este documento explora en detalle cada uno de estos tipos de aprendizaje, analizando sus
conceptos fundamentales y su implementación práctica utilizando el lenguaje de programación
Python. También se discuten las técnicas de preparación y limpieza de datos, que son cruciales para
el éxito de cualquier proyecto de IA. Además, se incluyen ejemplos de código, sugerencias de
imágenes y actividades para profundizar en el tema.
Finalmente, se presentan referencias bibliográficas relevantes para aquellos que deseen explorar
más a fondo los temas discutidos. La comprensión y aplicación de estos enfoques de aprendizaje
pueden proporcionar a los investigadores y desarrolladores las herramientas necesarias para
enfrentar los desafíos del futuro.
Aprendizaje Supervisado
El aprendizaje supervisado es un enfoque de IA que utiliza datos etiquetados para entrenar modelos
a predecir o clasificar nuevas entradas. Este tipo de aprendizaje es especialmente útil cuando se
dispone de grandes conjuntos de datos donde se conocen tanto las entradas como las salidas
esperadas. Algunos de los algoritmos más populares en esta categoría incluyen la regresión lineal,
la regresión logística, los árboles de decisión, las máquinas de vectores de soporte (SVM) y las redes
neuronales.
# Cargar datos
# Construir el modelo
model = Sequential([
Flatten(input_shape=(28, 28)),
Dense(128, activation='relu'),
Dense(10, activation='softmax')
])
# Compilar el modelo
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# Entrenar el modelo
# Evaluar el modelo
model.evaluate(x_test, y_test)
import pandas as pd
# Cargar datos
data = pd.read_csv('housing_prices.csv')
y = data['precio']
model = LinearRegression()
model.fit(X_train, y_train)
# Hacer predicciones y evaluar el modelo
y_pred = model.predict(X_test)
Aprendizaje No Supervisado
El aprendizaje no supervisado se caracteriza por la ausencia de etiquetas en los datos, lo que
requiere que los modelos descubran patrones y estructuras inherentes por sí mismos. Este enfoque
es ideal para tareas como la agrupación (clustering) y la reducción de dimensionalidad. Algoritmos
comunes incluyen el análisis de componentes principales (PCA), el clustering K-Means y las redes
neuronales autoencodificadoras.
import pandas as pd
# Cargar datos
data = pd.read_csv('clientes.csv')
# Aplicar K-Means
kmeans = KMeans(n_clusters=3)
kmeans.fit(features)
data['cluster'] = kmeans.labels_
print(data.head())
# Cargar datos
data = pd.read_csv('datos_iris.csv')
scaler = StandardScaler()
scaled_data = scaler.fit_transform(data)
# Aplicar PCA
pca = PCA(n_components=2)
pca_result = pca.fit_transform(scaled_data)
plt.show()
Aprendizaje por Refuerzo
El aprendizaje por refuerzo se centra en la interacción de un agente con un entorno, donde el agente
aprende a tomar decisiones óptimas mediante la maximización de una recompensa acumulada. Este
enfoque se utiliza comúnmente en la toma de decisiones secuenciales, como el control de robots y
juegos. Las técnicas principales incluyen el aprendizaje Q, los procesos de decisión de Markov y los
algoritmos de política de gradiente.
import gym
import numpy as np
# Crear entorno
env = gym.make('Pong-v0')
# Inicializar tabla Q
Q = np.zeros([env.observation_space.n, env.action_space.n])
# Parámetros de aprendizaje
learning_rate = 0.8
discount_factor = 0.95
num_episodes = 1000
for i in range(num_episodes):
state = env.reset()
done = False
state = new_state
print("Entrenamiento completado")
import numpy as np
# Crear entorno
env = gym.make('CartPole-v1')
model = Sequential([
Dense(24, activation='relu'),
Dense(env.action_space.n, activation='linear')
])
model.compile(loss='mse', optimizer=Adam(lr=0.001))
# Parámetros de aprendizaje
episodes = 1000
gamma = 0.95
epsilon = 1.0
epsilon_min = 0.01
epsilon_decay = 0.995
for e in range(episodes):
state = env.reset()
action = env.action_space.sample()
else:
action = np.argmax(model.predict(state))
state = next_state
if done:
break
epsilon *= epsilon_decay
print("Entrenamiento completado")
Técnicas de Preparación y Limpieza de Datos
La calidad de los datos es fundamental para el éxito de cualquier proyecto de inteligencia artificial.
Es crucial dedicar tiempo y esfuerzo a la preparación y limpieza de los datos antes de aplicar los
modelos de aprendizaje. Algunas técnicas clave incluyen el manejo de valores faltantes, la detección
y tratamiento de valores atípicos, y la codificación de variables categóricas.
# Cargar datos
data = pd.read_csv('datos.csv')
print(data.isnull().sum())
data.fillna(data.mean(), inplace=True)
print(data.head())
import pandas as pd
import numpy as np
# Cargar datos
data = pd.read_csv('datos.csv')
Q1 = data.quantile(0.25)
Q3 = data.quantile(0.75)
IQR = Q3 - Q1
data_clean = data[~((data < (Q1 - 1.5 * IQR)) | (data > (Q3 + 1.5 * IQR))).any(axis=1)]
print(data_clean.head())
Actividad 1
Título: Implementación de un Clasificador de Imágenes
Instrucciones:
Actividad 2
Título: Análisis de Agrupamiento de Clientes
Instrucciones:
Instrucciones:
5. Discuta los desafíos y las ventajas del aprendizaje por refuerzo en comparación con otros
enfoques.
Actividad 4
Título: Preparación de Datos para Modelado
Objetivo: Aprender a aplicar técnicas de limpieza y transformación de datos para mejorar la calidad
del conjunto de datos.
Instrucciones:
• Justesen, N., Bontrager, P., Togelius, J., & Risi, S. (2017). Deep Learning for Video Game
Playing. Cornell University. https://doi.org/10.48550/arxiv.1708.07902
• Cukierman, U., & Vidal, E. V. (2020). Aprendizajes reales en ambientes virtuales. El rol de la
tecnología en la era de la Inteligencia Artificial y el Big Data. Revista CPU-e, 17(34), 59-67.
https://doi.org/10.29197/cpu.v17i34.396
Introducción
El análisis y procesamiento de datos es un componente esencial en el campo de la inteligencia
artificial y el aprendizaje automático. Independientemente del tipo de problema que se desee
abordar, ya sea de clasificación, regresión o agrupamiento, es fundamental contar con datos de alta
calidad que permitan obtener resultados precisos y confiables (Cukierman & Vidal, 2020). En este
contexto, el manejo adecuado de los datos faltantes, la detección y tratamiento de valores atípicos,
así como la normalización y escalado de los datos, son pasos críticos que deben considerarse antes
de aplicar cualquier algoritmo de aprendizaje automático.
La primera etapa en el procesamiento de datos consiste en lidiar con los datos faltantes y la
detección de valores atípicos. Existen diversas técnicas de imputación, como la sustitución por la
media, la mediana o el modo, que permiten completar los datos ausentes (Hariharakrishnan et al.,
2017). Asimismo, la identificación de outliers es crucial, ya que estos valores pueden sesgar
significativamente los resultados de los modelos de aprendizaje (Budach et al., 2022). Estas técnicas
deben aplicarse de manera cuidadosa, evaluando su impacto en la calidad y representatividad de
los datos.
Una vez que los datos han sido limpiados y depurados, es importante considerar la normalización y
el escalado de las variables. Esto es especialmente relevante cuando se trabaja con variables que
presentan diferentes escalas o unidades de medida, ya que puede afectar el desempeño de los
algoritmos de aprendizaje automático. Existen diversas técnicas de normalización y escalado, como
la estandarización, la normalización min-max y la normalización por rango intercuartílico, cada una
con sus propias ventajas y desafíos (Dhieb et al., 2020).
Existen diversas técnicas estadísticas y de aprendizaje automático para lidiar con estos desafíos.
Para el manejo de datos faltantes, se pueden utilizar métodos de imputación como la sustitución
por la media, mediana o moda, o técnicas más avanzadas como la imputación múltiple. En cuanto a
la detección de outliers, se pueden aplicar enfoques basados en la distancia, como el algoritmo de
las distancias de Mahalanobis, o métodos basados en el aprendizaje automático, como el análisis
de componentes principales o el aislamiento de árboles de decisión.
import pandas as pd
import numpy as np
data = pd.read_csv('loans_data.csv')
print(data.isnull().sum())
imputer = SimpleImputer(strategy='mean')
data_imputed = imputer.fit_transform(data)
A continuación, detectaremos y manejaremos los outliers en el conjunto de datos utilizando el
algoritmo de distancia de Mahalanobis:
inv_cov_matrix = inv(cov_matrix)
print(sorted(mahalanobis_distances, reverse=True)[:5])
● Normalización por rango intercuartílico: Utiliza los percentiles 25 y 75 para escalar las
variables de manera robusta a outliers.
Cada una de estas técnicas tiene sus propias ventajas y desafíos, y su elección dependerá del
contexto del problema y las características de los datos.
Continuando con el ejemplo de los préstamos bancarios, vamos a aplicar diferentes técnicas de
normalización a las variables:
# Estandarización
scaler = StandardScaler()
data_standardized = scaler.fit_transform(data_imputed)
# Normalización min-max
scaler = MinMaxScaler()
data_minmax = scaler.fit_transform(data_imputed)
scaler = RobustScaler()
data_robust = scaler.fit_transform(data_imputed)
# Regresión lineal
linear_model = LinearRegression()
linear_model.fit(X_train, y_train)
# Regresión logística
logistic_model = LogisticRegression()
logistic_model.fit(X_train, y_train)
4. Elimine o ajuste los outliers detectados y compare los resultados antes y después del
manejo de datos.
Actividad 2
Título de la actividad: Normalización y Escalado de Datos
Objetivo de la actividad: Implementar y comparar diferentes técnicas de normalización y escalado
de datos.
Instrucciones:
Actividad 3
Título de la actividad: Implementación de Algoritmos de Regresión
Objetivo de la actividad: Desarrollar y evaluar modelos de regresión lineal y logística.
Instrucciones:
4. Analice las diferencias en el desempeño de ambos modelos y discuta las posibles causas.
Actividad 4
Título de la actividad: Evaluación de Modelos de Machine Learning
Objetivo de la actividad: Aplicar métricas de evaluación y validación cruzada en modelos de
aprendizaje.
Instrucciones:
3. Implemente una técnica de validación cruzada para evaluar la robustez del modelo.
Referencias
● An Investigation of Wine Quality Testing using Machine Learning Techniques. (2020 April
30). Science Press, 14(4). https://doi.org/10.37896/jxu14.4/408
● Arif, M. S., Mukheimer, A., & Asif, D. (2023 August 16). Enhancing the Early Detection of
Chronic Kidney Disease: A Robust Machine Learning Model. Multidisciplinary Digital
Publishing Institute, 7(3), 144-144. https://doi.org/10.3390/bdcc7030144
● Artetxe, A., Beristáin, A., & Graña, M. (2018 October 1). Predictive models for hospital
readmission risk: A systematic review of methods. Elsevier BV, 164, 49-64.
https://doi.org/10.1016/j.cmpb.2018.06.006
● Budach, L., Feuerpfeil, M., Ihde, N., Nathansen, A., Noack, N., Patzlaff, H., Harmouch, H., &
Naumann, F. (2022 January 1). The Effects of Data Quality on Machine Learning
Performance. Cornell University. https://doi.org/10.48550/arxiv.2207.14529
● Cukierman, U., & Vidal, E. V. (2020 July 15). Aprendizajes reales en ambientes virtuales. El
rol de la tecnología en la era de la Inteligencia Artificial y el Big Data. 17(34), 59-67.
https://doi.org/10.29197/cpu.v17i34.396
● Dhieb, N., Ghazzai, H., Besbes, H., & Massoud, Y. (2020 January 1). Scalable and Secure
Architecture for Distributed IoT Systems. Cornell University.
https://doi.org/10.48550/arxiv.2005.02456
● Hariharakrishnan, J., Mohanavalli, S., Srividya, & Kumar, K. B. (2017 January 1). Survey of
pre-processing techniques for mining big data.
https://doi.org/10.1109/icccsp.2017.7944072
● Juddoo, S., & George, C. (2020 November 25). A Qualitative Assessment of Machine
Learning Support for Detecting Data Completeness and Accuracy Issues to Improve Data
Analytics in Big Data for the Healthcare Industry.
https://doi.org/10.1109/elecom49001.2020.9297009
● Mosquera, J. M. L., Suarez, C. G. H., & Bucheli, V. (2021 July 1). Una revisión sistemática
sobre aula invertida y aprendizaje colaborativo apoyados en inteligencia artificial para el
aprendizaje de programación. District University of Bogotá, 25(69), 196-214.
https://doi.org/10.14483/22487638.16934
● Rehman, A. U., & Belhaouari, S. B. (2021 June 2). Unsupervised outlier detection in
multidimensional data. Springer Science+Business Media, 8(1).
https://doi.org/10.1186/s40537-021-00469-z