DEV Community

Cover image for C贸mo crear un modelo de recomendaci贸n basado en machine learning.
Elizabeth Fuentes L for AWS

Posted on • Updated on

C贸mo crear un modelo de recomendaci贸n basado en machine learning.

馃嚮馃嚜馃嚚馃嚤 Dev.to Linkedin GitHub Twitter Instagram Youtube

github: https://github.com/aws-samples/aws-recomendador-anime/tree/main/recomendador-de-anime

Recomendaciones personalizadas de anime



Blog original --> link

Conoc铆 los animes cuando estaba en la universidad, entre amigos nos recomend谩bamos los m谩s populares y nuevos. Al terminar la universidad tambi茅n acabaron los momentos para hablar de animes, qued茅 desactualizada y dej茅 de verlos.

Recientemente descubr铆 un anime que me encanto, quer铆a ver otro similar y a falta de los momentos universitarios record茅 los modelos de recomendaci贸n basados en Machine Learning (ML) utilizados en muchas aplicaciones, donde mejoran resultados entregando predicciones en forma de sugerencias personalizadas a cada usuario y, pueden disminuir los costos de promoci贸n ofreciendo recomendaciones con gran probabilidad de aceptaci贸n.

Algunos ejemplos de recomendaciones personalizadas son:

  • Las recomendaciones de series o pel铆culas en las plataformas de Video a Demanda (Video On Demand = VoD) son basadas en el historial de contenido.
  • Al buscar productos determinados en un comercio electr贸nico, por ejemplo Amazon.com entrega sugerencias basada en el historial de lo que se haya buscado o comprado.

Este es el primer episodio de una serie de art铆culos llamados 鈥淩ecomendaciones personalizadas de anime鈥 donde vamos a construir una aplicaci贸n web capaz de entregar una experiencia personalizada de recomendaciones de animes nuevos de preferencia del usuario y, a medida que la utilice con mayor frecuencia, va a conocer sus gustos casi a la perfecci贸n.

Esta serie consistir谩 en los siguientes episodios:

隆Comencemos!

Crear un proyecto para generar recomendaciones personalizadas normalmente tiene un alto nivel de complejidad por los skills y tecnolog铆as involucradas. En este articulo utilizaremos Amazon Personalize para convertirlo en algo sencillo sin necesidad de conocimientos avanzados de ML.


Amazon Personalize:

Es un servicio basado en la misma tecnolog铆a de ML utilizada por Amazon.com, permite entrenar modelos de personalizaci贸n y obtener recomendaciones relevantes, utiliza t茅cnicas de Deep Learning y no requiere tener experiencia en ML

Personalize brinda un 芦servicio de motor de recomendaciones entrenado con tus propios datos禄, listo para entrenar, disminuyendo la carga de un proyecto de ML completo y con resultados m谩s r谩pidos (comparados con un proyecto tradicional de Machine Learning). Adem谩s, ofrece una capa gratuita 馃槈.

驴C贸mo funciona Amazon Personalize? 馃

Image description
Fig. 1 Funcionamiento Amazon Personalize.

  1. Debes proporcionar datos sobre usuarios e 铆tems para realizar la personalizaci贸n. Los datos que utilizamos para modelar en Personalize son de tres tipos:

a. Interactions DataSet(obligatorio): consiste en las interacciones de los usuarios con los 铆tems, por ejemplo, clics, compras, visualizaciones, calificaciones.
b. Item DataSet (opcional): informaci贸n de los 铆tems, tales como categor铆a o g茅nero.
c. Users DataSet (opcional): datos de los usuarios como edad o g茅nero.

  1. Detr谩s de c谩maras, Amazon Personalize autom谩ticamente:
    a. Inspecciona los datos.
    b. Identifica las variables m谩s significativas.
    c. Selecciona los algoritmos adecuados, entrena y optimiza modelos candidatos. Seleccionando el modelo con mejor desempe帽o.
    d. Almacena el modelo entrenado.

  2. Despu茅s del entrenamiento, Amazon Personalize permite desplegar el modelo entrenado para hacer inferencias a trav茅s de una API.

Image description
Fig. 2 Recursos de Amazon Personalize.

Y, ahora me detengo a explicarte los recursos que utiliza Amazon Personalize y como se relacionan con los t茅rminos de Machine Learning (Fig.2)

