Agente inteligente para prescribir tratamiento de enfermedades con medicina alternativa usando aprendizaje automático

Manuel Abelardo Alcatara Ramírez

malcantara@untels.edu.pe

Universidad Nacional Tecnológica de Lima Sur

Lima-Perú

 

Lucio Caceres Espinoza

[email protected]

Universidad Nacional Tecnológica de Lima Sur

Lima-Perú

 

Maruja Emélita Blas Rebaza

[email protected]

Universidad Nacional Tecnológica de Lima Sur

Lima-Perú

 

Oscar Adrian Zapillado Huanco

[email protected]

Universidad Nacional Tecnológica de Lima Sur

Lima-Perú

 

Moises Cotacallapa Vilca

[email protected]

Universidad Nacional Tecnológica de Lima Sur

Lima-Perú

 

RESUMEN

El aprendizaje automático tiene en los sistemas de recomendación una de sus principales aplicaciones.  El objetivo de este trabajo fue construir un agente inteligente en base a un sistema de recomendación que prescriba tratamientos de enfermedades con medicina alternativa. La arquitectura del sistema consideró una capa de datos, una capa de motor de recomendación, una capa de servicios y una capa de usuario, se utilizó el enfoque de filtrado colaborativo implementándolo en lenguaje R. El sistema se probó en un grupo de trabajadores, los cuales corroboraron su eficiencia. Se concluye que un sistema de recomendación es una herramienta de apoyo al cuidado de la salud. Se recomienda que el uso de web scraping para mejorar los datos y enfoques híbridos en el motor de recomendación.

Palabras clave: sistema de recomendación; medicina alternativa; aprendizaje automático; lenguaje R

Intelligent agent to prescribe treatment of diseases with alternative medicine using machine learning

 

ABSTRACT

In health care it is known that medicines are increasingly expensive, health services are insufficient, conventional medicines have side effects; alternative medicine as well as alleviate these drawbacks. Machine learning has one of its main applications in recommendation systems.  The goal of this work was to build an intelligent agent based on a recommendation system that prescribes disease treatments with alternative medicine. The system architecture considered a data layer, a recommendation engine layer, a service layer, and a user layer, the collaborative filtering approach was used by implementing it in the language R. The system was tested on a group of workers, who corroborated their efficiency. It is concluded that a referral system is a health care support tool. It is recommended that you use web scraping to improve data and hybrid approaches in the recommendation engine.

Keywords: recommendation system; alternative medicine; machine learning R

 

Artículo recibido:  10 Setiembre. 2021

Aceptado para publicación: 15 Octubre. 2021

Correspondencia: [email protected]

Conflictos de Interés: Ninguna que declarar

 

                                                                               

 

 

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             

 

 

 

 

 

 

1.    INTRODUCCIÓN

El presente trabajo, es el producto de una investigación motivada por la preocupación que existe de la humanidad por conseguir preservar la salud de la población, buscando alternativas a las ya convencionales estrategias de la medicina convencional y desde la perspectiva de la ingeniería. La idea es contribuir con una alternativa nueva para apoyar al sistema de salud en su propósito de mejorar la salud de la población haciendo uso de las tecnologías de la información. Dentro de las aplicaciones más conocidas y utilizadas del machine learning se considera a los sistemas de recomendación los cuales han demostrado su efectividad en el comercio electrónico. En este informe se presenta el diseño de un sistema de recomendación desarrollado en base a la implementación de algoritmos del aprendizaje automático para recomendar tratamientos con medicina alternativa que sirvan como propuestas para que los implicados en el cuidado de la salud.

1.1    Aprendizaje automático

La inteligencia artificial (artificial intelligence), se define como la ciencia que estudia las formas para que una máquina pueda pensar, razonar, identificar, aprender, resolver problemas, tal como lo realizaría el hombre, una de sus ramas es el aprendizaje automático (Mashingaidze y Backhouse, 2017).

El aprendizaje automático (machine learning) es ciencia por la cual las máquinas pueden aprender a realizar tareas sin que se les programe explícitamente cómo hacerlo (Uchyigit y Ma., 2008). Existen diferentes tipos de aprendizaje automático: El aprendizaje supervisado, el aprendizaje no supervisado y el aprendizaje por refuerzo. El aprendizaje supervisado es una técnica que proporciona los datos de entrada etiquetados y además la salida correcta que se debe obtener, El aprendizaje consiste en ajustar el error que existe entre los resultados obtenidos y la salida esperada (Mashingaidze y Backhouse, 2017).

En el aprendizaje no supervisado, los datos no han sido etiquetados previamente y solo se dispone de datos de entrada, por tanto, la máquina debe de ser capaz de encontrar la estructura existente en los datos (Uchyigit y Ma, 2008). En el aprendizaje por refuerzo, funciona en base a premios, a través del ensayo y error. Si la máquina no lo hace bien se le da un “premio” igual a 0 o negativo. En cambio, si toma una acción acertada se le dan premios con valor positivo para al final acabar encontrando una “buena” solución. De esta forma se consigue que el sistema aprenda de forma inteligente cuando toma decisiones acertadas, mejorando los procesos de decisión (Mashingaidze y Backhouse, 2017). Como algoritmos de aprendizaje supervisado se tienen a los que basan en la clasificación y la regresión, como algoritmos de clasificación se mencionan a los algoritmos del análisis discriminante, métodos Bayesianos, como algoritmos de regresión se menciona a los árboles de decisión, regresión de mínimos cuadrados ordinarios, regresión lineal, regresión logística, máquina de soporte vectorial, descomposición singular de valores entre otros (Mashingaidze y Backhouse, 2017).Como algoritmos de aprendizaje no supervisado se mencionan a los siguientes: algoritmos de clustering, vecinos-cercanos, descomposición singular de valores, reducción de la dimensionalidad, análisis de componentes principales (Uchyigit y Ma, 2008).

1.2    Sistemas de recomendación.

Los sistemas de recomendación son programas que intentan recomendar los artículos (productos o servicios) más adecuados a los usuarios (individuos o empresas) al predecir el interés de un usuario en un artículo basado en la información relacionada sobre los artículos, los usuarios y las interacciones entre artículos y usuarios (Tarnowska, Ras y Daniel, 2020), (Espín, 2016), (Morales, 2011). En opinión de Aggarwal (2016), los sistemas de recomendación se fundamentan en la idea de utilizar diversas fuentes de datos para inferir los intereses de los usuarios. El usuario es la entidad a la que se le proporciona la recomendación, el artículo es el producto que se recomienda y el análisis de recomendaciones se basa en la interacción previa entre usuarios y elementos, considerando que los intereses y las tendencias pasadas son a menudo buenos indicadores de elecciones futuras. Los sistemas de recomendación tradicionales realizan el procesamiento de datos para calcular una lista de elementos que satisfacen un criterio de preferencia especificado por el usuario, los elementos de la lista se clasifican según la cercanía a las preferencias del usuario. La información de contexto de un usuario, como la ubicación, la hora y las condiciones, se ha integrado cada vez más en los sistemas de recomendación para proporcionar información de recomendación más precisa o personalizada, en comparación con los enfoques simples (Khalid, Khan y Zomaya, 2019), (Espín, 2016), (Morales, 2011). Las definiciones de sistemas de argumentación en opinión de los primeros autores (Tarnowska et al, 2020), (Aggarwal,2016) ponen en relieve la interacción entre los usuarios y los elementos, mientras que el grupo de Khalid (Khalid et al, 2019) enfatiza el hecho que se pueden mejorar la precisión de los resultados, integrando cada vez más criterios en las relaciones entre el usuario y el artículo. Los sistemas de recomendación constituyen una parte de la inteligencia artificial en donde se centra explícitamente en evaluar lo relevante de aquellos artículos que el usuario no conoce (Cleger, 2012). La clasificación básica de sistemas de recomendación establece dos tipos, los sistemas de recomendación basados en contenido, en los que se recomienda los artículos según lo seleccionado en el pasado por el usuario, y los sistemas de recomendación colaborativos, en los que se recomienda basándose en selecciones de clientes con gustos y preferencias similares, es decir se concibe la idea de una inteligencia colectiva para mostrar información a la cliente adaptada a sus gustos (Cleger, 2012), (Vera, 2016), (Gorakola, 2015). Los sistemas de recomendación han incrementado su presencia en diversos campos, destacando en el comercio electrónico. Se pueden encontrar también en entornos de libros, música, redes sociales, destinos turísticos, películas, noticias, etc. La habilidad para aprender del comportamiento de los usuarios y descubrir sus preferencias, lo configura como una herramienta útil ante el incremento continuo de información al que se encuentran expuestos los usuarios (Cleger, 2012), (Font, 2009), (Lage, Durao, Dolog y Stewart, 2011).