Recipe (Receta): **Distintos casos de uso para recomendaci贸n. Cada uno aprende algo distinto de los datasets, por ejemplo, recomendaciones de 铆tems similares o recomendaciones para usuarios. El equivalente a un algoritmo de aprendizaje de Machine Learning.
**Solution (Soluci贸n):
El modelo que utilizaremos para realizar predicciones.
Solution Version (Versi贸n de Soluci贸n): El resultado de la soluci贸n despu茅s del entrenamiento del modelo. De acuerdo a los conceptos de ML, es el modelo que ya aprendi贸 de los datos y puede entregar recomendaciones.
Campaign (Campa帽a): Es como Amazon Personalize llama a un modelo en l铆nea que entrega recomendaciones en una modalidad request-response, como una API.


El proyecto 馃懛馃徎: Recomendaciones personalizadas de Anime

Este primer episodio est谩 basado en Personalize POC Guide, utilizaremos el servicio de Amazon Personalize para entrenar un modelo de recomendaciones con los datos de Anime Recommendation Database 2020 de kaggle, utilizando las interacciones que han tenido los usuarios con los animes y, otros datos disponibles como Genero y Calificaci贸n.

Pre-requisitos

  • Una Cuenta AWS
  • Conocimientos b谩sicos en Python.

Manos a la obra 馃殌 馃懇馃徎鈥嶐煔

Paso 1: Crear una instancia de Notebook de Amazon SageMaker

Amazon SageMaker Notebook es una instancia de Amazon Elastic Compute Cloud (Amazon EC2) completamente administrada con los paquetes necesarios para crear un Notebooks de Jupyter

Para crearlo sigue el Paso 1 y 2 del tutorial Crear, entrenar e implementar un modelo de Machine Learning, en el Paso 2 selecciona la instancia ml.t3.medium.

Recuerda detener el notebook de SageMaker cuando no lo estes usando. No perder谩s informaci贸n, liberas el recurso sin gastar innecesariamente.

Paso 2: Agrega la pol铆tica al AWS Identity and Access Management (IAM) al IAM Role de Amazon SageMaker para interactuar con Amazon Personalize

Los permisos al notebook de SageMaker permitir谩n crear el rol IAM para interactuar con Amazon Personalize y Amazon Simple Storage Service (S3).

  1. En el lado izquierdo del panel de la consola de SageMaker, selecciona Bloc de notas -> Instancias de bloc de notas. 2.Selecciona la instancia creada en el paso anterior y en Permisos y cifrado selecciona el hyperlink del ARN del rol de IAM (ver Fig.3), se abrir谩 una nueva p谩gina de IAM.

Image description
Fig. 3 ARN del rol de IAM hyperlink.

  1. En la nueva p谩gina, selecciona A帽adir permisos y luego Crear pol铆tica insertada.
  2. Selecciona JSON, copia y pega el texto a continuaci贸n y sustituye TU-ID-CUENTA por el ID de tu cuenta:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "iam:CreateRole",
                "iam:AttachRolePolicy"
            ],
            "Resource": "arn:aws:iam::TU-ID-CUENTA:role/*"
        }
    ]
}
Enter fullscreen mode Exit fullscreen mode
  1. Selecciona Revisar la pol铆tica, escribe el Nombre IAM-W-ROLE, y selecciona Crear una pol铆tica.
  2. Selecciona nuevamente A帽adir permisos y esta vez Asociar pol铆ticas.
  3. En el buscador escribe AmazonPersonalizeFullAccess, presiona la tecla Enter y selecciona el cuadrado de la pol铆tica.
  4. Quita el filtro anterior, escribe en el buscador AmazonS3FullAccess, presiona la tecla Enter y selecciona el cuadrado de la pol铆tica.
  5. Selecciona Asociar pol铆ticas.
  6. Al finalizar deber铆as ver 5 pol铆ticas en el IAM rol (Fig. 4).

Image description
Fig. 4 Pol铆ticas en IAM rol.

Paso 3: Clonar el repositorio de GitHub y descargar el dataset

Abre JupyterLab en el jupyter notebook creado en el Paso 1, luego accede a la terminal y copia lo siguiente:

cd SageMaker/

git clone https://github.com/aws-samples/aws-recomendador-anime_
Enter fullscreen mode Exit fullscreen mode

Image description
Fig. 5 Clonaci贸n de repositorio exitosa.

Una vez listo (Fig. 5), podr谩s acceder al c贸digo de este proyecto (Fig. 6).

Para descargar los datos de kaggle necesitas un API Token, gen茅ralo siguiendo estos pasos:

  1. Crear una cuenta en https://www.kaggle.com. Es una buena fuente de datasets para seguir experimentando en futuros proyectos.
  2. Ve al men煤 de la cuenta: https://www.kaggle.com//account
  3. Descarga el API Token (json) en 鈥Create New API Token鈥 (Fig. 7).

Image description
Fig. 7 Descargar API Token de kaggle

Sube el archivo kaggle.json a la carpeta /home/ec2-user/.kaggle del notebook de SageMaker:

  1. Arrastra el archivo a la ventana del notebook de SageMaker y d茅jalo en la carpeta recomendador-de-anime.

Image description
Fig. 8 kaggle.json en el notebook de SageMaker

  1. Abre el terminal y ejecuta las siguiente l铆neas:
mv aws-recomendador-anime/recomendador-de-anime/kaggle.json  /home/ec2-user/.kaggle
chmod 600 /home/ec2-user/.kaggle/kaggle.json
Enter fullscreen mode Exit fullscreen mode

Luego, accede a la carpeta aws-recomendador-anime -> recomendador-de-anime y abre el notebook 01_Descarga_Dataset.ipynb y ejecuta los comandos para descargar el dataset en la carpeta anime-data (Fig. 9):

!pip3 install kaggle
data_dir = "anime-data"
dataset_name =  "hernan4444/anime-recommendation-database-2020"
!mkdir $data_dir
!kaggle datasets download -p {data_dir}/ --unzip {dataset_name}
Enter fullscreen mode Exit fullscreen mode

Image description
Fig.9 Dataset anime-recommendation-database-2020

Paso 4: Preparar el dataset y crear un DatasetGroup

Emplea el notebook 02_Exploraci贸n_Prepariaci贸n.ipynb.

En la preparaci贸n se crea la columna TIMESTAMP, el momento de la interacci贸n, un campo necesario para el dataset 鈥渋nteraction鈥.

Luego se crea el Dataset Group, una agrupaci贸n l贸gica de todos los recursos del proyecto de Personalize (dataset, modelos, endpoints).Es posible crear varios Dataset Groups, uno para cada aplicaci贸n. Por ejemplo, un Dataset Groups para una aplicaci贸n de recomendaciones de v铆deos y otro para una que recomienda audiolibros.

El Dataset Group se crea con estos comandos:

create_dataset_group_response = personalize.create_dataset_group(
    name = "personalize-anime"
)
dataset_group_arn = create_dataset_group_response['datasetGroupArn']
Enter fullscreen mode Exit fullscreen mode

El resultado en la consola:

Image description
Fig.10 DataSet groups en la consola

Paso 5: Creaci贸n de los conjuntos de datos y el esquema

El esquema en Personalize permite analizar la estructura, define las columnas y el tipo de dato.

Para el recomendador de anime utilizaremos dos conjuntos de datos:

  • Interaction DataSet
  • Items DataSet

En este proyecto no vamos a emplear el User DataSet.

Interaction DataSet

Corresponde a los datos del archivo interactions.csv, creado en el paso anterior, con las columnas:

  • USER_ID (ID del usuario 鈥 Requerido)
  • ITEM_ID (ID del anime 鈥 Requerido)
  • TIMESTAMP (cuando ocurri贸 esta evaluaci贸n 鈥 Requerido)
  • EVENT_VALUE (valor obtenido por el anime 鈥 Opcional).
  • EVENT_TYPE (tipo del valor, en este caso rating 鈥 Opcional)

Image description
Fig.11 Interaction Dataset

El esquema se crea con los comandos:

interactions_schema = schema = {
    "type": "record",
    "name": "Interactions",
    "namespace": "com.amazonaws.personalize.schema",
    "fields": [
        {
            "name": "USER_ID",
            "type": "string"
        },
        {
            "name": "ITEM_ID",
            "type": "string"
        },
        {
            "name": "TIMESTAMP",
            "type": "long"
        },
        {
            "name": "EVENT_VALUE",
            "type": "float"
        },
        {
            "name": "EVENT_TYPE",
            "type": "string"
        },
    ],
    "version": "1.0"
}
create_schema_response = personalize.create_schema(
    name = "personalize-anime-interactions1",
    schema = json.dumps(interactions_schema)
)
Enter fullscreen mode Exit fullscreen mode

Items DataSet