1.3    Medicina Alternativa.

Es fundamental establecer como se entiende en la actualidad el concepto de medicina alternativa, el enfoque más básico es el que la define como un método de medicina natural, esta acepción resulta controversial y difiere en gran medida de las concepciones de la medicina convencional sin alejarse de las explicaciones científicas (Badillo, 2018).  En opinión de otros expertos la medicina alternativa es la unión entre lo tradicional y lo convencional, por mencionar por ejemplo la unión entre la medicina china, la hindú, la homeopatía, la acupuntura, entre otras. Se afirma que el objetivo de esta medicina consiste en ayudar a la población a lograr una mejor calidad de vida por medios naturales, acompañado también de un buen régimen alimenticio y un adecuado ejercicio físico (Badillo, 2018). Si tomamos en cuenta la opinión de Albert Einstein de que los seres vivos son “energías”, se afirma que la medicina alternativa logra los movimientos energéticos que activan células y moléculas acorde con lo que el cuerpo y la mente necesita.  Por similitud entonces, la medicina alternativa, considera que los seres vivos son centros energéticos, que transmiten energías por canales internos y externos, los segundos de estos canales se denomina “Aura” (Badillo, 2018).

Desde esta perspectiva, la medicina alternativa o natural, es un conjunto de prácticas y tratamientos médicos que usa métodos y terapias diferentes a las convencionales, para atender el cuidado de la salud, ya sea para curar enfermedades, mejorar o frenar síntomas y dolencias de todo tipo (Quintero Barbón y Beltrán Dussan, 2015). Los métodos, mencionados anteriormente, consideran prácticas ancestrales, religiosas, culturales y metafísicas, por ejemplo, de las cuales, muchas de ellas cuentan con un aval científico para validan su eficacia, seguridad e inocuidad (Onyiapat, Okoronkwo y Ogbonnaya, 2011). En ciertas comunidades de la población la medicina alternativa, se usa en reemplazo total de la medicina convencional, o bien como tratamiento complementario, aunque su mayor uso se da como tratamiento adicional y que en opinión de muchos es la más recomendado (Horta y Gonzales, 2013). Existe una extensa variedad de métodos y prácticas dentro de la medicina alternativa y se trabaja en diversos focos de acción y mecanismos. Se considera por ejemplo homeopatía, la medicina china; las intervenciones corporales y mentales, como la relajación, yoga y meditación; los métodos de manipulación, como los masajes; las terapias biológicas, con preparaciones herbales; y las terapias de energía (Horta y Gonzales, 2013). La medicina alternativa, en teoría considera que las enfermedades de todo el organismo son tratables con los diferentes métodos, por lo tanto, se afirma que el objetivo es intentar curar o bien frenar, retrasar o minimizar esas afecciones. Se considera que, en otros casos o dolencias, solo se podrán aliviar los síntomas a largo plazo, y en algunos otros puede ser una forma paliativa de tratamiento (Christon, Mackintosh y Myers, 2010).

2.    ESTRATEGIAS METODOLÓGICAS O MATERIALES Y MÉTODOS

La arquitectura del sistema re comendador, se estableció mediante una estructura de 4 capas:

§   Capa de datos. Para el almacenamiento de todas las recomendaciones, los usuarios, ítems (artículos o productos) y la información contextualizada del todo el sistema de recomendación.

§   Capa del motor de recomendación. Para manejar todas las interacciones que se den entre las capas, actúa como un controlador que realiza diferentes tareas en funciones de las entradas.

§   Capa de servicios. Esta capa ofrece servicios para que puedan ser consumidas por la capa de cliente, estos servicios están orientados a ofrecer recomendaciones y al almacenamiento de ratings, también incluye un servicio adicional para la importación de datos.

§   Capa del cliente. Para integrar el sistema de recomendación, en cualquier interface o formulario o página web de un sistema externo para que pueda interactuar con el sistema de recomendación

3. RESULTADOS Y DISCUSIÓN

3.1.  Implementación de la capa de datos

La capa de datos está constituida por tablas tubulares que almacenan información de los usuarios del sistema de recomendación, de los productos naturales de medicina alternativa a recomendar, de las enfermedades para los cuales se prescriben los productos y una tabla que almacena el contexto de la recomendación. En base a estos datos, en el sistema re comendador se construyen tablas tabulares auxiliares para que sean procesados por el sistema re comendador, la idea de utilizar tablas tubulares es para conseguir la compatibilidad con diversas herramientas que soportan motores de recomendación y también para lograr un modelo escalable es el futuro. Como manejador de base de datos se consideró conveniente utilizar el lenguaje R en su entorno de trabajo R studio, por ser uno de los lenguajes orientados al tratamiento de datos estadísticos más populares en el desarrollo de sistemas de recomendación y por presentar sus funciones de procesamiento poseedoras de una con considerable velocidad y flexibilidad en la programación.

3.2.  Implementación de la apa del motor de recomendación

Esta es la capa principal del desarrollo del proyecto, en esta capa se especifica de forma clara y concreta como se ha establecido el entorno de trabajo, como se hace la carga de la data para el aprendizaje del sistema, la implementación de los algoritmos de aprendizaje automático usados para formatear la data de forma tal que faciliten la tarea de recomendación de esta capa. Para la construcción del motor de recomendación se utilizaron los siguientes paquetes de R studio: dplyr, data, table y reshape2, dplyr es un paquete que proporciona un conjunto de herramientas para manipular de manera eficiente conjuntos de datos en R, puede trabajar con multiprocesadores para ahorrar tiempo de proceso. Usa datos tabulares que lo hacen compatible con PostgreSQL, MySQL, SQLite y Google BigQuery. El paquete dplyr proporciona opciones para la manipulación de los data-frames las cuales son estructuras rectangulares de datos, donde las filas son observaciones que en este caso son las preferencias de productos de medicina alternativa dada por los usuarios y las columnas variables que corresponden a los productos recomendados por los usuarios. Con estas opciones se puede compartir remotamente el trabajo con otros desarrolladores utilizando la abstracción y sus funciones que son muy rápidas puesto que están implementadas con el lenguaje C++.  La instalación de este paquete es fundamental para soportar otros paquetes también necesarios para la carga y formateo de los data-frames, los cuales nos proveen las funciones adecuadas necesarias para la construcción del sistema de recomendación, se utiliza el siguiente código:

# para la instalación de dplyr

> install. packages("dplyr")

> library(dplyr)

El comando En lenguaje R install. Packages (…) permite instalar paquetes mientras que el comando library (…) carga o pone a disposición el uso de las librerías del paquete correspondiente. Por otro lado la data table, es un paquete que se utiliza para trabajar con datos tabulares en R, se caracteriza porque mejora el data.frame predeterminado de R, es una alternativa al data.frame predeterminado de R para controlar los datos tabulares, se caracteriza por su velocidad en la ejecución de grandes volúmenes de datos y su sintaxis es sencilla. Provee funciones como fread() y read.table() que devuelven datos tipo object con la data formateada de acuerdo a nuestros requerimientos según lo parámetros establecidos. Para su instalación se utilizan los comandos install. packages(…) y para disponer de sus funciones se usa el comando library(…) en el entorno del lenguaje R.

> install.packages("data.table")

>library(data.table)

El paquete reshape2, es la actualización del anterior paquete reshape de R, es un paquete que permite el tratamiento de datos más rápido y eficiente en memoria que su antecesor, con una sintaxis más simple e intuitiva para el desarrollador. Se instala con los siguientes comandos:

> install.packages("reshape2")

>library(reshape2)

Para la implementación del desarrollo del sistema de recomendación del proyecto, se han evaluado los diferentes tipos de recomendación que se han expuesto en el marco teórico para poder elegir de manera coherente y factible el tipo de enfoque de sistema de recomendación a usar.  Para la elección del tipo de sistema de recomendación a usar se ha considerado tres razones principales, en primer lugar, los antecedentes científicos y de acuerdo a la revisión de la literatura científica realizada, no existen proyectos similares que aborden el tratamiento con medicina alternativa mediante sistemas de recomendación lo que establece el carácter innovador del proyecto. En segundo lugar, conocedores del auge de la inteligencia artificial actualmente y de la existencia de grupos de colaborativos en internet para desarrollar proyectos, se pudo comprobar que, aunque existen numerosos y buenos grupos colaborativos, no se pudo determinar la existencia de laboratorios de inteligencia artificial con repositorios de base de datos referentes al tema. Finalmente, se ha considerado que dentro de las limitaciones teóricas se han consignado en la parte de restricciones del proyecto en el Capítulo I que la implementación del web scraping para generar la base de datos de producción del agente inteligente de recomendación será abordado en un proyecto posterior y teniendo en cuenta que el éxito de los sistemas de recomendación además de la elección de algoritmos adecuados de implementación radica en una buena base de datos con ingente información para poder hacer las recomendaciones más adecuadas para la satisfacción de los usuarios. 

Acorde con las explicaciones anteriores, se consideró conveniente elegir un motor de recomendaciones basado en el enfoque de filtrado colaborativo. Considerando que ya se estableció el entorno de trabajo sobre el cual se va a implementar el sistema de recomendación para que realice su trabajo de aprendizaje, se detalla a continuación los pasos para construir el motor de recomendaciones, estableciendo que son los siguientes: Carga y formateo de la data, Cálculo de la similitud entre los usuarios, Predecir las calificaciones desconocidas para los usuarios, Recomendar elementos a los usuarios en función de la puntuación de similitud del usuario.

Estos pasos que implementan fundamentalmente en la capa de servicios que permite interactuar con los datos y los algoritmos.

3.3.  Implementación de la capa de servicios.

Esta capa interactúa de manera constante con las otras capas del sistema, interactúa con la capa de datos para hacer la carga y formateo de los datos convirtiéndolo en formatos adecuados para que conjunto con la capa del motor de recomendación se procese adecuadamente los datos. Interactúa también con la capa del usuario para hacer adecuadamente la captura y presentación de los datos de manera precisa y amigable de forma tal que la comunicación con el usuario sea en formatos de fácil comprensión y manejo. Se describe a continuación los principales servicios que ofrece esta tan importante capa del sistema. Interactuando con la capa de datos, la capa de servicios en primer lugar propicia la carga de la data en el formato que se establezca o se recoge de las fuentes de datos, que puede ser de los usuarios o la internet a través del web scraping, luego esta capa brinda el servicio que consiste en transformar esta data original en el formato entendible por el motor de recomendación.

El conjunto de datos está constituido por un archivo tabular de texto donde la información está separada por comas, siendo la primera línea correspondiente a las variables y las siguientes líneas a las observaciones, es decir es un archivo de tipo CSV (Comma Separated Values) donde se registran las calificaciones de preferencia que hacen los usuarios de productos medicinales con una escala de 1 a 5, no necesariamente los usuarios califican a todos los productos. El objetivo de este servicio es contribuir a que el motor de recomendaciones recomiende productos desconocidos a los usuarios en función de las calificaciones de usuarios similares con los datos almacenados y gestionados inicialmente en la capa de datos. La carga de los datos se hace con la función read.csv() del paquete dplyr cargado anteriormente, se le debe indicar la ruta correspondiente donde se debe encontrar físicamente el archivo .csv con los datos correspondientes, este  directorio puede ser un directorio local de una desktop o un almacenamiento en la nube cuando se tenga implementado el servicio de cloud computing. Cuando se carga la data se crea una variable tipo object a la cual se le puede referenciar fácilmente con otras funciones del motor de recomendación, en el caso del proyecto el archivo de datos es calificaciones_productos.csv reprocesado en la capa de datos y el objeto que se crea se ha denominado calificaciones, con la función View del paquete data.table cargado anteriormente se visualiza esta varible object, en el siguiente código en R  se muestra este proceso.

> calificaciones = read.csv("~/calificaciones_productos.csv")

> View(calificaciones)

Con esta base de datos de prueba, se va a construir un motor de recomendación. Para ver el número de filas y de atributos de los datos se usa la función dim () como se muestra a continuación.

> dim(calificaciones)

[1] 31 3

Este resultado indica que la base de datos tiene 31 observaciones(filas) y tiene además 3 variables (columnas). Para ver la estructura de la base de datos se utiliza la función str() en el siguiente comando.

> str(calificaciones)

'data. frame': 31 obs. of 3 variables:

$ Usuario: chr  "Gloria Riquelme" "Gloria Riquelme" "Gloria Riquelme" "Gloria Riquelme"

 $ Producto: chr "Llanten" "Matico" "Achote" "Alcachofa"

 $ calificación: num 3 4 3.5 5 3 3 4 2 3 2 ...