Corresponde a los datos del archivo item-meta.csv con las columnas:

  • ITEM_ID (ID del anime 鈥 Requerido)
  • STUDIOS (estudio que lo creo 鈥 Opcional)
  • YEAR (a帽o de su lanzamiento -Opcional)
  • GENRE (g茅neros 鈥 Opcional)

Image description
Fig.12 Items DataSets

En la creaci贸n del esquema los atributos adicionales deben tener categorical = True para que sean tomados en cuenta en el entrenamiento del modelo, estas caracter铆sticas adicionales las podemos usar para crear filtros (ya hablaremos de los filtros).

El esquema se define con los comandos:

itemmetadata_schema = {
    "type": "record",
    "name": "Items",
    "namespace": "com.amazonaws.personalize.schema",
    "fields": [
        {
            "name": "ITEM_ID",
            "type": "string"
        },
        {
            "name": "STUDIOS",
            "type": "string",
            "categorical": True
        },
        {
            "name": "YEAR",
            "type": "int",
        },
        {
            "name": "GENRE",
            "type": "string",
            "categorical": True
        },


    ],
    "version": "1.0"
}

create_schema_response = personalize.create_schema(
    name = "personalize-anime-item",
    schema = json.dumps(itemmetadata_schema)
)
Enter fullscreen mode Exit fullscreen mode

En la consola:

Image description
Fig.13 DataSets en la consola

Paso 6: importaci贸n de los datos para uso de Amazon Personalize.

Previa a la importaci贸n, los datos deben estar en el formato correcto (Formatear los datos) y deben estar en un bucket de Amazon S3 (Cargar a un bucket de S3).

La importaci贸n de los datos de forma masiva se hace creando un import jobs:

create_dataset_import_job_response = personalize.create_dataset_import_job(
    jobName = "personalize-anime-item-import",
    datasetArn = items_dataset_arn,
    dataSource = {
        "dataLocation": "s3://{}/{}".format(bucket_name, itemmetadata_filename)
    },
    roleArn = role_arn
)

dataset_import_job_arn = create_dataset_import_job_response['datasetImportJobArn']
Enter fullscreen mode Exit fullscreen mode

Paso 7: Creaci贸n de la soluci贸n: modelo de recomendaci贸n de anime

Image description
Fig.14 La soluci贸n: modelo de recomendaci贸n de anime.

La soluci贸n (Fig. 14) la creamos en el notebook 03_Creaci贸n_Soluciones.ipynb.

Pasos a seguir:

  1. Seleccionar los recipes para las soluciones: Personalize proporciona 3 tipos de recipes:

User personalization: recomendaciones para un usuario (USER_ID) espec铆fico.

Personalized Ranking: reordenar un listado de 铆tems (ITEM_ID) de acuerdo a las recomendaciones de un usuario (USER_ID) espec铆fico.

Similar items: Items Similares a un item (ITEM_ID) espec铆fico.

Las soluciones se crean con los comandos:

user_personalization_create_solution_response = personalize.create_solution(
name = "personalize-anime-userpersonalization",
datasetGroupArn = dataset_group_arn,
recipeArn = user_personalization_recipe_arn
)
user_personalization_solution_arn = user_personalization_create_solution_response['solutionArn']
Enter fullscreen mode Exit fullscreen mode

Se repite para cada soluci贸n.

Resultado en la consola:

Image description
Fig.15 Soluciones en la consola

  1. Creaci贸n de versi贸n de la soluci贸n (entrenar un modelo de aprendizaje autom谩tico):

Creamos una versi贸n de la soluci贸n para cada recipe con los siguientes comandos:

user_personalization_create_solution_version_response = personalize.create_solution_version(
    solutionArn = user_personalization_solution_arn
)

user_personalization_solution_version_arn = user_personalization_create_solution_version_response['solutionVersionArn']
Enter fullscreen mode Exit fullscreen mode

Puede tardar m谩s de una hora, el c贸digo tiene un loop donde informa el estado cada 60 segundos.

Finaliza con el siguiente resultado:

Image description
Fig.16 Construcci贸n exitosa de la versi贸n del modelo.

Nota: La soluci贸n admite HPO y AutoML y el entrenamiento admite training_mode.

Image description
Fig.16 Construcci贸n exitosa de la versi贸n del modelo en la consola.

  1. Evaluar la versi贸n de la soluci贸n:

Para evaluar que versi贸n es la m谩s adecuada Personalize separa el dataset en entrenamiento y pruebas.

Las m茅tricas las obtienes para cada recipe con estos comandos:

user_personalization_solution_metrics_response = personalize.get_solution_metrics(
    solutionVersionArn = userpersonalization_solution_version_arn
)['metrics']
Enter fullscreen mode Exit fullscreen mode

Al finalizar el notebook 03_Creaci贸n_Soluciones.ipynb, veremos el cuadro con la evaluaci贸n (Fig. 17):

Image description
Fig.17 Evaluaci贸n de la versi贸n del modelo entrenado.

Para visualizar las m茅tricas en la consola debes acceder a cada versi贸n de soluci贸n :

Image description
Fig.18 Evaluaci贸n de la versi贸n del modelo entrenado en la consola.

  • Coverage es el porcentaje de los items que el modelo est谩 recomendando en general. Por ejemplo, en SIMS, tiene un coverage de 45% es decir hay un 55% de items que no est谩n siendo recomendados.
  • Precision 5, 10 y 25 son la precisi贸n de las recomendaciones. Por ejemplo, si recomienda 10 items y el usuario interactu贸 con 2, mi precisi贸n a 10 es de 20%.
  • Normalized discount gain 5,10 y 25 es muy similar a precisi贸n, pero el orden importa, y hay incentivo por entregar las recomendaciones en orden real de preferencia.

Para mejorar el coverage el modelo debe incorporar los 铆tems nuevos y los antiguos con poca preferencia, esto lo puedes modificar con el par谩metro campaignConfig al crear la campa帽a.

M谩s Informaci贸n en create_campaign() de Boto3 Amazon Personalize Documentation.

Paso 8: Crear un endpoint de inferencias (Campa帽a)

Entrenada la Solution Version, creamos la campa帽a para cada recipe y las desplegamos ejecutando el c贸digo en el notebbok 04_Desplegando_campanas.ipynb .

Los comandos que crean las campa帽as son:

sims_create_campaign_response = personalize.create_campaign(
    name = "personalize-anime-SIMS",
    solutionVersionArn = sims_solution_version_arn,
    minProvisionedTPS = 1
)sims_campaign_arn = sims_create_campaign_response['campaignArn']
Enter fullscreen mode Exit fullscreen mode

Nota: minProvisionedTPS = 1 corresponde a la cantidad de TPS (transacciones por segundo) que este endpoint podr谩 soportar, este dimensionamiento depender谩 del volumen de recomendaciones que queramos entregar.

Nota: en el notebook hay un loop que consulta el estado hasta que est谩n creadas.

El estado de las Solution Version en la consola:

Image description
Fig.19 Campa帽as creadas en la consola

Paso 9: Creaci贸n del Event Tracker

Para que el modelo de recomendaciones realice sugerencias m谩s acertadas se debe interactuar con 茅l, alimentarlo con las preferencias de los usuarios. Este proceso har谩 que el modelo aprenda y actualice las recomendaciones mientras se usa la aplicaci贸n, mejorando la relevancia de las recomendaciones no solo para el usuario que interact煤a, sino que tambi茅n para usuarios nuevos o con gustos parecidos.

Las interacciones pueden ser compras, en el caso de una tienda, o visualizar el contenido en una plataforma de VoD, que es el caso de uso para el proyecto de recomendaciones personalizadas de anime. Otra forma de alimentar al modelo de recomendaciones, es calificando de acuerdo a tus gustos.

En Personalize puedes incorporar estas nuevas interacciones utilizando Event Tracker, lo creamos con los comandos en el notebook 05_Probando_Recomendaciones.ipynb:

response = personalize.create_event_tracker(
    name='AnimeTracker',
    datasetGroupArn=dataset_group_arn
)
Enter fullscreen mode Exit fullscreen mode

El resultado en la consola:

Image description
Fig.20 Anime Tracker en la consola

Paso 10: Creaci贸n de filtros

Los filtros permiten entregar recomendaciones bajo una condici贸n del 铆tem dataset. En este proyecto se puede filtrar por a帽o, estudio o g茅neros, pero solo crearemos el filtro de g茅neros.

Se crea con estos comandos en el notebook 05_Probando_Recomendaciones.ipynb:

createfilter_response = personalize.create_filter(
            name=genre,
            datasetGroupArn=dataset_group_arn,
            filterExpression='INCLUDE ItemID WHERE Items.GENRE IN ("'+ genre +'")'
        )
Enter fullscreen mode Exit fullscreen mode