Para crear el motor de recomendación del sistema de recomendación, se usa una matriz donde las filas contienen los usuarios, las columnas contienen elementos de medicina alternativa y las celdas contienen las calificaciones dadas por los usuarios a los elementos. El siguiente servicio de esta capa describe como organizar los datos en un formato que sea útil para compilar el motor de recomendaciones. Los datos actuales contienen una fila que contiene usuario, producto y calificación. Esto tiene que convertirse al formato de matriz que contiene los usuarios como filas, productos como columnas y calificaciones como los valores de celda. Para hacer este proceso se debe asegurar que el paquete reshape2 esté instalado, se usa la función acast() de este paquete que convierte un marco de datos en la representación de matriz. La función acast() de conversión toma el dataset(data-frame) de calificaciones como entrada, convierte Producto como atributo de fila, Usuario como atributo de columna y calificación como valor de resultado. La sintaxis acast (calificaciones, Productose~Usuario, calue.var=”calificación”)) permite hacer este proceso, la función as.data.frame(…) tomo como argumento el resultado de acast(…) y genera la variable object calificaciones_productos como resultado tal como se muestra en el siguiente código.

>calificaciones_productos=as.data.frame(acast(calificaciones,Producto~Usuario, value.var="calificación"))

Para ver la transformación de los datos en el objeto calificaciones_productos usamos la función View() como en el siguiente código:

> View(calificaciones_productos)

Se ve ahora el cálculo de la similitud entre los usuarios. Este es un paso muy importante, ya que se necesita recomendar los productos antes solicitados basados en las calificaciones dadas a estos productos por otros usuarios similares. Hay varias medidas de similitud, como la distancia euclidiana, la similitud del coseno, el coeficiente de Pearson, la distancia Jaccard, etc. Como ejemplo, se muestra a continuación el uso como métrica de similitud el coeficiente de correlación de Pearson, con el objeto de establecer la correlación que existe entre los usuarios. La razón para elegir esta métrica es para determinar cómo están relacionadas entre sí las entradas Usuario y Producto. Este proceso se hace con la función cor(), donde se da como parámetros el object con la data formateada explicado en el apartado anterior, indicándole la dimensión [,1:6] y  “complete.obs” para que trabaje con todas las observaciones. El resultado que da como salida la función cor(…)  es una variable tipo object que se denomina  similitud_usuarios. El código en lenguaje R siguiente calcula la similitud para los usuarios:

>similitud_usuarios=cor(calificaciones_productos[,1:6], use="complete.obs")

> View(similitud_usuarios)

Se muestra el resultado de la correlación entre las variables entre los usuarios, donde se observa por ejemplo que Gavino Salirrosas y Luis Barzola tienen una similitud de 0.9912407, esto indica que ambos usuarios tienen mucha similitud en la preferencia por el uso de determinados productos de medicina alternativa. Respecto a la predicción de productos desconocidos por los usuarios, Un aspecto importante dentro de los sistemas de recomendación lo constituyen las recomendaciones que se hacen a los usuarios de los productos que no fueron calificados por el usuario activo. Como ejemplo, se muestra cómo se puede predecir los productos no calificados de Gabino Salirrosas en base a las calificaciones de otros usuarios que en el pasado usaron o calificaron los productos, esto se hace utilizando las calificaciones dadas por usuarios similares. El algoritmo del motor de recomendación sugiere seguir los siguientes son los pasos para lograr este objetivo. Extraer productos no calificados, se trata de filtrar todos los productos que el Usuario Gabino Salirrosas no ha calificado o no ha usado. Calificaciones similares de los no calificados, Para estos productos extraídos, se separa todas las calificaciones dadas por otros usuarios. Multiplicación de valores de similitud, se trata de multiplicar las calificaciones dadas para estos productos por todos los usuarios que no sean Gabino Salirrosas con los valores de similitud de los Usuarios con Gabino Salirrosas. Sumar y dividir similitudes, en este proceso se debe sumar las calificaciones totales de cada producto y se divide este valor resumido con la suma de los valores de los usuarios de similitud. Veamos como extraer productos no calificados, Para este propósito se usa el paquete data.table y el método setDT(),  data.table es un paquete de R popular que proporciona una versión mejorada de data.frame, que nos permite hacer manipulaciones en los datos con velocidad de aligeramiento. Otra ventaja del paquete data.table es que puede manejar conjuntos de datos muy grandes de hasta 100 GB de datos en RAM. Provee varias operaciones, como la creación de una tabla de datos, una versión mejorada del marco de datos, la sub-configuración de datos, la manipulación de los datos, las uniones, etc.

Entonces se usa el método setDT() disponible en data.table. Las funciones set* de data.table ayudan a manipular los datos de entrada por referencia en lugar de value, es decir, al transformar datos, no habrá ninguna copia física de los datos. En el ejemplo, se extrae los productos que Gabino Salirrosas (el usuario número 3) no ha clasificado. Se utiliza la función setDT() disponible en el paquete data.table para extraer los títulos no clasificados y crear un objeto data.table y data.frame, que se le denomina “calificaciones_usuario”. El método setDT() extrae los valores de columna y los nombres de fila correspondientes y crea un objeto data.frame o data.table de dos dimensiones, se utiliza el siguiente código en lenguaje R.

> calificaciones_usuario = setDT(calificaciones_productos[colnames(calificaciones_productos) [3]],keep.rownames = TRUE)[]

names(calificaciones_usuario)=c('Producto','calificación')

> View(calificaciones_usuario)

Para mostrar los productos que no han sido calificados por el usuario Gabino Salirrosas, se utiliza la función is.na(…) que filtra los  valores NA de la tabla, todo esto se hace con el siguiente conjunto de instrucciones:

>Productos_no_usuario=calificaciones_usuario$Producto[is.na(calificacio    nes_usuario$calificación)]

> Productos_no_usuario

El resultado del último comando da precisamente como resultado todos los productos que el usuario Gabino Salirrosas no ha calificado, como se observa en el siguiente reporte.

[1] "Llanten"    "Manzanilla" "Sávila"

Seleccionados los productos no calificados por el usuario Gabino Salirrosas, para seguir implementando el modelo de recomendación se hace necesario conocer como han calificado a estos productos otros usuarios similares, para eso se debe tomar en cuenta las calificaciones basadas en el conjunto de datos original y el subconjunto de todos los Usuarios que han calificado los productos no calificados. El propósito se consigue implementando el código siguiente, donde %in% actúa como la condición where del lenguaje de consulta SQL.

> ratings_t =calificaciones[calificaciones$Producto %in% Productos_no_usuario,]

> View(ratings_t)

A los resultados obtenidos ahora se procede a añadir una nueva variable denominada similitud, utilizando los valores de similitud de cada Usuario, por ejemplo, si usamos a Gabino Salirrosas, el usuario 3 para este propósito se utiliza el siguiente código.

> ratings_t = merge(x = ratings_t, y = x, by = "Usuario", all.x = TRUE)

> x = (setDT(data.frame(similitud_usuarios[,3]),keep.rownames = TRUE)[])

> names(x) = c('Usuario','similitud')

> View(ratings_t)

Procediendo con el proceso de establecer la recomendación adecuada, ahora se multiplica la calificación con el valor de similitud, y se agrega el resultado como una nueva variable, este propósito se logra con los siguientes comandos.

> ratings_t$sim_rating = ratings_t$calificación*ratings_t$similitud.x

> View(ratings_t)

Dado los resultados, se suma luego todos los valores de calificación para cada Producto calculado en el paso anterior, y luego se divide este valor resumido para cada Producto con la suma de los valores de similitud de cada Usuario, es decir, por ejemplo para el Producto Manzanilla, la calificación de Gabino Salirrosas se calcula sumando todos los valores sim_rating para Manzanilla dividido por la suma de los valores de similitud de todos los Usuarios que han calificado el Producto Manzanilla, decir se hace el siguiente cálculo:

Sumar (2.6802154+0.5718696+2.9737221+1.8489469)

Sumar (0.8934051+0.3812464+0.9912407+0.924473)

Luego dividir el primer resultado entre el segundo resultado da como valor de la división el número 2.53081. Para implementar el cálculo anterior para todos los Productos de la base de daros, se hace en el lenguaje R utilizando dos funciones disponibles en el paquete dplyr, denominadas group_by(…) y summarise(…).Recordar que paquete dplyr en lenguaje R es utilizado para manipulaciones de datos y es muy útil junto con data.table para el análisis exploratorio y la manipulación de datos. La función summarise(…) está disponible en el paquete dplyr y se usa para resumir los resultados según el argumento que se le proporcione. La función group_by(…) se utiliza para agrupar datos de una o más variables. El operador %>%  disponible en el paquete dply es una función muy útil que se utiliza para agrupar varios códigos. En el código mostrado a continuación se usa el operador %>% para agrupar las funciones group_by(…) y summarise(…) y calcular los resultados sin escribir resultados intermedios:

>result = ratings_t %>% group_by(Producto) %>% summarise(sum(sim_rating)/sum(similitud))

>View(result)

Con el análisis de datos hecho por el motor de recomendaciones en los servicios mostrados anteriormente, se puede ahora hacer las recomendaciones de los productos adecuados, ahora se puede recomendar estos nuevos

Productos, para lo cual se debe considerar las calificaciones para las cuales son mayores que las calificaciones medias dadas por Gabino Salirrosas.

Por ejemplo, para calcular la calificación media dada por Gabino Salirrosas a los tres productos que no recomendó se usa la función mean(…) como se puede observar en el siguiente código. 

> mean (calificaciones_usuario$calificación, na.rm = T)

[1] 3.166667

>

Obteniéndose como calificación media el valor 3.166667, luego ahora que sabemos que la calificación media de Gabino Salirrosas es 3.16 aproximadamente, podemos recomendar Productos con calificaciones mayores que los valores medios. A partir de los valores obtenidos, podemos recomendar el Producto Manzanilla, que está por encima de su valor medio, no considerándose conveniente recomendar los otros productos por no superar la barrera del valor medio de recomendación. La recomendación hecha para el usuario 3 Gabino Salirrosas explicado anteriormente, se puede generalizar para cualquier usuario, para lo cual el usuario debe ingresarse como un parámetro a la función que genera recomendaciones, convirtiéndose en el usuario activo dentro de las capas del sistema

Las recomendaciones de generación antes mencionadas para todos los usuarios se pueden ampliar fácilmente escribiendo una función en Lenguaje R de la siguiente manera:

> generateRecommendations <- función(userId){

+    rating_critic = setDT(calificaciones_productos[colnames(calificaciones_productos) [userId]], keep. rownames = TRUE) []

+    names(rating_critic) = c('Producto','calificación')

+    titles_na_critic = rating_critic$Producto[is.na(rating_critic$calificación)]

+    ratings_t =calificaciones[calificaciones$Producto %in% titles_na_critic,]

+    #add similarity values for each user as new variable

+    x = (setDT(data.frame(similitud_usuarios[,userId]),keep.rownames = TRUE) [])

+    names(x) = c('Usuario','similitud')

+    ratings_t = merge(x = ratings_t, y = x, by = "Usuario", all.x = TRUE)

+    #mutiply rating with similarity values

+    ratings_t$sim_rating = ratings_t$calificación*ratings_t$similitud

+    #predicting the non rated titles

+ result = ratings_t %>% group_by(Producto) %>% summarise(sum(sim_rating)/sum(similitud))

+    return(result)

+ }

Considerando el parámetro userId como el número de usuario, se muestra a continuación la ejecución de las recomendaciones para los usuarios de prueba la función generateRecomendations(…).

Para userId =1 se tiene:

> generateRecommendations(1)

`summarise()` ungrouping output (override with `.groups` argument)

# A tibble: 0 x 2

# ... with 2 variables: Producto <chr>, `sum(sim_rating)/sum(similitud)` <dbl>

 

Para userId = 2 se tiene:

> generateRecommendations(2)

`summarise()` ungrouping output (override with `.groups` argument)

# A tibble: 1 x 2

  Producto `sum(sim_rating)/sum(similitud)`

  <chr>                               <dbl>

1 Llanten                              2.86

Para userId =3 se tiene:

> generateRecommendations(3)

`summarise()` ungrouping output (override with `.groups` argument)

# A tibble: 3 x 2

  Producto   `sum(sim_rating)/sum(similitud)`

  <chr>                                 <dbl>

1 Llanten                                2.83

2 Manzanilla                          2.53

3 Sávila                                  3.35

Para userId =4  se tiene:

> generateRecommendations(4)

`summarise()` ungrouping output (override with `.groups` argument)

# A tibble: 1 x 2

  Producto   `sum(sim_rating)/sum(similitud)`

  <chr>                                 <dbl>

1 Manzanilla                          2.41

Para userId =5 se tiene:

> generateRecommendations(5)

`summarise()` ungrouping output (override with `.groups` argument)

# A tibble: 0 x 2

# ... with 2 variables: Producto <chr>, `sum(sim_rating)/sum(similitud)` <dbl>

Para userId =6 se tiene:

> generateRecommendations(6)

`summarise()` ungrouping output (override with `.groups` argument)

# A tibble: 0 x 2

# ... with 2 variables: Producto <chr>, `sum(sim_rating)/sum(similitud)` <dbl>

4. CONCLUSIÓN O CONSIDERACIONES FINALES

Se concluye que el prototipo de sistema de recomendación construido que, aunque con una base de datos pequeña propia de una etapa de entrenamiento y a la luz de las encuestas de satisfacción del usuario si contribuyen con sus recomendaciones a mejorar la salud de la población. Se concluye que el sistema de recomendación a través de su módulo de recomendación para la salud física si proporciona recomendaciones adecuadas para aliviar las enfermedades tipificadas como las que afectan la salud física, Si bien es cierto se ha construido la tipificación de la enfermedad  como salud emocional y se han construido un módulo de recomendación para esta tipificación y a la luz de los resultados de las encuestas,  no se puede afirmar que el sistema de recomendación tenga una buena performance en este sentido. Pero tampoco podemos negar la hipótesis. Puesto que el sistema solo ha sido probado en la etapa de capacitación. No hay suficiente información para poder inferir que el sistema recomendador pueda apoyar en la mejora de la salud mental, pero también no se niega esta hipótesis debido al carácter de aprendizaje en etapa de entrenamiento del sistema recomendador.

5.  LISTA DE REFERENCIAS

Aggarwal, C. (2016). Model-Based Collaborative Filtering. In Recommender Systems (New York,).

Almaraz Pérez, A., & Goddard Close, J. (2015). Sistemas de recomendación. Komputer Sapiens, Año VII, V, 12–15.

Alvarado-García, J. R., Hernández-García, J. V., Villatoro-Tello, E., Ramírez-de-la-Rosa, G., & Sánchez-Sánchez, C. (2015). Clasificación de música basado en aprendizaje semi-supervisado. Researh in Computing Science, 94(1), 97–109.

Aggarwal, C. (2016). Model-Based Collaborative Filtering. In Recommender Systems (New york). https://doi.org/10.1007/978-3-319-29659-3_3