Vista en la consola:

Image description
Fig.21 Filtros en la consola.

Paso 11: Obtener recomendaciones.

En el notebook 05_Probando_Recomendaciones est谩n las funciones necesarias para la comunicaci贸n con Personalize y probar la soluci贸n.

  • Recomendaciones por campa帽as (SIMS 鈥 Filters 鈥 User personalization) :

Para recibir las recomendaciones por anime, usamos get_recommendations() de la librer铆a Boto3 Amazon Personalize Run time, con la siguiente sintaxis:

get_recommendations_response = personalize_runtime.get_recommendations(

        campaignArn = campaign_arn,

        itemId = str(anime_ID),

    )
Enter fullscreen mode Exit fullscreen mode

Si la campa帽a es de personalizaci贸n de usuario, pasamos el user_id:

get_recommendations_response = personalize_runtime.get_recommendations(

        campaignArn = userpersonalization_campaign_arn,

        userId = str(user_id),

    )
Enter fullscreen mode Exit fullscreen mode

Para recibir las recomendaciones filtradas, agregamos filterArn:

get_recommendations_response = personalize_runtime.get_recommendations(

        campaignArn = userpersonalization_campaign_arn,

        userId = str(user_id),

        filterArn = filter_arn

    )
Enter fullscreen mode Exit fullscreen mode
  • Actualizar datos con Event Tracker:

Para ingresar nuevos datos, por ejemplo, calificar un nuevo anime, empleamos la funci贸n put_events() de la librer铆a Boto3 Amazon personalize events:

personalize_events.put_events(

    trackingId = TRACKING_ID,

    userId= str(USER_ID),

    sessionId = session_ID,

    eventList = [{

        'sentAt': int(time.time()),

        'eventType': str(EVENT_TYPE),

        'eventValue': int(EVENT_VALUE),

        'properties': event_json

        }]

    )
Enter fullscreen mode Exit fullscreen mode

Te invito a explorar el notebook 05_Probando_Recomendaciones en la instancia de SageMaker, las funciones est谩n listas para que hagas volar tu imaginaci贸n.

Paso 12: Borrar los recursos de la cuenta de AWS.

Estos pasos son opcionales, si tu intenci贸n es continuar con la construcci贸n de la aplicaci贸n web, puedes mantener el notebook de Sagemaker en estado Stopped (Acciones -> Detener) , lo vamos a utilizar en el pr贸ximo episodio de esta serie.

De lo contrario, sigue los siguientes pasos:

Borrar recursos de Amazon Personalize: sigue los pasos del notebookipynb.

Borrar el notebook de Amazon SageMaker: antes de proceder, copia el nombre del IAM Role que se cre贸 con el notebook, es necesario en el siguiente paso. Ahora, con el notebook en estado Stopped, selecciona Acciones ->
**Borrar AWS IAM Role: **en la consola de AWS IAM en el men煤 de la izquierda selecciona Roles, y pega en el buscador el nombre del role que copiaste en el paso anterior, presiona la tecla Enter, selecci贸nalo y luego


Conclusi贸n:

En este episodio creaste un modelo de recomendaciones de anime utilizando la data hist贸rica del dataset Recommendation Database 2020 de kaggle.

No fue necesario aplicar conocimientos de AI/ML para crear este modelo de recomendaciones y, con esta experiencia ya eres capaz de crear otros tipos de recomendadores, solo debes tener un dataset y usar el repositorio de github empelado ac谩 como base.

Si quieres aprender m谩s sobre Amazon Personalize puedes revisar los siguientes recursos:

Developer Guide
Boto3 Amazon Personalize Documentation
Boto3 Amazon Personalize Events Documentation
Boto3 Amazon Personalize Runtime Documentation
Amazon Personalize Samples
Caso de uso exitoso en LATAM

En la pr贸xima entrega de esta serie aprenderemos c贸mo disponibilizar un modelo de recomendaci贸n de anime en una API REST, para invocar el modelo de recomendaci贸n que creamos en este blog.



隆Gracias!

Te dejo mis redes:
Dev.to Linkedin GitHub Twitter Instagram Youtube

Top comments (2)

Collapse
 
geazi_anc profile image
Geazi Anc

Excelente artigo! Aguardando os pr贸ximos epis贸dios!

Collapse
 
chema profile image
Jos茅 Mar铆a CL

Wow. A ustedes les ense帽aron ML en la universidad? Que freg贸n 馃馃徎