Almaraz Pérez, A., & Goddard Close, J. (2015). Sistemas de recomendación. Komputer Sapiens, Año VII, V, 12–15.

Alvarado-Garcia, J. R., Hernández-García, J. V., Villatoro-Tello, E., Ramírez-de-la-Rosa, G., & Sánchez-Sánchez, C. (2015). Clasificación de música basado en aprendizaje semi-supervisado. Researh in Computing Science, 94(1), 97–109.

Alvarez, J. M., Polo, L., Jimenez, W., Abella, P., & Labra, J. E. (2011). Application of the spreading activation technique for recommending concepts of well-known ontologies in medical systems. 2011 ACM Conference on Bioinformatics, Computational Biology and Biomedicine, BCB 2011, 1(1), 626–635.

Arias, A. G. (2013). Notes for and history about alternative medicine in Cuba - II. Magnetic and electromagnetic therapies. Anales de La Academia de Ciencias de Cuba, 3(2), 1–20

Arias, J., Fernandez, A., & Diaz, R. (2012). Recommender Systems for the Social Web. In Springer-Verlag Berlin Heidelberg 2. Springer-Verlag Berlin Heidelberg.

Badillo, L. (2018). Plan de negocios para la creación de una institución prestadora de servicios de salud especializada para el alivio del dolor con un enfoque en la medicina alternativa cubana (Vol. 53).

Barranco, M., Pérez, L., & Martínez, L. (2006). Un Sistema de Recomendación Basado en Conocimiento con Información Lingüística Multiganular. SIGEF XIII-The XIII Congress of International Association for Fuzzy-Set Management and Economy.

Batallanos, C., Quispe, O., & Castro-Cuba, S. (2017). Modelo de sistema de recomendación de objetos para incentivar el desarrollo del pensamiento computacional. Referencia Pedagógica, 1(1), 96–108. Retrieved from

Bivins, R. (1998). Alternative medicine. In Scientist (Vol. 12).

Burgos, A. N., & Morales, M. A. (2010). Estudio cualitativo del uso de plantas medicinales en forma complementaria o alternativa con el consumo de fármacos en la población rural de la ciudad de Bulnes, Región del Bío-Bío, Chile. Boletin Latinoamericano y Del Caribe de Plantas Medicinales y Aromaticas, 9(5), 377–387.

Caballero, B. (2005). Human Nutrition Second Edition.

Carvajal, V., Camila, M., Vergel, V., & Otero, R. (2017). Diseño de un aplicativo web que recomiende asignaturas electivas a estudiantes de ingeniería industrial de la Pontificia Universidad Javeriana. Pontificia Universidad Javerina.

Chan, G. K. L., Wu, R., Chen, V. P., Zhu, K. Y., & Du, Y. (2018). Quality Control on Herbal Medicine and Its Application. Evidence-Based Complementary and Alternative Medicine, 2018.

Christakou, C., Lefakis, L., Vrettos, S., & Stafylopatis, A. (2005). A movie recommender system based on semi-supervised clustering. Proceedings - International Conference on Computational Intelligence for Modelling, Control and Automation, CIMCA 2005 and International Conference on Intelligent Agents, Web Technologies and Internet, 2, 897–903.

Christon, L. M., Mackintosh, V. H., & Myers, B. J. (2010). Use of complementary and alternative medicine (CAM) treatments by parents of children with autism spectrum disorders. Research in Autism Spectrum Disorders, 4(2), 249–259.

Cleger, S. (2012). Diseño Y Validación De Modelos Para Sistemas De Recomendación. Universidad de Granada, España.

Colombo, L. (2017). Tecnologías para la recomendación semántica y filtrado colaborativo de contenidos y servicios (Universidad de Murcia. España).

Criado González, M. (2018). Análisis e implementación de un sistema de recomendación para la lista de la compra. Universidad Carlos III, Madrid, España.

De, S., Bárbaro, E., Sust, U., Javier, A., & Cuevas, S. (2017). Arte Semantic recommendation systems : A State-of-the-Art Survey. 11(2), 189–206.

Dessì, D., Reforgiato Recupero, D., Fenu, G., & Consoli, S. (2019). A recommender system of medical reports leveraging cognitive computing and frame semantics. In Springer Nature Singapore (Vol. 149).

Ernst, E. (2019). Alternative Medicine - A Critical Assessment of 150 Modalities. In Springer Nature Switzerland. Springer Nature Switzerland.

Escamilla González, O., & Marcellin Jacques, S. (2017). Estado del arte en los sistemas de recomendación. Research in Computing Science, 135(1), 25–40.

Espín, V. (2016). Sistemas de recomendación semánticos pra la compartición de conocimiento y la explotación de tesauros: Un enfoque práctico en el ámbito de los sistemas nutricionales. Universidad de Granada. España.

Falk, K. (2019). Practical Recommender Systems. In Manning Publications Co. USA.

Felfernig, A., Boratto, L., Stettinger, M., & Tkalcic, M. (2018). Group Recommender Systems. An Introduction. In SpringerBriefs in Electrical and Computer Engineering.

Fernandes Tavares, T., & Collares, L. (2020). Ethnic music exploration guided by personalized recommendations: system design and evaluation. SN Applied Sciences, 2(4). https://doi.org/10.1007/s42452-020-2318-y

Fesenmaier, D., Wober, K., & Werthner, H. (2006). Destination Recommendation Systems Behavioural Foundations and Applications Edited. In CAB International.

Fetrow, C. W. (2001). Professional’s handbook of complementary & alternative medicines.

Font, M. S. (2009). Sistemas de recomendación para webs de información sobre la salud. Univeridad Politécnica de Cataluña, España.

García, F. J., & Gil, A. B. (2015). Personalización de Sistemas de Recomendación. Universidad de Salamanca, España, (February).

Gedikli, F. (2013). Recommender Systems and the social web: laberaging tagging for Recomender Systems. In Springer Fachmedien Wiesbaden 2013.

Gorakala, S. K., & Usuelli, M. (2015). Building a Recommendation System with R. In Pack Publishing Ltd. https://doi.org/10.1007/s11920-006-0082-3

Gorakola, S. (2015). Building recomendation engines. In Dk (Vol. 53). https://doi.org/10.1017/CBO9781107415324.004

Hoens, T. R., Blanton, M., Steele, A., & Chawla, N. V. (2013). Reliable medical recommendation systems with patient privacy. ACM Transactions on Intelligent Systems and Technology, 4(4), 1–31.

Horta, F., & Gonzales, A. (2013). Los ensayos clínicos y la medicina alternativa. Elementos, 89(9), 29–38.

Huamán, D. G. (2019). Sistema de recomendación de libros basado en ontologías asociadas a tesauros: el caso de la Biblioteca de la Facultad de Ingeniería de Sistemas e Informática de la Universidad Nacional Mayor de San Marcos (Universidad Nacional Mayor de San Marcos, Lima). Retrieved from

Ibarra, R. (2019). SOTESTER – Sistema de recomendación de técnicas de testing de software: Un enfoque colaborativo. Universidad Nacional Mayor de San Marcos, Lima.

Izaguirre, E. (2015). Sistemas de recomendación en Apache Spark (Universidad Pública de Navarra. España). Retrieved from http://academica-e.unavarra.es/handle/2454/19015%5Cnhttp://academica.unavarra.es/bitstream/handle/2454/19015/ElenaIzaguirre_memoria_TFG.pdf?sequence=1

Jain, R. K., Goyal, S., Bhat, S. N., Rao, S., Sakthidharan, V., Kumar, P. Jindal, G. D. (2018). Development of Software for Automatic Analysis of Intervention in the Field of Homeopathy. Journal of Alternative and Complementary Medicine, 24(5), 422–430.

Jannach, D., Zanker, M., Felfering, A., & Friedrich, G. (2011). Recommender Systems And Introduction. In Cambridge university press.

Kane, M. (1390). Complementary and alternativer medicine. 368.

Khalid, O., Khan, S. U., & Zomaya, A. Y. (2019). Big Data Recommender Systems Volume 2: Application Paradigms. In The Institution of Engineering and Technology, London, United Kingdom. The Institution of Engineering and Technology, London, United Kingdom.

KUmar, M Prabhu, J. (2019). A case study on recomendation systems based on Big Data. Sipringer Nature Singapure, 407–417. https://doi.org/10.1007/978-981-13-1927-3

Kyung-Hyan, Y., Ulrike, G., & Markus, Z. (2013). Persuasive Recommender Systems : Conceptual Background and Implications. In SpringerBriefs in Electrical and Computer Engineering. https://doi.org/10.1007/s13398-014-0173-7.2

Lage, R. G., Durao, F., Dolog, P., & Stewart, A. (2011). Applicability of recommender systems to medical surveillance systems. International Conference on Information and Knowledge Management, Proceedings, 1–6.

Leiva Olivencia, J., Guevara Plaza, A., Rossi, C., & Aguayo, A. (2014). Realidad aumentada y sistemas de recomendación grupales: Una nueva perspectiva en sistemas de destinos turísticos. Estudios y Perspectivas En Turismo, 23(1), 40–59.

Leyva, M., & Smarandache, F. (2018). Modelo de Recomendación Basado en Conocimiento y Números SVN. Neutrosophic Computing and Machine Learning, 1(1), 29–35.

Lezaeta, M. (2006). La Medicina Natural Al Alcance de Todos. Kier, Argentina, 28–30.

Longe, J. (2005). The Gale Encyclopedia of alternative medicine. In Thomson Gale. Retrieved from http://www.gale.com

Mackenzie, E. R., & Rakel, B. (2006). Complementary and alternative medicine for older adults: a guide to holistic approaches to healthy aging. In Springer publishing company (Vol. 44). https://doi.org/10.5860/choice.44-1552

Manouselis, N., Drachsler, H., Verbert, K., & Duval, E. (2013). Recommender Systems for Learning. In SpringerBriefs in Electrical and Computer Engineering.

Manouselis, N., Verbert, K., Drachsler, H., & Santos, O. C. (2010). Recommender systems for Technology Enhanced Learning Researh Trends and Applications. In Springer Science+Business Media New York.

Mashingaidze, K., & Backhouse, J. (2017). The relationships between definitions of big data, business intelligence and business analytics: A literature review. International Journal of Business Information Systems, 26(4), 488–505. Mendoza Olguín, G., Laureano De Jesús, Y., & Pérez de Celis Herrero, M. C. (2019). Métricas de similaridad y evaluación para sistemas de recomendación de filtrado colaborativo. Revista de Investigación En Tecnologías de La Información, 7(14), 224–240. https://doi.org/10.36825/riti.07.14.019

Micozzi, M. (2015). Fundamentals of Complementary and Alternative Medicine. In Saunders, an imprint of Elsevier Inc. (Vol. 313). https://doi.org/10.1136/bmj.313.7049.122a

Mitra, S., & Dash, R. (2018). Natural Products for the Management and Prevention of Breast Cancer. Evidence-Based Complementary and Alternative Medicine, 2018. https://doi.org/10.1155/2018/8324696

Montalvo, L. (2019). Implementación de un sistema de recomendación en base a la naturaleza del paciente geriátrico.

Mora, E. (n.d.). Medicina Alternativa Indigenas Y Nomadas Sabios.

Morales, M. (2011). Modelos de Recomendación Basados en Redes Bayesianas. Universidad de Granada. España.

Moreno, J. L. B. (2003). Las Medicinas No Convencionales. Humanitas, Humanidades Médicas., 1, Num 2(January 2003), 31–40. Retrieved from http://www.fundacionmhm.org/pdf/Numero2/Articulos/articulo3.pdf

Murdoch, D. (2019). Encyclopedia of foods. Journal of Chemical Information and Modeling, 53(9), 1689–1699. https://doi.org/10.1017/CBO9781107415324.004

Navarra, T. (2004). The Encyclopedia of Complementary and Alternative Medicine.

Negrete, M. (2012). Búsqueda de Equivalentes Diagnósticos para el Síndrome de Burnout desde la Medicina Tradicional China y Acupuntura como una Alternativa Terapéutica para Profesionales del Área de la Salud.

Newman, A. (2009). Recommender Systems for Information Providers. Designing Customer Centric Paths to Information. In Physica-Verlag Heidelberg. https://doi.org/10.1007/978-3-7908-2134-5

Onyiapat, J. L. E., Okoronkwo, I. L., & Ogbonnaya, N. P. (2011). Complementary and alternative medicine use among adults in Enugu, Nigeria. BMC Complementary and Alternative Medicine, 11, 7–12. https://doi.org/10.1186/1472-6882-11-19

Ortega, F. (2015). Incorporating Group Recommendations to Recommender Systems : Alternatives and Performance. Universidad Politécnica de Madrid. España.

Peiró, P. S., & Lucas, M. O. (2007). La medicina naturista, una visión de la investigación científica en los últimos años. Medicina Naturista, 1(2), 68–75.

Pelletier, K. (2000). The best alternative medicine. In Kenneth R. Pelletier, Inc. (Vol. 74).

Potenziani, J., & Potenziani, S. (2014). Medicina Alternativa-Complementaria en Enfermedades Prostaticas. Terapia Biológica. National Society of History of Medicine of Venezuela, (September).

Quintero Barbón, C. M., & Beltrán Dussan, E. H. (2015). La medicina alternativa y complementaria en los programas de pregrado de medicina. 117. Retrieved from http://www.bdigital.unal.edu.co/48861/1/53121517.2015.pdf

Raghuwanski, S., & Pateriya, R. (2019). Recomendation Systems: Techniques, Challenges, Application, and Evaluation. Soft Computing for Problem Solving, Advances in Intelligent Systems and Computing, 2(1), 151–163. https://doi.org/10.1007/978-981-13-1595-4

Resnick, P., & Varian, H. R. (1997). Recommender systems. Communications of the ACM, 40(3), 56–58. https://doi.org/10.1145/245108.245121

Ricci, F., Rokach, L., & Shapira, B. (2015). Recommender System Handbook. In Springer Science+Business Media New York (Second Edi, Vol. 32). https://doi.org/10.1016/0002-9343 (62)90176-6

Robillard, M., Maaleij, W., Walker, R. J., & Zimmermann, T. (2014). Recommendation Systems in Software Engineering. In Springer-Verlag Berlin Heidelberg. https://doi.org/10.1007/978-3-642-45135-5

Rodríguez Vargas, E. (2013). Sistemas de recomendación sensibles al contexto con bases de datos NoSQL. (Tesis de maestría) Universidad Complutense de Madrid.

Rodríguez, A., Jiménez, E., Fernández, J., Eccius, M., Gómez, J. M., Alor-Hernandez, G. Laufer, C. (2009). SemMed: Applying semantic web to medical recommendation systems. Proceedings of the 1st International Conference on Intensive Applications and Services, INTENSIVE 2009, 47–52. https://doi.org/10.1109/INTENSIVE.2009.12

Ruban, A., & Rodioniva, T. (2012). Herbal medicine among complementary and alternative medicine methods. Bulletin of Medical Internet Conferences (ISSN, 2(11), 6150.

Sakagami, H. (n.d.). Alternative medicine.

Sánchez, C. (2017). HealthRecSys: Sistema Recomendador para la salud. Retrieved from https://idus.us.es/xmlui/bitstream/handle/11441/76323/HealthRecSys_Sistema recomendador en Salud_DEF.pdf?sequence=1&isAllowed=y

Sanjuan Martínez, Ó., Torres Franco, E., Castán Rodríguez, H., González Crespo, R., Pelayo G-Bustelo, B. C., & Rodríguez Baena, L. (2008). Viabilidad de la aplicación de Sistemas de Recomendación a entornos de e-learning. SPDECE 08. V Simposio Pluridisciplinar Sobre Diseño y Evaluación de Contenidos Educativos Reutilizables.

Sergio Alcaraz Corona, M. A. B. J. (2015). Sistema de recomendación vocacional en línea. Revista Iberoamericana de Las Ciencias Computacionales e Informática, 5(9), 1–16. Retrieved from http://www.reci.org.mx/index.php/reci/article/viewFile/43/190

Shah, D., Philip, J., Panpatil, A., Shaikh, A., & Mishra, S. (2019). Recomender System for shoping: A design for Smart Malls. Springer Nature Singapore, 839(June 2019), 283–295. https://doi.org/10.1007/978-981-13-1274-8

Sierra, P. (2015). Descifrando la cultura de consumo detrás del uso de la Medicina alternativa.

Singh, M., Sahu, H., & Sharma, N. (2019). A Personalizad Context-Aware Recommender System based on User-item preferences. Springer Nature Singapure, 839(June 2019), 357–374. https://doi.org/10.1007/978-981-13-1274-8

Singh, P., Ahuja, S., & Jain, S. (2017). Latest Trends in Recommender Systems. Advances in Data and Information Sciences, 1(39), 196–210.

Sinhg, P. (2019). Machine Learning with PySpark - Review. In Apress (Ed.), Pramod Singh. Bangalore, Karnataka, India. https://doi.org/https://doi.org/10.1007/978-1-4842-4131-8

Sofowora, A. (1996). Research on medicinal plants and traditional medicine in Africa. Journal of Alternative and Complementary Medicine, 2(3), 365–372. https://doi.org/10.1089/acm.1996.2.365

Solario del carpio, J. (2015). Determinando factores para el desarrollo de un sistema de recomendación. Universidad Católica de Santa María, Arequipa.

Spencer, J. (2003). Complementary and Alternative Medicine: An Evidence- Based Approach was. In Mosby, Inc. https://doi.org/10.16309/j.cnki.issn.1007-1776.2003.03.004

Stark, B., Knahl, C., Aydin, M., & Elish, K. (2019). A literature review on medicine recommender systems. International Journal of Advanced Computer Science and Applications, 10(8), 6–13. https://doi.org/10.14569/ijacsa.2019.0100802

Symeonidis, P., & Zioupos, A. (2016). Matrix and Tensor Factorization Techniques for Recommender Systems. In Springer International Publishing AG Switzerland.

Szigethi, M. (2014). Medicina alternativa/complementaria en la formación de los alumnos de medicina de la Universidad de Chile. (Tesis doctoral) Universidad Nacional de Chile.

Tarnowska, K., Ras, Z. W., & Daniel, L. (2020). Recommender System for Improving Customer Loyalty. In Springer Nature Switzerland AG 2020 (Vol. 55). https://doi.org/10.1007/978-3-030-13438-9

Terán Tamayo, L. F. (2014). SmartParticipation. A Fuzzy-Based Recommender System for Political Community-Building. In Springer International Publishing Switzerland 2014. https://doi.org/10.1007/978-3-319-06551-9

Thong, N. T., & Son, L. H. (2015). HIFCF: An effective hybrid model between picture fuzzy clustering and intuitionistic fuzzy recommender systems for medical diagnosis. Expert Systems with Applications, 42(7), 3682–3701. https://doi.org/10.1016/j.eswa.2014.12.042

Trudeau, K. (2004). Natural cures "They don´t want you to know about.

Uchyigit, G., & Ma, M. (2008). Personalization techniques and recommender systems series. In World Scientific Publishing Co. Pte. Ltd. 5. World Scientific Publishing Co. Pte. Ltd. 5.

Utrera, E., & Simón, A. (2017). Sistemas de recomendación semánticos: Una revisión del Estado del Arte. Revista Cubana de Ciencias Informáticas, 11(2), 189–206.

Vaca, J. (2017). Sistema de recomendación de tareas basado en competencias educativas registradas en un portfolio electrónico. Retrieved from http://dehesa.unex.es/handle/10662/5553

Valcarce, D. (2019). Information Retrieval Models for Recommender Systems. Universidad de Coruña. Easpaña.

Van den Herick, J., Rocha, A., & Felipe, J. (2018). Agents and Artificial Intelligence. Springer International Publishing AG, 511–516. https://doi.org/10.1145/2793107.2810310

Vera, J. (2016). Modelo de aprendizaje para sistemas de recomendación, Caso: Curso de programación WEB. Universidad Nacional de San Agustín, Arequipa.

Vera, J., Mamani, A. O., & Villalba, K. (2017). Modelo de sistema de recomendación de Objetos de Aprendizaje en dispositivos móviles, caso: Desarrollo del pensamiento computacional. Revista Referencia Pedagógica, 5(1), 96–108. https://doi.org/https://doi.org/10.1234/rrp.v5i1.120

Victor, P., Cornelis, C., & De Cock, M. (2011). Trust Networks for Recommender Systems. In Atlantis Press publications. Atlantis Press publications.

Villanueva, D. (2015). Diseño de un modelo conceptual multi-dominio para recomendaciones mediante el filtrado de información semántica en los medios sociales. Universidad Carlos III de Madrid.

Whorton, J. (2012). Nature Cures. In Psychology Applied to Work: An Introduction to Industrial and Organizational Psychology, Tenth Edition Paul (Vol. 53). https://doi.org/10.1017/CBO9781107415324.004

Wildman, R. E. C., & Medeiros, D. M. (2014). Advanced Human Nutrition. In Jones & Bartlett Learning, LLC, an Ascend Learning Company. https://doi.org/10.1201/b16554

Yago, H. (2019). Una propuesta de sistema de recomendación basado en competencias y modelado del estudiante ontológico. Universidad de Alcalá. España.

Yoosooka, B., & Chomchaiya, S. (2015). Medication recommender system. Proceedings 2015 International Conference on Science and Technology, TICST 2015, 313–317. https://doi.org/10.1109/TICST.2015.7369377

Zhao, Z., Zhou, L., & Zhang, T. (2020). Intelligent Recommendation System for Eyeglass Design. Advances in Intelligent Systems and Computing, pp. 402–411. https://doi.org/10.1007/978-3-030-20441-9_42