 MIIA-4203 MODELOS AVANZADOS PARA ANÁLISIS DE DATOS II

Presentado por:

Fabián Cholo Acevedo - Cód 201523509

Jaime Orjuela Viracacha - Cód 201924252

# Sistemas de Recomendación de filtrado colaborativo con preferencias implícitas

## Actividad 12

### Profesor: Camilo Franco (c.franco31@uniandes.edu.co)

En este cuaderno vamos a estudiar los sistemas de recomendación de filtrado colaborativo con preferencias implícitas. Vamos a centrarnos en un método incluido en la biblioteca de Spark, conocido como *Mínimos Cuadrados Alternantes* (ALS).

## 1. Introducción

Los sistemas de recomendación se han convertido en parte importante de la industria, potenciando el volumen de ventas a partir de recomendaciones personalizadas. Estos sistemas tienen la prioridad de facilitar la toma de decisiones de los usuarios.  Por ejemplo,  si se tienen muchas opciones de donde elegir, se puede esperar que la elección de un solo producto sea más compleja que si se tienen unas pocas opciones. De esta manera, si se ofrecen los productos adecuados, las ventas pueden incrementar de manera significativa.Bien implementados, los sistemas de recomendación pueden brindar ventajas competitivas importantes para las compañías.

Los sistemas de recomendación los podemos ver como motores diseñados para ayudar a los usuarios a encontrar los artículos que les gustan, pero también los podemos pensar como sistemas de información inteligentes que tienen como objetivo ayudar a los usuarios a manejar el problema de la sobrecarga de información. En este sentido, lo que distingue a los sistemas de recomendación de los motores de búsqueda es que aplican el aprendizaje automático de una manera personalizada. Por lo tanto, los sistemas de recomendación permiten construir modelos para satisfacer las preferencias de los usuarios, y encontrar los artículos o servicios necesarios para obtener un mejor sustento y bienestar individual y social.

Veamos algunos ejemplos de sistemas de recomendación en la industria:

- Métodos basados en contenido: el punto más importante para este tipo de sistemas es la extracción de patrones. Por ejemplo, la compañía Pandora, que ofrece musica online por *streaming*, extrajo patrones (*features*) de un conjunto de canciones como parte de Proyecto del Genoma Musical. De esta forma, las canciones se respresentaron por un vector de aproximadamente 450 atributos. Una vez se cuenta con este conjunto de patrones, el problema de recomendación se puede estudiar como uno de clasificación binaria. Entonces se construyen modelos que estimen la probabilidad de que a un usuario le guste una canción específica basado en el conjunto de entrenamiento de su historial de canciones, y se recominedan las K canciones que obtengan una mayor probabilidad. Bajo esta aproximación a los sistemas de recomendación por contenido, es crucial la construcción de un buen conjunto de patrones para su aplicación adecuada y exitosa.

- Filtrado colaborativo: Bajo la perspectiva del filtrado colaborativo, se busca caracterizar la relación entre usuarios e items sin requerir información específica de los usuarios e items, sino solamente utilizando un valor de preferencia *explícito* o *implícito*, expresando la interacción entre usuario e items.

Un **rating explícito** consiste en un valor numérico, categórico o un *like*, mientras que un **rating implícito** consiste en un *índice* de preferencia, como un *click*, una vista o una compra. Un ejemplo bastante conocido es el de la recomendación de películas como en Netflix. Es común contar con ratings valorados en una escala numérica, donde es fácil ver si el usuario a disfrutado o no de la película. Sin embargo, muchas veces los usuarios no proveen ratings para todas las películas, reduciendo la cantidad de datos disponibles para construir las recomendaciones. Netflix al menos puede identificar si un usuario vió una película, sin saber si le gustó o no, simplemente que la vió. Este último es un rating implícito, y suele ser más común que un rating explícito. De esta manera, es factible que al centrarse en ratings implícitos, la información disponible sea mayor (aunque menos expresiva).

- Métodos híbridos de filtrado colaborativo e información demográfica: Una red social como Facebook o Linkedin cuenta con bastante información demográfica de los usuarios. Con base en estos datos se pueden identificar usuarios similares a partir de sus características en común. De manera similar al método basado en contenido, se puede construir un vector de patrones para cada usuario y se generan los modelos para predecir la probabilidad de preferir ciertos items.

Para una introducción más amplia a los sistemas de recomendación, pueden estudiar estos videos online:
1. https://www.youtube.com/watch?v=bLhq63ygoU8&feature=emb_logo

2. https://www.youtube.com/watch?v=mRToFXlNBpQ

## 2. Filtrado colaborativo y preferencias implíctas

Para esta actividad vamos a utilizar el método de mínimos cuadrados alternantes (ALS). Esta técnica busca descomponer una matriz de preferencias $R_{m\times n}$, con $m$ usuarios y $n$ items, en dos matrices más pequeñas: la matriz de usuarios con sus vectores de patrones latentes $U_{m\times k}$ y la respectiva matriz de items $V_{k\times n}$. Se debe tener en cuenta que la matriz $R_{m\times n}$ tiene muchos datos faltantes (una matriz *sparse*), pues muchos usuarios interactuan con unos pocos items.

Entonces, la multiplicación de las matrices $U$ y $V$ permite aproximar la matriz original, y de manera sencilla (pues contaríamos con dos matrices *densas* que incluyen $k$ factores/patrones latentes) podemos construir e interpretar las preferencias estimadas de cada usuario por cada item.

Para estimar $U$ y $V$, resulta conveniente utilizar el método de los ALS. De este modo, se resuelve un vector de patrones a la vez, alternando primero para la matriz de usuarios y luego para la matriz de items, y se puede ejecutar de manera paralela (siguiendo la filosofía de Spark). Por ejemplo, inicializando aleatoriamente $U$, fijándola, y resolviendo para $V$, y luego volver y resolver para $U$ utilizando la solución previa para $V$, y repetir hasta converger.

Como resultado, el producto punto entre $U$ y $V$ permite estimar $\hat R$, para todos los pares usuario-item, así no haya habido interacción previa entre los pares. Esta metdología fue presentada en el paper:

*Hu, Y., Koren, Y., Volinsky, Ch. (2008) Collaborative filtering for implicit feedback datasets. Proceedings 2008 Eighth IEEE International Conference on Data Mining, Washington, USA, 3022-3026.*

Veamos a continuación la implementación del método con un conjunto de datos con preferencias implícitas.

## 2.1 Procesamiento de datos

Vamos a utilizar el archivo de datos *Online Retail* (del repositorio de Machine Learning UCI), el cual contiene todas las compras para una compañía de venta al por menor en el Reino Unido durante ocho meses.

Primero carguemos algunas bibliotecas que van a ser útiles para el pre-procesamiento de los datos:

```python
import pandas as pd
import scipy.sparse as sparse
import numpy as np
from scipy.sparse.linalg import spsolve

import random
import datetime

```

Carguemos los datos del archivo .xls:

```python
website_url = 'http://archive.ics.uci.edu/ml/machine-learning-databases/00352/Online%20Retail.xlsx'

try:
    retail_data = pd.read_excel(website_url) # No debería tardar mucho
except (http.client.IncompleteRead) as e:
    retail_data = e.partial
```

Debemos tomar todas las transacciones para cada usuario y preparar los datos para la implementación del ALS. Para ello necesitamos un ID unico por usuario/fila, y un ID unico por item/columna. Los valores de la matriz deben consistir en el número de compras de cada usuario por cada item.

```python
retail_data.head()
```

      InvoiceNo
      StockCode
      Description
      Quantity
      InvoiceDate
      UnitPrice
      CustomerID
      Country

      0
      536365
      85123A
      WHITE HANGING HEART T-LIGHT HOLDER
      6
      2010-12-01 08:26:00
      2.55
      17850.0
      United Kingdom

      1
      536365
      71053
      WHITE METAL LANTERN
      6
      2010-12-01 08:26:00
      3.39
      17850.0
      United Kingdom

      2
      536365
      84406B
      CREAM CUPID HEARTS COAT HANGER
      8
      2010-12-01 08:26:00
      2.75
      17850.0
      United Kingdom

      3
      536365
      84029G
      KNITTED UNION FLAG HOT WATER BOTTLE
      6
      2010-12-01 08:26:00
      3.39
      17850.0
      United Kingdom

      4
      536365
      84029E
      RED WOOLLY HOTTIE WHITE HEART.
      6
      2010-12-01 08:26:00
      3.39
      17850.0
      United Kingdom

El conjunto de datos incluye un numero identificativo para cada compra, junto con el codigo de stock *StockCode* que nos sirve como ID del tiem. Además contamos con su descripción, el número de ventas, la fecha de la venta, el precio, el ID del usuario, y el pais de origen del usuario.

```python
retail_data.info()
```

    <class 'pandas.core.frame.DataFrame'>
    RangeIndex: 541909 entries, 0 to 541908
    Data columns (total 8 columns):
     #   Column       Non-Null Count   Dtype
    ---  ------       --------------   -----
     0   InvoiceNo    541909 non-null  object
     1   StockCode    541909 non-null  object
     2   Description  540455 non-null  object
     3   Quantity     541909 non-null  int64
     4   InvoiceDate  541909 non-null  datetime64[ns]
     5   UnitPrice    541909 non-null  float64
     6   CustomerID   406829 non-null  float64
     7   Country      541909 non-null  object
    dtypes: datetime64[ns](1), float64(2), int64(1), object(4)
    memory usage: 33.1+ MB

En el resumen de los datos se puede ver que la mayoría de columnas cuentan con información, pero el ID del usuario falta en bastantes filas. Estas observaciones faltantes hacen inservibles las observaciones para nuestros porpósitos (necesitamos el ID del usuario).

```python
retail = retail_data.loc[pd.isnull(retail_data.CustomerID) == False]
```

```python
retail.info()
```

    <class 'pandas.core.frame.DataFrame'>
    Int64Index: 406829 entries, 0 to 541908
    Data columns (total 8 columns):
     #   Column       Non-Null Count   Dtype
    ---  ------       --------------   -----
     0   InvoiceNo    406829 non-null  object
     1   StockCode    406829 non-null  object
     2   Description  406829 non-null  object
     3   Quantity     406829 non-null  int64
     4   InvoiceDate  406829 non-null  datetime64[ns]
     5   UnitPrice    406829 non-null  float64
     6   CustomerID   406829 non-null  float64
     7   Country      406829 non-null  object
    dtypes: datetime64[ns](1), float64(2), int64(1), object(4)
    memory usage: 27.9+ MB

Una vez limpiamos la base de datos de observaciones faltantes, podemos relacionar todas las compras con su cliente/usuario.

Antes de proceder con la matriz de ratings, construyamos una tabla donde podamos encontrar cada ID de item junto con su descripción.

```python
items_T = retail[['StockCode', 'Description']].drop_duplicates() # pares item/descripcion
items_T['StockCode'] = items_T.StockCode.astype(str) # caracteres
```

```python
items_T.head()
```

      StockCode
      Description

      0
      85123A
      WHITE HANGING HEART T-LIGHT HOLDER

      1
      71053
      WHITE METAL LANTERN

      2
      84406B
      CREAM CUPID HEARTS COAT HANGER

      3
      84029G
      KNITTED UNION FLAG HOT WATER BOTTLE

      4
      84029E
      RED WOOLLY HOTTIE WHITE HEART.

```python
items_T.info()
```

    <class 'pandas.core.frame.DataFrame'>
    Int64Index: 3916 entries, 0 to 540421
    Data columns (total 2 columns):
     #   Column       Non-Null Count  Dtype
    ---  ------       --------------  -----
     0   StockCode    3916 non-null   object
     1   Description  3916 non-null   object
    dtypes: object(2)
    memory usage: 91.8+ KB

```python
items_T[items_T.StockCode=='16008']
```

      StockCode
      Description

      21342
      16008
      SMALL FOLDING SCISSOR(POINTED EDGE)

Ahora procesar la base de datos para:

- Agrupar las ventas por codigo de stock e ID del item
- Incluir clientes con un total de compras no negativo, y cambiar las sumas que den cero por uno, lo cual puede suceder si un producto es devuelto. Esto lo hacemos para incluir información sobre cualquier tipo de interacción usuario-item.
- Construir nuestra matriz de datos tipo *sparse*, que haga uso óptimo de memoria (guarda solamente la ubicación y los valores de los items cuando hay interacción)

```python
# Toma el ID de usuario como Entero y selecciona variables relevantes
retail['CustomerID'] = retail.CustomerID.astype(int)
retail = retail[['StockCode', 'Quantity', 'CustomerID']]

# Agrupamos e indicamos si hubo interacción
g_retail = retail.groupby(['CustomerID', 'StockCode']).sum().reset_index()
g_retail.Quantity.loc[g_retail.Quantity == 0] = 1

# Nos quedamos con usuarios con compras positivas
g_ventas = g_retail.query('Quantity > 0')
```

    <ipython-input-11-64251c422703>:2: SettingWithCopyWarning:
    A value is trying to be set on a copy of a slice from a DataFrame.
    Try using .loc[row_indexer,col_indexer] = value instead

    See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
      retail['CustomerID'] = retail.CustomerID.astype(int)
    /Users/jaimorjv/Library/Python/3.8/lib/python/site-packages/pandas/core/indexing.py:671: SettingWithCopyWarning:
    A value is trying to be set on a copy of a slice from a DataFrame

    See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
      self._setitem_with_indexer(indexer, value)

Obtenemos las ventas agrupadas:

```python
g_ventas.head()
```

      CustomerID
      StockCode
      Quantity

      0
      12346
      23166
      1

      1
      12347
      16008
      24

      2
      12347
      17021
      36

      3
      12347
      20665
      6

      4
      12347
      20719
      40

```python
g_ventas.info()
```

    <class 'pandas.core.frame.DataFrame'>
    Int64Index: 266723 entries, 0 to 267614
    Data columns (total 3 columns):
     #   Column      Non-Null Count   Dtype
    ---  ------      --------------   -----
     0   CustomerID  266723 non-null  int64
     1   StockCode   266723 non-null  object
     2   Quantity    266723 non-null  int64
    dtypes: int64(2), object(1)
    memory usage: 8.1+ MB

Ahora, en lugar de representar un rating explícito, podemos tomar el número de items adquiridos como una *proxy* de la **confianza** sobre la intensidad de la interacción usuario-item. Es decir, entre más unidades del item se adquieren por parte de un usuario, mayor será el peso para el rating en nuestra matriz de preferencias.

A continuación creamos la matriz de tipo *sparse*:

```python
usuarios = list(np.sort(g_ventas.CustomerID.unique()))
items = list(g_ventas.StockCode.unique())
confianza = list(g_ventas.Quantity)

# Construimos la matriz
filas = g_ventas.CustomerID.astype(pd.api.types.CategoricalDtype(categories=usuarios)).cat.codes
cols = g_ventas.StockCode.astype(pd.api.types.CategoricalDtype(categories=items)).cat.codes
prefs_sparse = sparse.csr_matrix((confianza, (filas, cols)), shape=(len(usuarios), len(items)))

```

Revisemos la matriz que hemos declarado:

```python
prefs_sparse
```

    <4338x3664 sparse matrix of type '<class 'numpy.longlong'>'
    	with 266723 stored elements in Compressed Sparse Row format>

La matriz tiene 4338 usuarios y 3664 items. De todas las posibles interacciones, se tienen 266723 con alguna compra.

Esto es:

```python
# Interacciones posibles
mat_dim = prefs_sparse.shape[0]*prefs_sparse.shape[1]
print (mat_dim)
```

    15894432

```python
# Numero de interacciones con data
num_ventas = len(prefs_sparse.nonzero()[0])
print (num_ventas)
```

    266723

```python
# Porcentaje de informacion a estimar
sparsity = 100*(1 - (num_ventas/mat_dim))
sparsity
```

    98.32190920694744

```python
# Porcentaje información disponible
info=(num_ventas/mat_dim)*100
info
```

    1.6780907930525608

El 98.3% de la matriz de interacciones es nula o *sparse*.

Con el fin de aplicar los algoritmos de filtrado colaborativo, el porcentaje no debería superar un 99.5% aprox.

## 2.2 Experimentos de aprendizaje
### Entrenamiento/Prueba vs. Validacion cruzada

Normalmente para problemas de aprendizaje computacional supervisado, debemos probar si el modelo que entrenamos generaliza de buena manera la muestra de datos utilizada, esto es, si predice de buena manera observaciones nuevas que no pertenecen a la muestra inicial. Esto se suele hacer creando un conjunto de prueba completamente distinto al conjunto de entrenamiento, tomando una muestra aleatoria del conjunto total de observaciones (en nuestro caso una muestra aleatoria de usuarios) y separandola del conjunto de entrenamiento.

Ahora, bajo el método de filtrado colaborativo esto no funciona del todo porque necesitamos de todas las interacciones usuario-item para encontrar una factorización apropiada de la  matriz de preferencias. Una mejor alternativa consiste en *esconder* aleatoriamente cierta proporción de interacciones del modelo durante la fase de entrenamiento. Luego, se revisa en la fase de validación cuántos items de los que fueron recomendados en verdad terminaron siendo comprados por los usuarios. El desempeño del modelo se puede evaluar a partir de la tasa de aciertos del modelo en validación. De todos modos, también podríamos tomar un punto del tiempo para separar el entrenamiento de la predicción y evaluar el error en predicción.

En este caso, tenemos un periodo de tiempo corto y es poco probable que los productos que se hayan adquirido una vez vuelvan a ser aduqiridos en tan poco tiempo. Entonces, el conjunto de entrenamiento va a consistir en los datos originales pero omitiendo un porcentaje aleatorio de interacciones, *enmascaradas* como cero. De esta manera se asume para cada iteracción que esos items enmasacardos no han sido adquiridos por el usuario, y probamos si el algoritmo le recomendaría esos productos. En consecuencia, si se puede observar que los usuarios terminaron comprando esos productos recomendados, se puede concluir que el sistema hace bien su trabajo.

También podemos verificar que nuestro sistema mejore una recomendación basada en la popularidad media, como un modelo de referencia (*Baseline*).

A continuación ejecutamos nuestro propio codigo para el ALS. Primero escribimos una función para enmascarar los datos de validación.

```python
def entrena(ratings, pct_val = 0.2):
    '''
    Input: Matriz de ratings
    Output: matriz de entrenamiento CE y de validacion CV, y user_inds

    Esta función toma la matriz orginal y enmascara un porcentaje de ratings pata la validacion
    El conjunto de validacion (CV) va a tener todos los ratings originales, mientras que el de entrenamiento (CE)
    reemplaza el porcentaje señalado con ceros

    pct_val: porcentaje de iteraciones a enmascarar
    user_inds: lista de usuarios aleatoriamente elegidos y enmascarados en CE.
    '''

    random.seed(0) # Semilla aeatoria

    CV = ratings.copy()
    CV[CV != 0] = 1 # CV como una matriz binaria

    CE = ratings.copy()
    non0_inds = CE.nonzero() # Indices donde hay interaccion
    non0_pares = list(zip(non0_inds[0], non0_inds[1])) # lista de indices usuario-item con interaccion

    num_muestra = int(np.ceil(pct_val*len(non0_pares)))
    muestra = random.sample(non0_pares, num_muestra) # sub-muestreo sin reemplazo

    user_inds = [index[0] for index in muestra] # indices de usuario
    item_inds = [index[1] for index in muestra] # inidices de items

    CE[user_inds, item_inds] = 0 # Asigna 0 sobre las observaciones elegidas
    CE.eliminate_zeros() # Elimina los ceros en el arreglo sparce
    return CE, CV, list(set(user_inds))

```

Con la funcion anterior tenemos nuestro conjunto de entrenamiento, un conjunto de validacion  binario (compra/no compra) y una lista de los usuarios dejados por fuera del entrenamiento para validacion. Entonces, si enmascaramos el 20% de los usuarios, evaluaremos el desempeño del modelo sobre estos usuarios.

```python
CE, CV, users_V = entrena(prefs_sparse, pct_val = 0.2)
```

## 2.3 Método de Mínimos Cuadrados Alternantes (ALS)
Ahora podemos implementar el ALS sobre nuestros ratings implícitos (siguiendo el paper de  Hu et al. 2008).

En primera instancia, debemos transformar la matriz de preferencias en una matriz de confianza:

$$
C_{ui}=1+\alpha r_{ui}
$$

donde $C_{ui}$ representa la confianza del usuario $u$ sobre el item $i$ y $\alpha$ representa un factor de incremento lineal con respecto al rating del usuario.

Enfocándonos en el modelo de factores ($f$) latentes, le asignamos a cada usuario un vector $x_u \in \mathbb{R}^f$ y a cada item un vector $y_i\in \mathbb{R}^f$, donde la prediccion corresponde con el producto interno $$ \hat p_{ui} = x^T_u y_i. $$
Recordemos que esta predicción es binaria.

En este caso vamos a incorporar el parámetro de confianza sobre la minimización de la función obejtivo:
$$
\min_{x,y} \sum_{u,i} c_{ui}(p_{ui} - x^T_u y_i)^2 + \lambda\bigl( \sum_u ||x_u||^2 + \sum_i ||y_i ||^2 \bigr) \tag{1}
$$

La clave para resolver este problema mediante ALS consiste en que al fijar los factores de usuario o los de item, la función de coste se vuelve cuadrática. Al diferenciar $(1)$ podemos minimizar la función para los usuarios:
$$
x_u=(Y^TC_uY+\lambda I)^{−1}Y^TC_up(u)
$$
y de manera similar para los items,
$$
y_i=(X^TC_iX+\lambda I)^{−1}X^TC_yp(i)
$$

```python
def implicit_con_ALS(CE, lambda_val = 0.1, alpha = 40, itera = 10, factores = 20, semilla = 0):
    '''
    Input:
    CE: conjunto de entrenamiento con m usuarios y n items. Matriz sparse csr
    lambda_val: parametro de regularizacion ALS.
    alpha: Parametro de confianza para el rating implicito
    itera: numero de iteraciones para el ALS. Un  mayor numero permite una mejor convergencia
    factores: el numero de factores latentes. Incrementar su numero aumenta el riesgo de sobre-ajuste
    semilla: semilla aleatoria para reproducibilidad
    Output:
    El vector de factores o patrones para usuarios y para items.
    '''

    # declaramos la matriz de confianza

    conf = (alpha*CE)

    num_user = conf.shape[0]
    num_item = conf.shape[1]

    # Incializacion aleatoria de los vectores de usuario e item
    random = np.random.RandomState(semilla)
    X = sparse.csr_matrix(random.normal(size = (num_user, factores)))
    Y = sparse.csr_matrix(random.normal(size = (num_item, factores)))

    X_eye = sparse.eye(num_user)
    Y_eye = sparse.eye(num_item)
    lambda_eye = lambda_val * sparse.eye(factores) # termino de regularizacion lambda*I.

    # Bucle ALS

    for iter_step in range(itera): # Itera alternando entre X e Y
        # Calculamos yTy, xTx al principio de cada iteracion para optimizar el coste computacional
        yTy = Y.T.dot(Y)
        xTx = X.T.dot(X)
        # Fijamos Y
        for u in range(num_user):
            conf_samp = conf[u,:].toarray() # convierte a un vector denso la fila del usuario (de la matriz de confianza)
            pref = conf_samp.copy()
            pref[pref != 0] = 1 # Vector de preferencia binario
            CuI = sparse.diags(conf_samp, [0]) # Término Cu-I
            yTCuIY = Y.T.dot(CuI).dot(Y) # Termino yT(Cu-I)Y
            yTCupu = Y.T.dot(CuI + Y_eye).dot(pref.T) # Término yTCuPu
            X[u] = spsolve(yTy + yTCuIY + lambda_eye, yTCupu)
            # Resuelve para Xu = ((yTy + yT(Cu-I)Y + lambda*I)^-1)yTCuPu, Ecuacion 4 del paper

        # Fijamos X
        for i in range(num_item):
            conf_samp = conf[:,i].T.toarray() # Se transpone y se convierte a matriz densa
            pref = conf_samp.copy()
            pref[pref != 0] = 1 # Crea la matriz binaria
            CiI = sparse.diags(conf_samp, [0]) # Calcula el termino Cu-I
            xTCiIX = X.T.dot(CiI).dot(X) # Se calcula el termino xT(Cu-I)X
            xTCiPi = X.T.dot(CiI + X_eye).dot(pref.T) # Se calcula el temrino xTCiPi
            Y[i] = spsolve(xTx + xTCiIX + lambda_eye, xTCiPi)
            # Resuelve para Yi = ((xTx + xT(Cu-I)X) + lambda*I)^-1)xTCiPi

    return X, Y.T

```

Intentemos diez iteraciones para verificar que el codigo funciona, tomando 20 factores latentes junto con un coefiencte de confianza de 15 y una regularización de 0.1.

```python
tiempo0 = datetime.datetime.now()
print('\nInicia nuestro ALS: ', tiempo0)

user_vecs, item_vecs = implicit_con_ALS(CE, lambda_val = 0.1, alpha = 15, itera = 10, factores = 20)

print('Tiempo en completarse las 10 iteraciones: ', datetime.datetime.now()-tiempo0)
```

    Inicia nuestro ALS:  2020-11-15 12:21:19.509093
    Tiempo en completarse las 10 iteraciones:  0:04:24.727550

Podemos ver los ratings para un usuario dado tomando el producto punto entre los vectores de usuario e item (U y V):

```python
user_vecs[0,:].dot(item_vecs).toarray()[0,:5]
```

    array([ 0.12088319,  0.02528647,  0.01163801,  0.01294093, -0.02575397])

```python
user_vecs[0,:].dot(item_vecs).toarray()[0,:]
```

    array([ 0.12088319,  0.02528647,  0.01163801, ...,  0.        ,
           -0.00832481,  0.00133633])

Estos son los valores de preferencia estimados para el primer usuario sobre los primeros 5 items, de un total de 3664 en stock.

### Pregunta
Cuál es el item con una mayor preferencia sobre todo el stock de productos?

```python
interx = user_vecs.dot(item_vecs).toarray()
```

```python
#Calcula el promedio para los 3.664 productos
promedio_producto = interx.mean(axis=0)
```

```python
promedio_producto
```

    array([0.39121465, 0.21428615, 0.1536048 , ..., 0.        , 0.01193986,
           0.00397448])

```python
#posición producto preferido
producto_preferido = np.argmax(promedio_producto)
```

```python
#Valor preferencia del producto preferido
promedio_producto[producto_preferido]
```

    0.6696016333458504

```python
# Producto preferido
items_T[items_T['StockCode']==str(items[producto_preferido])]
```

      StockCode
      Description

      192
      22969
      HOMEMADE JAM SCENTED CANDLES

#### Producto preferido

El producto preferido es "HOMEMADE JAM SCENTED CANDLES" con un rating de 0.669

## 3. Implicit: Implementacion óptima del ALS

Hasta ahora no hemos indagando en la convergencia del modelo, lo cual puede tomar más tiempo, y por eso mismo, es recomendable hacer uso de un código optimizado.

Hasta el momento hacemos uso de bastantes bucles y no tomamos ventaja del hecho de que el algoritmo es paralelizable, pues cada iteración se puede realizar sobre los vectores de item o de usuario de manera independiente. Para ello podemos hacer uso de la versión de ALS para Python (utilizando Cython) que paraleliza el codigo entre distintos procesadores. Antes tenemos que instalar la bilbioteca `implicit`.

Para mayores detalles, puede investigar: https://pypi.org/project/implicit/

Para instalarlo desde el prompt de Anaconda (https://anaconda.org/conda-forge/implicit):

`conda install -c conda-forge implicit`

También debemos chequear que la version de `scipy` sea 0.16 o posterior.

```python
import scipy
scipy.__version__
```

    '1.4.1'

```python
import implicit
```

En esta versión no se hace uso explícito del parametro $\alpha$ que utilizamos para ponderar la confianza de los ratings. Este paso lo debemos hacer nosotros antes de introudcir el input. También necesitamos declarar el tipo de la matriz como *double* para ejecutar la función de ALS.

```python
alpha = 15
user_vecs, item_vecs = implicit.alternating_least_squares((CE*alpha).astype('double'),
                                                          factors=20,
                                                          regularization = 0.1,
                                                          iterations = 50)

```

    This method is deprecated. Please use the AlternatingLeastSquares class instead
    WARNING:root:OpenBLAS detected. Its highly recommend to set the environment variable 'export OPENBLAS_NUM_THREADS=1' to disable its internal multithreading

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

Con esta implementación de `implicit` conseguimos unas mejores predicciones tras utilizar un mayor número de iteraciones y conseguir una mejor convergencia del modelo. Pero ahora veamos cómo medimos el desempeño del modelo.

## 4. Evaluación del sistema de recomendación

Recordemos que nuestro conjunto de entrenamiento había dejado por fuera el 20% de las observaciones con ventas. Ahora vamos a evaluar el desempeño del modelo sobre este 20%. Específicamente debemos contrastar si las recomendaciones obtenidas por nuestro sistema cazan con los items que los usuarios terminaron comprando.

Una métrica muy usual es el Area bajo la Curva ROC (Receiver Operating Characteristic), o AUC. Una mayor area significa que los items recomendados en las posiciones altas de la lista de recomendación terminan siendo comprados por los usuarios. En esta parte implementaremos el AUC para evaluar la calidad del ranking de nuestras recomendaciones.

El AUC se consigue al graficar la tasa de verdaderos positivos (TPR) contra la tasa de falsos positivos (FPR) para todos los umbrales de decisión, dadas por:
\begin{equation}
\label{tpr}
TPR=\frac{TP}{TP+FN}
\end{equation}
\begin{equation}
\label{fpr}
FPR=\frac{FP}{FP+TN}
\end{equation}

Para ello implementamos una función que calcule el AUC para cualquier usuario que tenga al menos un item en el conjunto de validación. Como benchmark de comparación tomamos el AUC que se hubiera obtenido si se recomendaran los items más populares. Con este fin, utilizamos la biblioteca Scikit-learn para calcular las tasas TPR y FPR.

```python
from sklearn import metrics
```

```python
def auc_score(preds, prueba):
    '''
    Esta funcion obtiene el AUC.
    Input:
    parameters:
    preds: las predicciones del sistema
    prueba: las ventas verdaderas
    Output:
    AUC
    '''

    fpr, tpr, umbrales = metrics.roc_curve(prueba, preds)
    return metrics.auc(fpr, tpr)
```

```python
np.concatenate((np.zeros(67),np.ones(12)))
```

    array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
           0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
           0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
           0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.,
           1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])

```python
prueba=np.concatenate((np.zeros(54),np.ones(25)))
preds=np.concatenate((np.zeros(67),np.ones(12)))
fpr, tpr, umbrales = metrics.roc_curve(prueba, preds)
metrics.auc(fpr, tpr)
```

    0.74

Ahora utilizamos esta función para calcular el AUC para cada usuario en el conjunto de validación (que coinciden con las observaciones enmascaradas del conjunto de entrenamiento). También calculamos el AUC para los items más populares.

```python
def AUC_val(CE, users_V, preds, CV):
    '''
    Esta funcion calcula el AUC medio por usuario para todo usuario en el conjunto de validacion
    Input:
    CE: Conjunto de entrenamiento con un porcentaje de las interacciones originales enamscaradas
    preds: la matriz con las predicciones de los ratings para cada par usuario-item (lista
    con vectores de usuario y vectores de items)
    users_V: indices de los usuarios de validacion
    CV: conjunto de validacion
    Output:
    AUC medio del CV para las interacciones usuario-item y para los items más populares
    '''

    # Inicializamos la lista para guardar el AUC de validacion
    rec_auc = []
    # y el AUC para la recomendación por popularidad
    pop_auc = []

    # Tomamos la suma de interacciones por item para encontrar lo más popular
    pop_items = np.array(CV.sum(axis = 0)).reshape(-1)
    item_vecs = preds[1]

    for user in users_V:
        user_i = CE[user,:].toarray().reshape(-1) # usuario de validacion
        user_val = np.where(user_i == 0) #

        # Toma la prediccion para el usuario-item
        user_vec = preds[0][user,:]
        pred = user_vec.dot(item_vecs).toarray()[0,user_val].reshape(-1)

        # Selecciona los ratings estimados para el usuario
        actual = CV[user,:].toarray()[0,user_val].reshape(-1)

        # Toma los pares con interacciones binarias de los datos originales
        pop = pop_items[user_val] # Popularidad del item
        rec_auc.append(auc_score(pred, actual)) # Calcula y guarda el AUC para el ususario
        pop_auc.append(auc_score(pop, actual)) # Calcula el AUC por popularidad

    return float('%.3f'%np.mean(rec_auc)), float('%.3f'%np.mean(pop_auc))
   # Devuelve el AUC medio para validacion y por popularidad

```

Ahora podemos usar la funcion para evaluar el desempeño de nuestro sistema. Para ello, debemos tomar la salida de nuestra funcion ALS y pasarla a formato de csr_matrix, y trasponer los vectores de items.

```python
AUC_val(CE, users_V, [sparse.csr_matrix(user_vecs), sparse.csr_matrix(item_vecs.T)], CV)

```

    (0.869, 0.814)

```python
print(datetime.datetime.now())
```

    2020-11-15 12:50:30.251171

Podemos ver que nuestro sistema de recomendación es al menos mejor que la recomendación basada en popularidad, con un AUC de 0.87 frente a uno de 0.814.

### Ejercicio práctico
Revise su algoritmo e intente optimizar los hiper-parámetros para mejorar el valor del AUC. Puede intentar implementar validación cruzada además de la prueba para controlar el riesgo de sobre-ajuste.

```python
from prettytable import PrettyTable
# Inicializamos la tabla donde guardamos los resultados
x = PrettyTable(["Inicio","Fin","Factores","Alpha","Regularizacion","Iteraciones","Evaluacion"])

# factor
# alfa
# regularizacion
# iteraciones

for factor in [10,20,30]:

    for alfa in [5,10,15,30,35]:

        for regularizacion in [0.025,0.05,0.1,0.2,0.4]:

            for iteracion in [10,25,50,100,200]:

                hora_inicio = datetime.datetime.now()

                print(hora_inicio)

                user_vecs, item_vecs = implicit.alternating_least_squares((CE*alpha).astype('double'),
                                                                          factors=20,
                                                                          regularization = 0.1,
                                                                          iterations = 50)
                desempenio = AUC_val(CE, users_V, [sparse.csr_matrix(user_vecs), sparse.csr_matrix(item_vecs.T)], CV)

                hora_fin = datetime.datetime.now()

                # Imprimimos el desempeño para cada repetición
                print('Factor='+ str(factor) + ' - Alfa= ' + str(alfa) + ' - Regularizacion=' + str(regularizacion) + ' - iteracion = ' + str(iteracion) + ' - Evaluacion = ' + str(desempenio))

                print(hora_fin)

                x.add_row([hora_inicio, hora_fin, factor, alfa, regularizacion, iteracion, desempenio])

```

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    2020-11-15 14:50:07.576023

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 5 - Regularizacion=0.025 - iteracion = 10 - Evaluacion = (0.872, 0.814)
    2020-11-15 14:50:24.715615
    2020-11-15 14:50:24.715720

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 5 - Regularizacion=0.025 - iteracion = 25 - Evaluacion = (0.872, 0.814)
    2020-11-15 14:50:42.091137
    2020-11-15 14:50:42.091243

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 5 - Regularizacion=0.025 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 14:50:59.117397
    2020-11-15 14:50:59.117503

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 5 - Regularizacion=0.025 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 14:51:16.066141
    2020-11-15 14:51:16.066248

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 5 - Regularizacion=0.025 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 14:51:34.532649
    2020-11-15 14:51:34.532753

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 5 - Regularizacion=0.05 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 14:51:52.154195
    2020-11-15 14:51:52.154325

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 5 - Regularizacion=0.05 - iteracion = 25 - Evaluacion = (0.87, 0.814)
    2020-11-15 14:52:09.863152
    2020-11-15 14:52:09.863252

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 5 - Regularizacion=0.05 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 14:52:27.588594
    2020-11-15 14:52:27.588695

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 5 - Regularizacion=0.05 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 14:52:45.257192
    2020-11-15 14:52:45.258448

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 5 - Regularizacion=0.05 - iteracion = 200 - Evaluacion = (0.87, 0.814)
    2020-11-15 14:53:03.317319
    2020-11-15 14:53:03.317483

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 5 - Regularizacion=0.1 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 14:53:21.361006
    2020-11-15 14:53:21.361128

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 5 - Regularizacion=0.1 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 14:53:39.099407
    2020-11-15 14:53:39.099581

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 5 - Regularizacion=0.1 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 14:53:55.799914
    2020-11-15 14:53:55.800020

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 5 - Regularizacion=0.1 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 14:54:12.300456
    2020-11-15 14:54:12.300564

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 5 - Regularizacion=0.1 - iteracion = 200 - Evaluacion = (0.87, 0.814)
    2020-11-15 14:54:29.351803
    2020-11-15 14:54:29.351906

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 5 - Regularizacion=0.2 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 14:54:46.778327
    2020-11-15 14:54:46.778427

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 5 - Regularizacion=0.2 - iteracion = 25 - Evaluacion = (0.87, 0.814)
    2020-11-15 14:55:04.020917
    2020-11-15 14:55:04.021021

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 5 - Regularizacion=0.2 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 14:55:22.363370
    2020-11-15 14:55:22.363474

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 5 - Regularizacion=0.2 - iteracion = 100 - Evaluacion = (0.869, 0.814)
    2020-11-15 14:55:40.971165
    2020-11-15 14:55:40.971263

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 5 - Regularizacion=0.2 - iteracion = 200 - Evaluacion = (0.87, 0.814)
    2020-11-15 14:55:58.365262
    2020-11-15 14:55:58.365357

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 5 - Regularizacion=0.4 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 14:56:15.211771
    2020-11-15 14:56:15.211865

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 5 - Regularizacion=0.4 - iteracion = 25 - Evaluacion = (0.87, 0.814)
    2020-11-15 14:56:32.202565
    2020-11-15 14:56:32.202686

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 5 - Regularizacion=0.4 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 14:56:49.240360
    2020-11-15 14:56:49.240461

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 5 - Regularizacion=0.4 - iteracion = 100 - Evaluacion = (0.872, 0.814)
    2020-11-15 14:57:06.224855
    2020-11-15 14:57:06.224953

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 5 - Regularizacion=0.4 - iteracion = 200 - Evaluacion = (0.869, 0.814)
    2020-11-15 14:57:23.159882
    2020-11-15 14:57:23.159986

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 10 - Regularizacion=0.025 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 14:57:40.062976
    2020-11-15 14:57:40.063082

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 10 - Regularizacion=0.025 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 14:57:57.341358
    2020-11-15 14:57:57.341489

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 10 - Regularizacion=0.025 - iteracion = 50 - Evaluacion = (0.872, 0.814)
    2020-11-15 14:58:15.620221
    2020-11-15 14:58:15.620317

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 10 - Regularizacion=0.025 - iteracion = 100 - Evaluacion = (0.872, 0.814)
    2020-11-15 14:58:32.968307
    2020-11-15 14:58:32.968457

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 10 - Regularizacion=0.025 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 14:58:50.486197
    2020-11-15 14:58:50.486336

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 10 - Regularizacion=0.05 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 14:59:07.925127
    2020-11-15 14:59:07.925217

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 10 - Regularizacion=0.05 - iteracion = 25 - Evaluacion = (0.87, 0.814)
    2020-11-15 14:59:25.008193
    2020-11-15 14:59:25.008420

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 10 - Regularizacion=0.05 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 14:59:42.297740
    2020-11-15 14:59:42.297864

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 10 - Regularizacion=0.05 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 14:59:59.466015
    2020-11-15 14:59:59.466112

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 10 - Regularizacion=0.05 - iteracion = 200 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:00:16.907640
    2020-11-15 15:00:16.907855

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 10 - Regularizacion=0.1 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:00:33.930678
    2020-11-15 15:00:33.930780

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 10 - Regularizacion=0.1 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:00:51.021045
    2020-11-15 15:00:51.021136

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 10 - Regularizacion=0.1 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:01:07.937847
    2020-11-15 15:01:07.937950

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 10 - Regularizacion=0.1 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:01:24.931713
    2020-11-15 15:01:24.931818

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 10 - Regularizacion=0.1 - iteracion = 200 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:01:42.249295
    2020-11-15 15:01:42.249391

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 10 - Regularizacion=0.2 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:01:59.564100
    2020-11-15 15:01:59.564209

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 10 - Regularizacion=0.2 - iteracion = 25 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:02:16.298473
    2020-11-15 15:02:16.298580

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 10 - Regularizacion=0.2 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:02:33.636072
    2020-11-15 15:02:33.636185

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 10 - Regularizacion=0.2 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:02:51.222269
    2020-11-15 15:02:51.222365

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 10 - Regularizacion=0.2 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:03:08.698096
    2020-11-15 15:03:08.698190

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 10 - Regularizacion=0.4 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:03:25.989031
    2020-11-15 15:03:25.989129

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 10 - Regularizacion=0.4 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:03:45.449068
    2020-11-15 15:03:45.449207

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 10 - Regularizacion=0.4 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:04:03.953881
    2020-11-15 15:04:03.953988

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 10 - Regularizacion=0.4 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:04:21.879286
    2020-11-15 15:04:21.879391

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 10 - Regularizacion=0.4 - iteracion = 200 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:04:39.199608
    2020-11-15 15:04:39.199714

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 15 - Regularizacion=0.025 - iteracion = 10 - Evaluacion = (0.872, 0.814)
    2020-11-15 15:04:58.141120
    2020-11-15 15:04:58.141216

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 15 - Regularizacion=0.025 - iteracion = 25 - Evaluacion = (0.869, 0.814)
    2020-11-15 15:05:16.411764
    2020-11-15 15:05:16.411957

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 15 - Regularizacion=0.025 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:05:34.803565
    2020-11-15 15:05:34.803671

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 15 - Regularizacion=0.025 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:05:52.963262
    2020-11-15 15:05:52.963364

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 15 - Regularizacion=0.025 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:06:09.787056
    2020-11-15 15:06:09.787177

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 15 - Regularizacion=0.05 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:06:26.570031
    2020-11-15 15:06:26.570139

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 15 - Regularizacion=0.05 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:06:43.320509
    2020-11-15 15:06:43.320604

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 15 - Regularizacion=0.05 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:07:00.908930
    2020-11-15 15:07:00.909413

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 15 - Regularizacion=0.05 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:07:19.868652
    2020-11-15 15:07:19.868803

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 15 - Regularizacion=0.05 - iteracion = 200 - Evaluacion = (0.872, 0.814)
    2020-11-15 15:07:36.602936
    2020-11-15 15:07:36.603086

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 15 - Regularizacion=0.1 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:07:53.743764
    2020-11-15 15:07:53.743868

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 15 - Regularizacion=0.1 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:08:10.939626
    2020-11-15 15:08:10.939732

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 15 - Regularizacion=0.1 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:08:28.097152
    2020-11-15 15:08:28.097257

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 15 - Regularizacion=0.1 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:08:44.787133
    2020-11-15 15:08:44.787245

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 15 - Regularizacion=0.1 - iteracion = 200 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:09:01.261159
    2020-11-15 15:09:01.261264

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 15 - Regularizacion=0.2 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:09:17.769190
    2020-11-15 15:09:17.769572

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 15 - Regularizacion=0.2 - iteracion = 25 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:09:34.408439
    2020-11-15 15:09:34.408555

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 15 - Regularizacion=0.2 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:09:50.914877
    2020-11-15 15:09:50.914983

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 15 - Regularizacion=0.2 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:10:07.428295
    2020-11-15 15:10:07.428405

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 15 - Regularizacion=0.2 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:10:23.988518
    2020-11-15 15:10:23.988696

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 15 - Regularizacion=0.4 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:10:41.348908
    2020-11-15 15:10:41.349014

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 15 - Regularizacion=0.4 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:10:58.804227
    2020-11-15 15:10:58.804381

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 15 - Regularizacion=0.4 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:11:15.487677
    2020-11-15 15:11:15.487781

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 15 - Regularizacion=0.4 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:11:34.238760
    2020-11-15 15:11:34.238864

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 15 - Regularizacion=0.4 - iteracion = 200 - Evaluacion = (0.869, 0.814)
    2020-11-15 15:11:54.004085
    2020-11-15 15:11:54.004242

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 30 - Regularizacion=0.025 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:12:11.548493
    2020-11-15 15:12:11.548587

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 30 - Regularizacion=0.025 - iteracion = 25 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:12:29.154533
    2020-11-15 15:12:29.154658

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 30 - Regularizacion=0.025 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:12:47.268649
    2020-11-15 15:12:47.268749

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 30 - Regularizacion=0.025 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:13:06.136393
    2020-11-15 15:13:06.136862

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 30 - Regularizacion=0.025 - iteracion = 200 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:13:25.116177
    2020-11-15 15:13:25.116415

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 30 - Regularizacion=0.05 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:13:43.465335
    2020-11-15 15:13:43.465437

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 30 - Regularizacion=0.05 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:14:00.973166
    2020-11-15 15:14:00.973265

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 30 - Regularizacion=0.05 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:14:18.562028
    2020-11-15 15:14:18.562133

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 30 - Regularizacion=0.05 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:14:38.079274
    2020-11-15 15:14:38.079444

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 30 - Regularizacion=0.05 - iteracion = 200 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:14:58.783274
    2020-11-15 15:14:58.783377

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 30 - Regularizacion=0.1 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:15:16.085747
    2020-11-15 15:15:16.085853

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 30 - Regularizacion=0.1 - iteracion = 25 - Evaluacion = (0.872, 0.814)
    2020-11-15 15:15:33.605144
    2020-11-15 15:15:33.605354

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 30 - Regularizacion=0.1 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:15:51.048574
    2020-11-15 15:15:51.048730

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 30 - Regularizacion=0.1 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:16:07.620860
    2020-11-15 15:16:07.621027

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 30 - Regularizacion=0.1 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:16:24.164745
    2020-11-15 15:16:24.164853

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 30 - Regularizacion=0.2 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:16:40.799426
    2020-11-15 15:16:40.799635

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 30 - Regularizacion=0.2 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:16:57.689956
    2020-11-15 15:16:57.690061

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 30 - Regularizacion=0.2 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:17:14.253564
    2020-11-15 15:17:14.253672

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 30 - Regularizacion=0.2 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:17:30.903163
    2020-11-15 15:17:30.903265

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 30 - Regularizacion=0.2 - iteracion = 200 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:17:48.289136
    2020-11-15 15:17:48.289372

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 30 - Regularizacion=0.4 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:18:05.944989
    2020-11-15 15:18:05.945093

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 30 - Regularizacion=0.4 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:18:23.859844
    2020-11-15 15:18:23.859986

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 30 - Regularizacion=0.4 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:18:40.668319
    2020-11-15 15:18:40.668421

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 30 - Regularizacion=0.4 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:18:57.726315
    2020-11-15 15:18:57.726451

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 30 - Regularizacion=0.4 - iteracion = 200 - Evaluacion = (0.872, 0.814)
    2020-11-15 15:19:14.543060
    2020-11-15 15:19:14.543167

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 35 - Regularizacion=0.025 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:19:32.117894
    2020-11-15 15:19:32.118068

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 35 - Regularizacion=0.025 - iteracion = 25 - Evaluacion = (0.872, 0.814)
    2020-11-15 15:19:50.408272
    2020-11-15 15:19:50.408365

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 35 - Regularizacion=0.025 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:20:08.840382
    2020-11-15 15:20:08.840645

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 35 - Regularizacion=0.025 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:20:25.769168
    2020-11-15 15:20:25.769274

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 35 - Regularizacion=0.025 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:20:45.629600
    2020-11-15 15:20:45.629720

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 35 - Regularizacion=0.05 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:21:03.036909
    2020-11-15 15:21:03.037017

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 35 - Regularizacion=0.05 - iteracion = 25 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:21:19.732319
    2020-11-15 15:21:19.732427

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 35 - Regularizacion=0.05 - iteracion = 50 - Evaluacion = (0.869, 0.814)
    2020-11-15 15:21:36.495923
    2020-11-15 15:21:36.496036

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 35 - Regularizacion=0.05 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:21:54.447500
    2020-11-15 15:21:54.447720

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 35 - Regularizacion=0.05 - iteracion = 200 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:22:12.619300
    2020-11-15 15:22:12.619433

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 35 - Regularizacion=0.1 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:22:29.114048
    2020-11-15 15:22:29.114150

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 35 - Regularizacion=0.1 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:22:46.089076
    2020-11-15 15:22:46.089179

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 35 - Regularizacion=0.1 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:23:03.735488
    2020-11-15 15:23:03.735600

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 35 - Regularizacion=0.1 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:23:21.347425
    2020-11-15 15:23:21.347528

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 35 - Regularizacion=0.1 - iteracion = 200 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:23:38.304634
    2020-11-15 15:23:38.304739

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 35 - Regularizacion=0.2 - iteracion = 10 - Evaluacion = (0.869, 0.814)
    2020-11-15 15:23:56.003593
    2020-11-15 15:23:56.003715

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 35 - Regularizacion=0.2 - iteracion = 25 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:24:15.317163
    2020-11-15 15:24:15.317271

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 35 - Regularizacion=0.2 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:24:34.061992
    2020-11-15 15:24:34.062109

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 35 - Regularizacion=0.2 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:24:51.545341
    2020-11-15 15:24:51.545545

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 35 - Regularizacion=0.2 - iteracion = 200 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:25:09.472098
    2020-11-15 15:25:09.472204

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 35 - Regularizacion=0.4 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:25:28.298363
    2020-11-15 15:25:28.298475

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 35 - Regularizacion=0.4 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:25:46.394020
    2020-11-15 15:25:46.394170

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 35 - Regularizacion=0.4 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:26:04.160607
    2020-11-15 15:26:04.160752

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 35 - Regularizacion=0.4 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:26:21.430154
    2020-11-15 15:26:21.430354

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=10 - Alfa= 35 - Regularizacion=0.4 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:26:38.760565
    2020-11-15 15:26:38.760730

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 5 - Regularizacion=0.025 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:26:56.128113
    2020-11-15 15:26:56.128211

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 5 - Regularizacion=0.025 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:27:17.457775
    2020-11-15 15:27:17.457916

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 5 - Regularizacion=0.025 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:27:36.768988
    2020-11-15 15:27:36.769089

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 5 - Regularizacion=0.025 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:27:55.314710
    2020-11-15 15:27:55.314807

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 5 - Regularizacion=0.025 - iteracion = 200 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:28:14.470415
    2020-11-15 15:28:14.471118

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 5 - Regularizacion=0.05 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:28:32.073737
    2020-11-15 15:28:32.073841

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 5 - Regularizacion=0.05 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:28:50.423452
    2020-11-15 15:28:50.423576

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 5 - Regularizacion=0.05 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:29:10.174518
    2020-11-15 15:29:10.174630

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 5 - Regularizacion=0.05 - iteracion = 100 - Evaluacion = (0.872, 0.814)
    2020-11-15 15:29:29.111867
    2020-11-15 15:29:29.112003

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 5 - Regularizacion=0.05 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:29:48.247098
    2020-11-15 15:29:48.247199

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 5 - Regularizacion=0.1 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:30:06.182593
    2020-11-15 15:30:06.182711

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 5 - Regularizacion=0.1 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:30:23.715802
    2020-11-15 15:30:23.715913

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 5 - Regularizacion=0.1 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:30:40.933030
    2020-11-15 15:30:40.933143

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 5 - Regularizacion=0.1 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:30:58.815287
    2020-11-15 15:30:58.815387

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 5 - Regularizacion=0.1 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:31:17.552501
    2020-11-15 15:31:17.552622

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 5 - Regularizacion=0.2 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:31:36.265096
    2020-11-15 15:31:36.265207

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 5 - Regularizacion=0.2 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:31:56.765053
    2020-11-15 15:31:56.765147

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 5 - Regularizacion=0.2 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:32:15.231274
    2020-11-15 15:32:15.231378

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 5 - Regularizacion=0.2 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:32:34.781224
    2020-11-15 15:32:34.781447

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 5 - Regularizacion=0.2 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:32:53.895528
    2020-11-15 15:32:53.895793

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 5 - Regularizacion=0.4 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:33:13.026376
    2020-11-15 15:33:13.026504

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 5 - Regularizacion=0.4 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:33:30.373059
    2020-11-15 15:33:30.373166

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 5 - Regularizacion=0.4 - iteracion = 50 - Evaluacion = (0.869, 0.814)
    2020-11-15 15:33:47.886052
    2020-11-15 15:33:47.886158

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 5 - Regularizacion=0.4 - iteracion = 100 - Evaluacion = (0.869, 0.814)
    2020-11-15 15:34:05.206196
    2020-11-15 15:34:05.206307

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 5 - Regularizacion=0.4 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:34:23.387035
    2020-11-15 15:34:23.387201

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 10 - Regularizacion=0.025 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:34:41.115121
    2020-11-15 15:34:41.115261

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 10 - Regularizacion=0.025 - iteracion = 25 - Evaluacion = (0.872, 0.814)
    2020-11-15 15:34:58.630588
    2020-11-15 15:34:58.630736

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 10 - Regularizacion=0.025 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:35:16.177524
    2020-11-15 15:35:16.177632

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 10 - Regularizacion=0.025 - iteracion = 100 - Evaluacion = (0.872, 0.814)
    2020-11-15 15:35:32.758393
    2020-11-15 15:35:32.758500

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 10 - Regularizacion=0.025 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:35:49.266718
    2020-11-15 15:35:49.266827

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 10 - Regularizacion=0.05 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:36:05.932444
    2020-11-15 15:36:05.932548

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 10 - Regularizacion=0.05 - iteracion = 25 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:36:22.468883
    2020-11-15 15:36:22.468986

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 10 - Regularizacion=0.05 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:36:39.050835
    2020-11-15 15:36:39.050938

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 10 - Regularizacion=0.05 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:36:55.777101
    2020-11-15 15:36:55.777199

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 10 - Regularizacion=0.05 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:37:13.022816
    2020-11-15 15:37:13.022941

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 10 - Regularizacion=0.1 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:37:30.384497
    2020-11-15 15:37:30.384588

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 10 - Regularizacion=0.1 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:37:47.599100
    2020-11-15 15:37:47.599194

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 10 - Regularizacion=0.1 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:38:04.987065
    2020-11-15 15:38:04.987159

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 10 - Regularizacion=0.1 - iteracion = 100 - Evaluacion = (0.869, 0.814)
    2020-11-15 15:38:22.801165
    2020-11-15 15:38:22.801332

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 10 - Regularizacion=0.1 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:38:39.918120
    2020-11-15 15:38:39.918237

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 10 - Regularizacion=0.2 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:38:56.933265
    2020-11-15 15:38:56.933364

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 10 - Regularizacion=0.2 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:39:14.867037
    2020-11-15 15:39:14.867131

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 10 - Regularizacion=0.2 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:39:32.858872
    2020-11-15 15:39:32.859030

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 10 - Regularizacion=0.2 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:39:50.664227
    2020-11-15 15:39:50.664319

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 10 - Regularizacion=0.2 - iteracion = 200 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:40:07.818701
    2020-11-15 15:40:07.818809

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 10 - Regularizacion=0.4 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:40:25.816342
    2020-11-15 15:40:25.816514

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 10 - Regularizacion=0.4 - iteracion = 25 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:40:43.657444
    2020-11-15 15:40:43.657554

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 10 - Regularizacion=0.4 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:41:01.066479
    2020-11-15 15:41:01.066592

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 10 - Regularizacion=0.4 - iteracion = 100 - Evaluacion = (0.869, 0.814)
    2020-11-15 15:41:18.316445
    2020-11-15 15:41:18.316561

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 10 - Regularizacion=0.4 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:41:35.558548
    2020-11-15 15:41:35.558651

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 15 - Regularizacion=0.025 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:41:54.218140
    2020-11-15 15:41:54.218255

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 15 - Regularizacion=0.025 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:42:10.772776
    2020-11-15 15:42:10.772879

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 15 - Regularizacion=0.025 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:42:27.166745
    2020-11-15 15:42:27.166854

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 15 - Regularizacion=0.025 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:42:43.659419
    2020-11-15 15:42:43.659528

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 15 - Regularizacion=0.025 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:43:00.830224
    2020-11-15 15:43:00.830358

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 15 - Regularizacion=0.05 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:43:18.667973
    2020-11-15 15:43:18.668100

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 15 - Regularizacion=0.05 - iteracion = 25 - Evaluacion = (0.872, 0.814)
    2020-11-15 15:43:35.885131
    2020-11-15 15:43:35.885235

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 15 - Regularizacion=0.05 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:43:52.413374
    2020-11-15 15:43:52.413480

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 15 - Regularizacion=0.05 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:44:09.371043
    2020-11-15 15:44:09.371146

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 15 - Regularizacion=0.05 - iteracion = 200 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:44:26.302076
    2020-11-15 15:44:26.302230

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 15 - Regularizacion=0.1 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:44:44.084116
    2020-11-15 15:44:44.084205

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 15 - Regularizacion=0.1 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:45:01.239640
    2020-11-15 15:45:01.239854

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 15 - Regularizacion=0.1 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:45:18.879138
    2020-11-15 15:45:18.879264

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 15 - Regularizacion=0.1 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:45:37.121393
    2020-11-15 15:45:37.121493

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 15 - Regularizacion=0.1 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:45:54.946084
    2020-11-15 15:45:54.946200

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 15 - Regularizacion=0.2 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:46:12.507573
    2020-11-15 15:46:12.507726

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 15 - Regularizacion=0.2 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:46:29.699451
    2020-11-15 15:46:29.699552

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 15 - Regularizacion=0.2 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:46:46.245493
    2020-11-15 15:46:46.245609

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 15 - Regularizacion=0.2 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:47:02.729555
    2020-11-15 15:47:02.729659

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 15 - Regularizacion=0.2 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:47:19.305676
    2020-11-15 15:47:19.305783

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 15 - Regularizacion=0.4 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:47:35.726434
    2020-11-15 15:47:35.726540

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 15 - Regularizacion=0.4 - iteracion = 25 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:47:52.343293
    2020-11-15 15:47:52.343472

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 15 - Regularizacion=0.4 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:48:08.546819
    2020-11-15 15:48:08.546923

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 15 - Regularizacion=0.4 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:48:24.790612
    2020-11-15 15:48:24.790717

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 15 - Regularizacion=0.4 - iteracion = 200 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:48:40.802903
    2020-11-15 15:48:40.803047

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 30 - Regularizacion=0.025 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:48:56.907654
    2020-11-15 15:48:56.907755

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 30 - Regularizacion=0.025 - iteracion = 25 - Evaluacion = (0.869, 0.814)
    2020-11-15 15:49:13.481114
    2020-11-15 15:49:13.481222

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 30 - Regularizacion=0.025 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:49:30.503208
    2020-11-15 15:49:30.503403

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 30 - Regularizacion=0.025 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:49:47.927045
    2020-11-15 15:49:47.927140

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 30 - Regularizacion=0.025 - iteracion = 200 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:50:05.305760
    2020-11-15 15:50:05.305855

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 30 - Regularizacion=0.05 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:50:23.052045
    2020-11-15 15:50:23.052144

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 30 - Regularizacion=0.05 - iteracion = 25 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:50:40.545981
    2020-11-15 15:50:40.546084

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 30 - Regularizacion=0.05 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:50:58.443599
    2020-11-15 15:50:58.443708

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 30 - Regularizacion=0.05 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:51:16.651173
    2020-11-15 15:51:16.651394

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 30 - Regularizacion=0.05 - iteracion = 200 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:51:37.682419
    2020-11-15 15:51:37.682528

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 30 - Regularizacion=0.1 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:51:54.072589
    2020-11-15 15:51:54.072793

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 30 - Regularizacion=0.1 - iteracion = 25 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:52:10.203555
    2020-11-15 15:52:10.203662

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 30 - Regularizacion=0.1 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:52:26.549352
    2020-11-15 15:52:26.549459

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 30 - Regularizacion=0.1 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:52:42.739399
    2020-11-15 15:52:42.739505

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 30 - Regularizacion=0.1 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:52:58.290804
    2020-11-15 15:52:58.290911

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 30 - Regularizacion=0.2 - iteracion = 10 - Evaluacion = (0.869, 0.814)
    2020-11-15 15:53:14.329836
    2020-11-15 15:53:14.329940

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 30 - Regularizacion=0.2 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:53:30.071775
    2020-11-15 15:53:30.071881

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 30 - Regularizacion=0.2 - iteracion = 50 - Evaluacion = (0.869, 0.814)
    2020-11-15 15:53:46.007508
    2020-11-15 15:53:46.007611

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 30 - Regularizacion=0.2 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:54:02.284301
    2020-11-15 15:54:02.284397

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 30 - Regularizacion=0.2 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:54:19.203315
    2020-11-15 15:54:19.203423

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 30 - Regularizacion=0.4 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:54:36.343968
    2020-11-15 15:54:36.344064

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 30 - Regularizacion=0.4 - iteracion = 25 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:54:53.264003
    2020-11-15 15:54:53.264215

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 30 - Regularizacion=0.4 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:55:10.498551
    2020-11-15 15:55:10.498647

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 30 - Regularizacion=0.4 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:55:27.266358
    2020-11-15 15:55:27.266470

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 30 - Regularizacion=0.4 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:55:43.989733
    2020-11-15 15:55:43.989827

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 35 - Regularizacion=0.025 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:56:01.740113
    2020-11-15 15:56:01.740209

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 35 - Regularizacion=0.025 - iteracion = 25 - Evaluacion = (0.872, 0.814)
    2020-11-15 15:56:18.266715
    2020-11-15 15:56:18.266833

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 35 - Regularizacion=0.025 - iteracion = 50 - Evaluacion = (0.872, 0.814)
    2020-11-15 15:56:35.161691
    2020-11-15 15:56:35.161784

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 35 - Regularizacion=0.025 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:56:52.146861
    2020-11-15 15:56:52.146977

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 35 - Regularizacion=0.025 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:57:09.247553
    2020-11-15 15:57:09.247712

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 35 - Regularizacion=0.05 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:57:26.967090
    2020-11-15 15:57:26.967216

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 35 - Regularizacion=0.05 - iteracion = 25 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:57:44.285133
    2020-11-15 15:57:44.285229

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 35 - Regularizacion=0.05 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:58:00.835177
    2020-11-15 15:58:00.835282

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 35 - Regularizacion=0.05 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:58:17.409637
    2020-11-15 15:58:17.409749

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 35 - Regularizacion=0.05 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:58:34.021267
    2020-11-15 15:58:34.021399

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 35 - Regularizacion=0.1 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:58:51.750664
    2020-11-15 15:58:51.750805

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 35 - Regularizacion=0.1 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:59:09.533789
    2020-11-15 15:59:09.533884

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 35 - Regularizacion=0.1 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 15:59:26.359511
    2020-11-15 15:59:26.359603

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 35 - Regularizacion=0.1 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 15:59:43.263872
    2020-11-15 15:59:43.263977

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 35 - Regularizacion=0.1 - iteracion = 200 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:00:00.153648
    2020-11-15 16:00:00.153737

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 35 - Regularizacion=0.2 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:00:16.851936
    2020-11-15 16:00:16.852047

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 35 - Regularizacion=0.2 - iteracion = 25 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:00:33.565665
    2020-11-15 16:00:33.565781

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 35 - Regularizacion=0.2 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:00:50.175113
    2020-11-15 16:00:50.175307

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 35 - Regularizacion=0.2 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:01:07.507935
    2020-11-15 16:01:07.508167

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 35 - Regularizacion=0.2 - iteracion = 200 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:01:24.533468
    2020-11-15 16:01:24.533572

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 35 - Regularizacion=0.4 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:01:41.116973
    2020-11-15 16:01:41.117075

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 35 - Regularizacion=0.4 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:01:58.242515
    2020-11-15 16:01:58.242619

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 35 - Regularizacion=0.4 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:02:14.981652
    2020-11-15 16:02:14.981755

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 35 - Regularizacion=0.4 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:02:31.899197
    2020-11-15 16:02:31.899297

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=20 - Alfa= 35 - Regularizacion=0.4 - iteracion = 200 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:02:48.899584
    2020-11-15 16:02:48.899790

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 5 - Regularizacion=0.025 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:03:05.959419
    2020-11-15 16:03:05.959547

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 5 - Regularizacion=0.025 - iteracion = 25 - Evaluacion = (0.872, 0.814)
    2020-11-15 16:03:22.764288
    2020-11-15 16:03:22.764390

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 5 - Regularizacion=0.025 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:03:39.473173
    2020-11-15 16:03:39.473280

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 5 - Regularizacion=0.025 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:03:56.016176
    2020-11-15 16:03:56.016281

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 5 - Regularizacion=0.025 - iteracion = 200 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:04:12.691417
    2020-11-15 16:04:12.691523

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 5 - Regularizacion=0.05 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:04:29.453809
    2020-11-15 16:04:29.453914

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 5 - Regularizacion=0.05 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:04:46.217855
    2020-11-15 16:04:46.217967

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 5 - Regularizacion=0.05 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:05:02.873391
    2020-11-15 16:05:02.873534

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 5 - Regularizacion=0.05 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:05:19.636597
    2020-11-15 16:05:19.636743

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 5 - Regularizacion=0.05 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:05:36.159137
    2020-11-15 16:05:36.159240

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 5 - Regularizacion=0.1 - iteracion = 10 - Evaluacion = (0.872, 0.814)
    2020-11-15 16:05:53.071702
    2020-11-15 16:05:53.071805

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 5 - Regularizacion=0.1 - iteracion = 25 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:06:10.015069
    2020-11-15 16:06:10.015172

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 5 - Regularizacion=0.1 - iteracion = 50 - Evaluacion = (0.872, 0.814)
    2020-11-15 16:06:26.673924
    2020-11-15 16:06:26.674025

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 5 - Regularizacion=0.1 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:06:43.290380
    2020-11-15 16:06:43.290535

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 5 - Regularizacion=0.1 - iteracion = 200 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:06:59.845187
    2020-11-15 16:06:59.845296

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 5 - Regularizacion=0.2 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:07:16.897704
    2020-11-15 16:07:16.897807

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 5 - Regularizacion=0.2 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:07:33.605696
    2020-11-15 16:07:33.605789

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 5 - Regularizacion=0.2 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:07:50.108655
    2020-11-15 16:07:50.108758

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 5 - Regularizacion=0.2 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:08:06.899693
    2020-11-15 16:08:06.899782

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 5 - Regularizacion=0.2 - iteracion = 200 - Evaluacion = (0.872, 0.814)
    2020-11-15 16:08:23.459060
    2020-11-15 16:08:23.459164

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 5 - Regularizacion=0.4 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:08:40.188143
    2020-11-15 16:08:40.188243

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 5 - Regularizacion=0.4 - iteracion = 25 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:08:57.285881
    2020-11-15 16:08:57.285986

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 5 - Regularizacion=0.4 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:09:13.834765
    2020-11-15 16:09:13.834870

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 5 - Regularizacion=0.4 - iteracion = 100 - Evaluacion = (0.869, 0.814)
    2020-11-15 16:09:30.324285
    2020-11-15 16:09:30.324389

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 5 - Regularizacion=0.4 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:09:47.070456
    2020-11-15 16:09:47.070556

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 10 - Regularizacion=0.025 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:10:03.836118
    2020-11-15 16:10:03.836221

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 10 - Regularizacion=0.025 - iteracion = 25 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:10:20.507012
    2020-11-15 16:10:20.507116

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 10 - Regularizacion=0.025 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:10:36.977206
    2020-11-15 16:10:36.977313

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 10 - Regularizacion=0.025 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:10:53.467672
    2020-11-15 16:10:53.467775

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 10 - Regularizacion=0.025 - iteracion = 200 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:11:10.157892
    2020-11-15 16:11:10.157996

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 10 - Regularizacion=0.05 - iteracion = 10 - Evaluacion = (0.872, 0.814)
    2020-11-15 16:11:26.846443
    2020-11-15 16:11:26.846548

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 10 - Regularizacion=0.05 - iteracion = 25 - Evaluacion = (0.869, 0.814)
    2020-11-15 16:11:43.400035
    2020-11-15 16:11:43.400138

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 10 - Regularizacion=0.05 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:11:59.938696
    2020-11-15 16:11:59.938801

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 10 - Regularizacion=0.05 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:12:16.630067
    2020-11-15 16:12:16.630172

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 10 - Regularizacion=0.05 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:12:33.284503
    2020-11-15 16:12:33.284613

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 10 - Regularizacion=0.1 - iteracion = 10 - Evaluacion = (0.869, 0.814)
    2020-11-15 16:12:49.976997
    2020-11-15 16:12:49.977101

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 10 - Regularizacion=0.1 - iteracion = 25 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:13:07.001647
    2020-11-15 16:13:07.001787

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 10 - Regularizacion=0.1 - iteracion = 50 - Evaluacion = (0.869, 0.814)
    2020-11-15 16:13:23.874684
    2020-11-15 16:13:23.875028

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 10 - Regularizacion=0.1 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:13:40.403405
    2020-11-15 16:13:40.403508

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 10 - Regularizacion=0.1 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:13:57.243544
    2020-11-15 16:13:57.243650

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 10 - Regularizacion=0.2 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:14:13.951573
    2020-11-15 16:14:13.951678

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 10 - Regularizacion=0.2 - iteracion = 25 - Evaluacion = (0.869, 0.814)
    2020-11-15 16:14:30.664479
    2020-11-15 16:14:30.664677

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 10 - Regularizacion=0.2 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:14:47.242943
    2020-11-15 16:14:47.243047

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 10 - Regularizacion=0.2 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:15:03.876633
    2020-11-15 16:15:03.876963

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 10 - Regularizacion=0.2 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:15:20.445851
    2020-11-15 16:15:20.445956

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 10 - Regularizacion=0.4 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:15:37.270827
    2020-11-15 16:15:37.270929

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 10 - Regularizacion=0.4 - iteracion = 25 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:15:53.829669
    2020-11-15 16:15:53.829775

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 10 - Regularizacion=0.4 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:16:10.431165
    2020-11-15 16:16:10.431267

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 10 - Regularizacion=0.4 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:16:27.283341
    2020-11-15 16:16:27.283443

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 10 - Regularizacion=0.4 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:16:43.819403
    2020-11-15 16:16:43.819507

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 15 - Regularizacion=0.025 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:17:00.343206
    2020-11-15 16:17:00.343311

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 15 - Regularizacion=0.025 - iteracion = 25 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:17:16.881275
    2020-11-15 16:17:16.881379

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 15 - Regularizacion=0.025 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:17:33.389907
    2020-11-15 16:17:33.390013

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 15 - Regularizacion=0.025 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:17:50.241742
    2020-11-15 16:17:50.241837

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 15 - Regularizacion=0.025 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:18:06.804250
    2020-11-15 16:18:06.804353

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 15 - Regularizacion=0.05 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:18:23.380950
    2020-11-15 16:18:23.381060

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 15 - Regularizacion=0.05 - iteracion = 25 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:18:39.927836
    2020-11-15 16:18:39.927941

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 15 - Regularizacion=0.05 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:18:56.523271
    2020-11-15 16:18:56.523374

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 15 - Regularizacion=0.05 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:19:13.246108
    2020-11-15 16:19:13.246218

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 15 - Regularizacion=0.05 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:19:30.246237
    2020-11-15 16:19:30.246326

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 15 - Regularizacion=0.1 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:19:46.764424
    2020-11-15 16:19:46.764528

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 15 - Regularizacion=0.1 - iteracion = 25 - Evaluacion = (0.869, 0.814)
    2020-11-15 16:20:03.324259
    2020-11-15 16:20:03.324480

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 15 - Regularizacion=0.1 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:20:20.083683
    2020-11-15 16:20:20.083788

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 15 - Regularizacion=0.1 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:20:36.644452
    2020-11-15 16:20:36.644557

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 15 - Regularizacion=0.1 - iteracion = 200 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:20:53.180426
    2020-11-15 16:20:53.180540

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 15 - Regularizacion=0.2 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:21:09.723074
    2020-11-15 16:21:09.723217

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 15 - Regularizacion=0.2 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:21:26.452972
    2020-11-15 16:21:26.453076

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 15 - Regularizacion=0.2 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:21:43.262001
    2020-11-15 16:21:43.262108

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 15 - Regularizacion=0.2 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:21:59.945735
    2020-11-15 16:21:59.945840

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 15 - Regularizacion=0.2 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:22:16.519487
    2020-11-15 16:22:16.519594

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 15 - Regularizacion=0.4 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:22:33.073349
    2020-11-15 16:22:33.073453

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 15 - Regularizacion=0.4 - iteracion = 25 - Evaluacion = (0.872, 0.814)
    2020-11-15 16:22:49.696796
    2020-11-15 16:22:49.697174

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 15 - Regularizacion=0.4 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:23:06.428139
    2020-11-15 16:23:06.428245

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 15 - Regularizacion=0.4 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:23:23.156620
    2020-11-15 16:23:23.156730

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 15 - Regularizacion=0.4 - iteracion = 200 - Evaluacion = (0.872, 0.814)
    2020-11-15 16:23:39.848547
    2020-11-15 16:23:39.848651

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 30 - Regularizacion=0.025 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:23:56.354493
    2020-11-15 16:23:56.354599

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 30 - Regularizacion=0.025 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:24:13.206724
    2020-11-15 16:24:13.206828

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 30 - Regularizacion=0.025 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:24:30.080471
    2020-11-15 16:24:30.080619

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 30 - Regularizacion=0.025 - iteracion = 100 - Evaluacion = (0.869, 0.814)
    2020-11-15 16:24:47.274526
    2020-11-15 16:24:47.274627

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 30 - Regularizacion=0.025 - iteracion = 200 - Evaluacion = (0.869, 0.814)
    2020-11-15 16:25:04.036161
    2020-11-15 16:25:04.036288

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 30 - Regularizacion=0.05 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:25:20.666001
    2020-11-15 16:25:20.666218

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 30 - Regularizacion=0.05 - iteracion = 25 - Evaluacion = (0.872, 0.814)
    2020-11-15 16:25:37.503340
    2020-11-15 16:25:37.503430

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 30 - Regularizacion=0.05 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:25:54.186423
    2020-11-15 16:25:54.186536

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 30 - Regularizacion=0.05 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:26:11.269207
    2020-11-15 16:26:11.269308

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 30 - Regularizacion=0.05 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:26:27.822420
    2020-11-15 16:26:27.822525

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 30 - Regularizacion=0.1 - iteracion = 10 - Evaluacion = (0.869, 0.814)
    2020-11-15 16:26:44.308146
    2020-11-15 16:26:44.308253

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 30 - Regularizacion=0.1 - iteracion = 25 - Evaluacion = (0.869, 0.814)
    2020-11-15 16:27:01.014759
    2020-11-15 16:27:01.014860

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 30 - Regularizacion=0.1 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:27:17.647468
    2020-11-15 16:27:17.647645

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 30 - Regularizacion=0.1 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:27:34.138202
    2020-11-15 16:27:34.138312

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 30 - Regularizacion=0.1 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:27:50.649779
    2020-11-15 16:27:50.649886

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 30 - Regularizacion=0.2 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:28:07.298715
    2020-11-15 16:28:07.298825

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 30 - Regularizacion=0.2 - iteracion = 25 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:28:23.852681
    2020-11-15 16:28:23.852784

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 30 - Regularizacion=0.2 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:28:40.405790
    2020-11-15 16:28:40.406093

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 30 - Regularizacion=0.2 - iteracion = 100 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:28:57.107712
    2020-11-15 16:28:57.107815

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 30 - Regularizacion=0.2 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:29:13.638850
    2020-11-15 16:29:13.638960

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 30 - Regularizacion=0.4 - iteracion = 10 - Evaluacion = (0.869, 0.814)
    2020-11-15 16:29:30.297112
    2020-11-15 16:29:30.297208

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 30 - Regularizacion=0.4 - iteracion = 25 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:29:47.220274
    2020-11-15 16:29:47.220412

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 30 - Regularizacion=0.4 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:30:03.943567
    2020-11-15 16:30:03.943673

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 30 - Regularizacion=0.4 - iteracion = 100 - Evaluacion = (0.869, 0.814)
    2020-11-15 16:30:20.425085
    2020-11-15 16:30:20.425191

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 30 - Regularizacion=0.4 - iteracion = 200 - Evaluacion = (0.869, 0.814)
    2020-11-15 16:30:36.925680
    2020-11-15 16:30:36.925788

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 35 - Regularizacion=0.025 - iteracion = 10 - Evaluacion = (0.869, 0.814)
    2020-11-15 16:30:53.592967
    2020-11-15 16:30:53.593074

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 35 - Regularizacion=0.025 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:31:10.367794
    2020-11-15 16:31:10.367898

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 35 - Regularizacion=0.025 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:31:26.925545
    2020-11-15 16:31:26.925653

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 35 - Regularizacion=0.025 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:31:43.433271
    2020-11-15 16:31:43.433373

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 35 - Regularizacion=0.025 - iteracion = 200 - Evaluacion = (0.872, 0.814)
    2020-11-15 16:32:00.033605
    2020-11-15 16:32:00.033780

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 35 - Regularizacion=0.05 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:32:16.667581
    2020-11-15 16:32:16.667674

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 35 - Regularizacion=0.05 - iteracion = 25 - Evaluacion = (0.869, 0.814)
    2020-11-15 16:32:33.357616
    2020-11-15 16:32:33.357718

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 35 - Regularizacion=0.05 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:32:50.119300
    2020-11-15 16:32:50.119405

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 35 - Regularizacion=0.05 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:33:07.031241
    2020-11-15 16:33:07.031334

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 35 - Regularizacion=0.05 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:33:24.768113
    2020-11-15 16:33:24.768213

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 35 - Regularizacion=0.1 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:33:43.269057
    2020-11-15 16:33:43.269169

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 35 - Regularizacion=0.1 - iteracion = 25 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:34:04.268036
    2020-11-15 16:34:04.268146

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 35 - Regularizacion=0.1 - iteracion = 50 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:34:22.007183
    2020-11-15 16:34:22.007290

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 35 - Regularizacion=0.1 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:34:39.776894
    2020-11-15 16:34:39.777000

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 35 - Regularizacion=0.1 - iteracion = 200 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:34:55.679438
    2020-11-15 16:34:55.679539

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 35 - Regularizacion=0.2 - iteracion = 10 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:35:11.131222
    2020-11-15 16:35:11.131326

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 35 - Regularizacion=0.2 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:35:26.537574
    2020-11-15 16:35:26.537676

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 35 - Regularizacion=0.2 - iteracion = 50 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:35:41.931851
    2020-11-15 16:35:41.931955

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 35 - Regularizacion=0.2 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:35:57.674327
    2020-11-15 16:35:57.674427

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 35 - Regularizacion=0.2 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:36:13.064235
    2020-11-15 16:36:13.064340

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 35 - Regularizacion=0.4 - iteracion = 10 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:36:28.559351
    2020-11-15 16:36:28.559454

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 35 - Regularizacion=0.4 - iteracion = 25 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:36:44.060772
    2020-11-15 16:36:44.060877

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 35 - Regularizacion=0.4 - iteracion = 50 - Evaluacion = (0.872, 0.814)
    2020-11-15 16:36:59.454463
    2020-11-15 16:36:59.454564

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    WARNING:implicit:This method is deprecated. Please use the AlternatingLeastSquares class instead

    Factor=30 - Alfa= 35 - Regularizacion=0.4 - iteracion = 100 - Evaluacion = (0.87, 0.814)
    2020-11-15 16:37:14.846695
    2020-11-15 16:37:14.846796

    HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=50.0), HTML(value='')))

    Factor=30 - Alfa= 35 - Regularizacion=0.4 - iteracion = 200 - Evaluacion = (0.871, 0.814)
    2020-11-15 16:37:30.262759

```python
print(x)
```

    +----------------------------+----------------------------+----------+-------+----------------+-------------+----------------+
    |           Inicio           |            Fin             | Factores | Alpha | Regularizacion | Iteraciones |   Evaluacion   |
    +----------------------------+----------------------------+----------+-------+----------------+-------------+----------------+
    | 2020-11-15 14:50:07.576023 | 2020-11-15 14:50:24.715615 |    10    |   5   |     0.025      |      10     | (0.872, 0.814) |
    | 2020-11-15 14:50:24.715720 | 2020-11-15 14:50:42.091137 |    10    |   5   |     0.025      |      25     | (0.872, 0.814) |
    | 2020-11-15 14:50:42.091243 | 2020-11-15 14:50:59.117397 |    10    |   5   |     0.025      |      50     | (0.871, 0.814) |
    | 2020-11-15 14:50:59.117503 | 2020-11-15 14:51:16.066141 |    10    |   5   |     0.025      |     100     | (0.871, 0.814) |
    | 2020-11-15 14:51:16.066248 | 2020-11-15 14:51:34.532649 |    10    |   5   |     0.025      |     200     | (0.871, 0.814) |
    | 2020-11-15 14:51:34.532753 | 2020-11-15 14:51:52.154195 |    10    |   5   |      0.05      |      10     | (0.871, 0.814) |
    | 2020-11-15 14:51:52.154325 | 2020-11-15 14:52:09.863152 |    10    |   5   |      0.05      |      25     | (0.87, 0.814)  |
    | 2020-11-15 14:52:09.863252 | 2020-11-15 14:52:27.588594 |    10    |   5   |      0.05      |      50     | (0.87, 0.814)  |
    | 2020-11-15 14:52:27.588695 | 2020-11-15 14:52:45.257192 |    10    |   5   |      0.05      |     100     | (0.87, 0.814)  |
    | 2020-11-15 14:52:45.258448 | 2020-11-15 14:53:03.317319 |    10    |   5   |      0.05      |     200     | (0.87, 0.814)  |
    | 2020-11-15 14:53:03.317483 | 2020-11-15 14:53:21.361006 |    10    |   5   |      0.1       |      10     | (0.871, 0.814) |
    | 2020-11-15 14:53:21.361128 | 2020-11-15 14:53:39.099407 |    10    |   5   |      0.1       |      25     | (0.871, 0.814) |
    | 2020-11-15 14:53:39.099581 | 2020-11-15 14:53:55.799914 |    10    |   5   |      0.1       |      50     | (0.871, 0.814) |
    | 2020-11-15 14:53:55.800020 | 2020-11-15 14:54:12.300456 |    10    |   5   |      0.1       |     100     | (0.871, 0.814) |
    | 2020-11-15 14:54:12.300564 | 2020-11-15 14:54:29.351803 |    10    |   5   |      0.1       |     200     | (0.87, 0.814)  |
    | 2020-11-15 14:54:29.351906 | 2020-11-15 14:54:46.778327 |    10    |   5   |      0.2       |      10     | (0.871, 0.814) |
    | 2020-11-15 14:54:46.778427 | 2020-11-15 14:55:04.020917 |    10    |   5   |      0.2       |      25     | (0.87, 0.814)  |
    | 2020-11-15 14:55:04.021021 | 2020-11-15 14:55:22.363370 |    10    |   5   |      0.2       |      50     | (0.87, 0.814)  |
    | 2020-11-15 14:55:22.363474 | 2020-11-15 14:55:40.971165 |    10    |   5   |      0.2       |     100     | (0.869, 0.814) |
    | 2020-11-15 14:55:40.971263 | 2020-11-15 14:55:58.365262 |    10    |   5   |      0.2       |     200     | (0.87, 0.814)  |
    | 2020-11-15 14:55:58.365357 | 2020-11-15 14:56:15.211771 |    10    |   5   |      0.4       |      10     | (0.871, 0.814) |
    | 2020-11-15 14:56:15.211865 | 2020-11-15 14:56:32.202565 |    10    |   5   |      0.4       |      25     | (0.87, 0.814)  |
    | 2020-11-15 14:56:32.202686 | 2020-11-15 14:56:49.240360 |    10    |   5   |      0.4       |      50     | (0.87, 0.814)  |
    | 2020-11-15 14:56:49.240461 | 2020-11-15 14:57:06.224855 |    10    |   5   |      0.4       |     100     | (0.872, 0.814) |
    | 2020-11-15 14:57:06.224953 | 2020-11-15 14:57:23.159882 |    10    |   5   |      0.4       |     200     | (0.869, 0.814) |
    | 2020-11-15 14:57:23.159986 | 2020-11-15 14:57:40.062976 |    10    |   10  |     0.025      |      10     | (0.87, 0.814)  |
    | 2020-11-15 14:57:40.063082 | 2020-11-15 14:57:57.341358 |    10    |   10  |     0.025      |      25     | (0.871, 0.814) |
    | 2020-11-15 14:57:57.341489 | 2020-11-15 14:58:15.620221 |    10    |   10  |     0.025      |      50     | (0.872, 0.814) |
    | 2020-11-15 14:58:15.620317 | 2020-11-15 14:58:32.968307 |    10    |   10  |     0.025      |     100     | (0.872, 0.814) |
    | 2020-11-15 14:58:32.968457 | 2020-11-15 14:58:50.486197 |    10    |   10  |     0.025      |     200     | (0.871, 0.814) |
    | 2020-11-15 14:58:50.486336 | 2020-11-15 14:59:07.925127 |    10    |   10  |      0.05      |      10     | (0.87, 0.814)  |
    | 2020-11-15 14:59:07.925217 | 2020-11-15 14:59:25.008193 |    10    |   10  |      0.05      |      25     | (0.87, 0.814)  |
    | 2020-11-15 14:59:25.008420 | 2020-11-15 14:59:42.297740 |    10    |   10  |      0.05      |      50     | (0.87, 0.814)  |
    | 2020-11-15 14:59:42.297864 | 2020-11-15 14:59:59.466015 |    10    |   10  |      0.05      |     100     | (0.87, 0.814)  |
    | 2020-11-15 14:59:59.466112 | 2020-11-15 15:00:16.907640 |    10    |   10  |      0.05      |     200     | (0.87, 0.814)  |
    | 2020-11-15 15:00:16.907855 | 2020-11-15 15:00:33.930678 |    10    |   10  |      0.1       |      10     | (0.87, 0.814)  |
    | 2020-11-15 15:00:33.930780 | 2020-11-15 15:00:51.021045 |    10    |   10  |      0.1       |      25     | (0.871, 0.814) |
    | 2020-11-15 15:00:51.021136 | 2020-11-15 15:01:07.937847 |    10    |   10  |      0.1       |      50     | (0.871, 0.814) |
    | 2020-11-15 15:01:07.937950 | 2020-11-15 15:01:24.931713 |    10    |   10  |      0.1       |     100     | (0.87, 0.814)  |
    | 2020-11-15 15:01:24.931818 | 2020-11-15 15:01:42.249295 |    10    |   10  |      0.1       |     200     | (0.87, 0.814)  |
    | 2020-11-15 15:01:42.249391 | 2020-11-15 15:01:59.564100 |    10    |   10  |      0.2       |      10     | (0.87, 0.814)  |
    | 2020-11-15 15:01:59.564209 | 2020-11-15 15:02:16.298473 |    10    |   10  |      0.2       |      25     | (0.87, 0.814)  |
    | 2020-11-15 15:02:16.298580 | 2020-11-15 15:02:33.636072 |    10    |   10  |      0.2       |      50     | (0.871, 0.814) |
    | 2020-11-15 15:02:33.636185 | 2020-11-15 15:02:51.222269 |    10    |   10  |      0.2       |     100     | (0.87, 0.814)  |
    | 2020-11-15 15:02:51.222365 | 2020-11-15 15:03:08.698096 |    10    |   10  |      0.2       |     200     | (0.871, 0.814) |
    | 2020-11-15 15:03:08.698190 | 2020-11-15 15:03:25.989031 |    10    |   10  |      0.4       |      10     | (0.871, 0.814) |
    | 2020-11-15 15:03:25.989129 | 2020-11-15 15:03:45.449068 |    10    |   10  |      0.4       |      25     | (0.871, 0.814) |
    | 2020-11-15 15:03:45.449207 | 2020-11-15 15:04:03.953881 |    10    |   10  |      0.4       |      50     | (0.871, 0.814) |
    | 2020-11-15 15:04:03.953988 | 2020-11-15 15:04:21.879286 |    10    |   10  |      0.4       |     100     | (0.87, 0.814)  |
    | 2020-11-15 15:04:21.879391 | 2020-11-15 15:04:39.199608 |    10    |   10  |      0.4       |     200     | (0.87, 0.814)  |
    | 2020-11-15 15:04:39.199714 | 2020-11-15 15:04:58.141120 |    10    |   15  |     0.025      |      10     | (0.872, 0.814) |
    | 2020-11-15 15:04:58.141216 | 2020-11-15 15:05:16.411764 |    10    |   15  |     0.025      |      25     | (0.869, 0.814) |
    | 2020-11-15 15:05:16.411957 | 2020-11-15 15:05:34.803565 |    10    |   15  |     0.025      |      50     | (0.87, 0.814)  |
    | 2020-11-15 15:05:34.803671 | 2020-11-15 15:05:52.963262 |    10    |   15  |     0.025      |     100     | (0.87, 0.814)  |
    | 2020-11-15 15:05:52.963364 | 2020-11-15 15:06:09.787056 |    10    |   15  |     0.025      |     200     | (0.871, 0.814) |
    | 2020-11-15 15:06:09.787177 | 2020-11-15 15:06:26.570031 |    10    |   15  |      0.05      |      10     | (0.87, 0.814)  |
    | 2020-11-15 15:06:26.570139 | 2020-11-15 15:06:43.320509 |    10    |   15  |      0.05      |      25     | (0.871, 0.814) |
    | 2020-11-15 15:06:43.320604 | 2020-11-15 15:07:00.908930 |    10    |   15  |      0.05      |      50     | (0.871, 0.814) |
    | 2020-11-15 15:07:00.909413 | 2020-11-15 15:07:19.868652 |    10    |   15  |      0.05      |     100     | (0.871, 0.814) |
    | 2020-11-15 15:07:19.868803 | 2020-11-15 15:07:36.602936 |    10    |   15  |      0.05      |     200     | (0.872, 0.814) |
    | 2020-11-15 15:07:36.603086 | 2020-11-15 15:07:53.743764 |    10    |   15  |      0.1       |      10     | (0.87, 0.814)  |
    | 2020-11-15 15:07:53.743868 | 2020-11-15 15:08:10.939626 |    10    |   15  |      0.1       |      25     | (0.871, 0.814) |
    | 2020-11-15 15:08:10.939732 | 2020-11-15 15:08:28.097152 |    10    |   15  |      0.1       |      50     | (0.871, 0.814) |
    | 2020-11-15 15:08:28.097257 | 2020-11-15 15:08:44.787133 |    10    |   15  |      0.1       |     100     | (0.871, 0.814) |
    | 2020-11-15 15:08:44.787245 | 2020-11-15 15:09:01.261159 |    10    |   15  |      0.1       |     200     | (0.87, 0.814)  |
    | 2020-11-15 15:09:01.261264 | 2020-11-15 15:09:17.769190 |    10    |   15  |      0.2       |      10     | (0.87, 0.814)  |
    | 2020-11-15 15:09:17.769572 | 2020-11-15 15:09:34.408439 |    10    |   15  |      0.2       |      25     | (0.87, 0.814)  |
    | 2020-11-15 15:09:34.408555 | 2020-11-15 15:09:50.914877 |    10    |   15  |      0.2       |      50     | (0.87, 0.814)  |
    | 2020-11-15 15:09:50.914983 | 2020-11-15 15:10:07.428295 |    10    |   15  |      0.2       |     100     | (0.871, 0.814) |
    | 2020-11-15 15:10:07.428405 | 2020-11-15 15:10:23.988518 |    10    |   15  |      0.2       |     200     | (0.871, 0.814) |
    | 2020-11-15 15:10:23.988696 | 2020-11-15 15:10:41.348908 |    10    |   15  |      0.4       |      10     | (0.871, 0.814) |
    | 2020-11-15 15:10:41.349014 | 2020-11-15 15:10:58.804227 |    10    |   15  |      0.4       |      25     | (0.871, 0.814) |
    | 2020-11-15 15:10:58.804381 | 2020-11-15 15:11:15.487677 |    10    |   15  |      0.4       |      50     | (0.871, 0.814) |
    | 2020-11-15 15:11:15.487781 | 2020-11-15 15:11:34.238760 |    10    |   15  |      0.4       |     100     | (0.871, 0.814) |
    | 2020-11-15 15:11:34.238864 | 2020-11-15 15:11:54.004085 |    10    |   15  |      0.4       |     200     | (0.869, 0.814) |
    | 2020-11-15 15:11:54.004242 | 2020-11-15 15:12:11.548493 |    10    |   30  |     0.025      |      10     | (0.871, 0.814) |
    | 2020-11-15 15:12:11.548587 | 2020-11-15 15:12:29.154533 |    10    |   30  |     0.025      |      25     | (0.87, 0.814)  |
    | 2020-11-15 15:12:29.154658 | 2020-11-15 15:12:47.268649 |    10    |   30  |     0.025      |      50     | (0.871, 0.814) |
    | 2020-11-15 15:12:47.268749 | 2020-11-15 15:13:06.136393 |    10    |   30  |     0.025      |     100     | (0.87, 0.814)  |
    | 2020-11-15 15:13:06.136862 | 2020-11-15 15:13:25.116177 |    10    |   30  |     0.025      |     200     | (0.87, 0.814)  |
    | 2020-11-15 15:13:25.116415 | 2020-11-15 15:13:43.465335 |    10    |   30  |      0.05      |      10     | (0.871, 0.814) |
    | 2020-11-15 15:13:43.465437 | 2020-11-15 15:14:00.973166 |    10    |   30  |      0.05      |      25     | (0.871, 0.814) |
    | 2020-11-15 15:14:00.973265 | 2020-11-15 15:14:18.562028 |    10    |   30  |      0.05      |      50     | (0.871, 0.814) |
    | 2020-11-15 15:14:18.562133 | 2020-11-15 15:14:38.079274 |    10    |   30  |      0.05      |     100     | (0.87, 0.814)  |
    | 2020-11-15 15:14:38.079444 | 2020-11-15 15:14:58.783274 |    10    |   30  |      0.05      |     200     | (0.87, 0.814)  |
    | 2020-11-15 15:14:58.783377 | 2020-11-15 15:15:16.085747 |    10    |   30  |      0.1       |      10     | (0.87, 0.814)  |
    | 2020-11-15 15:15:16.085853 | 2020-11-15 15:15:33.605144 |    10    |   30  |      0.1       |      25     | (0.872, 0.814) |
    | 2020-11-15 15:15:33.605354 | 2020-11-15 15:15:51.048574 |    10    |   30  |      0.1       |      50     | (0.87, 0.814)  |
    | 2020-11-15 15:15:51.048730 | 2020-11-15 15:16:07.620860 |    10    |   30  |      0.1       |     100     | (0.871, 0.814) |
    | 2020-11-15 15:16:07.621027 | 2020-11-15 15:16:24.164745 |    10    |   30  |      0.1       |     200     | (0.871, 0.814) |
    | 2020-11-15 15:16:24.164853 | 2020-11-15 15:16:40.799426 |    10    |   30  |      0.2       |      10     | (0.87, 0.814)  |
    | 2020-11-15 15:16:40.799635 | 2020-11-15 15:16:57.689956 |    10    |   30  |      0.2       |      25     | (0.871, 0.814) |
    | 2020-11-15 15:16:57.690061 | 2020-11-15 15:17:14.253564 |    10    |   30  |      0.2       |      50     | (0.871, 0.814) |
    | 2020-11-15 15:17:14.253672 | 2020-11-15 15:17:30.903163 |    10    |   30  |      0.2       |     100     | (0.87, 0.814)  |
    | 2020-11-15 15:17:30.903265 | 2020-11-15 15:17:48.289136 |    10    |   30  |      0.2       |     200     | (0.87, 0.814)  |
    | 2020-11-15 15:17:48.289372 | 2020-11-15 15:18:05.944989 |    10    |   30  |      0.4       |      10     | (0.871, 0.814) |
    | 2020-11-15 15:18:05.945093 | 2020-11-15 15:18:23.859844 |    10    |   30  |      0.4       |      25     | (0.871, 0.814) |
    | 2020-11-15 15:18:23.859986 | 2020-11-15 15:18:40.668319 |    10    |   30  |      0.4       |      50     | (0.871, 0.814) |
    | 2020-11-15 15:18:40.668421 | 2020-11-15 15:18:57.726315 |    10    |   30  |      0.4       |     100     | (0.871, 0.814) |
    | 2020-11-15 15:18:57.726451 | 2020-11-15 15:19:14.543060 |    10    |   30  |      0.4       |     200     | (0.872, 0.814) |
    | 2020-11-15 15:19:14.543167 | 2020-11-15 15:19:32.117894 |    10    |   35  |     0.025      |      10     | (0.871, 0.814) |
    | 2020-11-15 15:19:32.118068 | 2020-11-15 15:19:50.408272 |    10    |   35  |     0.025      |      25     | (0.872, 0.814) |
    | 2020-11-15 15:19:50.408365 | 2020-11-15 15:20:08.840382 |    10    |   35  |     0.025      |      50     | (0.87, 0.814)  |
    | 2020-11-15 15:20:08.840645 | 2020-11-15 15:20:25.769168 |    10    |   35  |     0.025      |     100     | (0.87, 0.814)  |
    | 2020-11-15 15:20:25.769274 | 2020-11-15 15:20:45.629600 |    10    |   35  |     0.025      |     200     | (0.871, 0.814) |
    | 2020-11-15 15:20:45.629720 | 2020-11-15 15:21:03.036909 |    10    |   35  |      0.05      |      10     | (0.871, 0.814) |
    | 2020-11-15 15:21:03.037017 | 2020-11-15 15:21:19.732319 |    10    |   35  |      0.05      |      25     | (0.87, 0.814)  |
    | 2020-11-15 15:21:19.732427 | 2020-11-15 15:21:36.495923 |    10    |   35  |      0.05      |      50     | (0.869, 0.814) |
    | 2020-11-15 15:21:36.496036 | 2020-11-15 15:21:54.447500 |    10    |   35  |      0.05      |     100     | (0.87, 0.814)  |
    | 2020-11-15 15:21:54.447720 | 2020-11-15 15:22:12.619300 |    10    |   35  |      0.05      |     200     | (0.87, 0.814)  |
    | 2020-11-15 15:22:12.619433 | 2020-11-15 15:22:29.114048 |    10    |   35  |      0.1       |      10     | (0.87, 0.814)  |
    | 2020-11-15 15:22:29.114150 | 2020-11-15 15:22:46.089076 |    10    |   35  |      0.1       |      25     | (0.871, 0.814) |
    | 2020-11-15 15:22:46.089179 | 2020-11-15 15:23:03.735488 |    10    |   35  |      0.1       |      50     | (0.87, 0.814)  |
    | 2020-11-15 15:23:03.735600 | 2020-11-15 15:23:21.347425 |    10    |   35  |      0.1       |     100     | (0.871, 0.814) |
    | 2020-11-15 15:23:21.347528 | 2020-11-15 15:23:38.304634 |    10    |   35  |      0.1       |     200     | (0.87, 0.814)  |
    | 2020-11-15 15:23:38.304739 | 2020-11-15 15:23:56.003593 |    10    |   35  |      0.2       |      10     | (0.869, 0.814) |
    | 2020-11-15 15:23:56.003715 | 2020-11-15 15:24:15.317163 |    10    |   35  |      0.2       |      25     | (0.87, 0.814)  |
    | 2020-11-15 15:24:15.317271 | 2020-11-15 15:24:34.061992 |    10    |   35  |      0.2       |      50     | (0.87, 0.814)  |
    | 2020-11-15 15:24:34.062109 | 2020-11-15 15:24:51.545341 |    10    |   35  |      0.2       |     100     | (0.871, 0.814) |
    | 2020-11-15 15:24:51.545545 | 2020-11-15 15:25:09.472098 |    10    |   35  |      0.2       |     200     | (0.87, 0.814)  |
    | 2020-11-15 15:25:09.472204 | 2020-11-15 15:25:28.298363 |    10    |   35  |      0.4       |      10     | (0.87, 0.814)  |
    | 2020-11-15 15:25:28.298475 | 2020-11-15 15:25:46.394020 |    10    |   35  |      0.4       |      25     | (0.871, 0.814) |
    | 2020-11-15 15:25:46.394170 | 2020-11-15 15:26:04.160607 |    10    |   35  |      0.4       |      50     | (0.87, 0.814)  |
    | 2020-11-15 15:26:04.160752 | 2020-11-15 15:26:21.430154 |    10    |   35  |      0.4       |     100     | (0.87, 0.814)  |
    | 2020-11-15 15:26:21.430354 | 2020-11-15 15:26:38.760565 |    10    |   35  |      0.4       |     200     | (0.871, 0.814) |
    | 2020-11-15 15:26:38.760730 | 2020-11-15 15:26:56.128113 |    20    |   5   |     0.025      |      10     | (0.871, 0.814) |
    | 2020-11-15 15:26:56.128211 | 2020-11-15 15:27:17.457775 |    20    |   5   |     0.025      |      25     | (0.871, 0.814) |
    | 2020-11-15 15:27:17.457916 | 2020-11-15 15:27:36.768988 |    20    |   5   |     0.025      |      50     | (0.87, 0.814)  |
    | 2020-11-15 15:27:36.769089 | 2020-11-15 15:27:55.314710 |    20    |   5   |     0.025      |     100     | (0.871, 0.814) |
    | 2020-11-15 15:27:55.314807 | 2020-11-15 15:28:14.470415 |    20    |   5   |     0.025      |     200     | (0.87, 0.814)  |
    | 2020-11-15 15:28:14.471118 | 2020-11-15 15:28:32.073737 |    20    |   5   |      0.05      |      10     | (0.871, 0.814) |
    | 2020-11-15 15:28:32.073841 | 2020-11-15 15:28:50.423452 |    20    |   5   |      0.05      |      25     | (0.871, 0.814) |
    | 2020-11-15 15:28:50.423576 | 2020-11-15 15:29:10.174518 |    20    |   5   |      0.05      |      50     | (0.87, 0.814)  |
    | 2020-11-15 15:29:10.174630 | 2020-11-15 15:29:29.111867 |    20    |   5   |      0.05      |     100     | (0.872, 0.814) |
    | 2020-11-15 15:29:29.112003 | 2020-11-15 15:29:48.247098 |    20    |   5   |      0.05      |     200     | (0.871, 0.814) |
    | 2020-11-15 15:29:48.247199 | 2020-11-15 15:30:06.182593 |    20    |   5   |      0.1       |      10     | (0.87, 0.814)  |
    | 2020-11-15 15:30:06.182711 | 2020-11-15 15:30:23.715802 |    20    |   5   |      0.1       |      25     | (0.871, 0.814) |
    | 2020-11-15 15:30:23.715913 | 2020-11-15 15:30:40.933030 |    20    |   5   |      0.1       |      50     | (0.87, 0.814)  |
    | 2020-11-15 15:30:40.933143 | 2020-11-15 15:30:58.815287 |    20    |   5   |      0.1       |     100     | (0.871, 0.814) |
    | 2020-11-15 15:30:58.815387 | 2020-11-15 15:31:17.552501 |    20    |   5   |      0.1       |     200     | (0.871, 0.814) |
    | 2020-11-15 15:31:17.552622 | 2020-11-15 15:31:36.265096 |    20    |   5   |      0.2       |      10     | (0.871, 0.814) |
    | 2020-11-15 15:31:36.265207 | 2020-11-15 15:31:56.765053 |    20    |   5   |      0.2       |      25     | (0.871, 0.814) |
    | 2020-11-15 15:31:56.765147 | 2020-11-15 15:32:15.231274 |    20    |   5   |      0.2       |      50     | (0.871, 0.814) |
    | 2020-11-15 15:32:15.231378 | 2020-11-15 15:32:34.781224 |    20    |   5   |      0.2       |     100     | (0.871, 0.814) |
    | 2020-11-15 15:32:34.781447 | 2020-11-15 15:32:53.895528 |    20    |   5   |      0.2       |     200     | (0.871, 0.814) |
    | 2020-11-15 15:32:53.895793 | 2020-11-15 15:33:13.026376 |    20    |   5   |      0.4       |      10     | (0.871, 0.814) |
    | 2020-11-15 15:33:13.026504 | 2020-11-15 15:33:30.373059 |    20    |   5   |      0.4       |      25     | (0.871, 0.814) |
    | 2020-11-15 15:33:30.373166 | 2020-11-15 15:33:47.886052 |    20    |   5   |      0.4       |      50     | (0.869, 0.814) |
    | 2020-11-15 15:33:47.886158 | 2020-11-15 15:34:05.206196 |    20    |   5   |      0.4       |     100     | (0.869, 0.814) |
    | 2020-11-15 15:34:05.206307 | 2020-11-15 15:34:23.387035 |    20    |   5   |      0.4       |     200     | (0.871, 0.814) |
    | 2020-11-15 15:34:23.387201 | 2020-11-15 15:34:41.115121 |    20    |   10  |     0.025      |      10     | (0.871, 0.814) |
    | 2020-11-15 15:34:41.115261 | 2020-11-15 15:34:58.630588 |    20    |   10  |     0.025      |      25     | (0.872, 0.814) |
    | 2020-11-15 15:34:58.630736 | 2020-11-15 15:35:16.177524 |    20    |   10  |     0.025      |      50     | (0.871, 0.814) |
    | 2020-11-15 15:35:16.177632 | 2020-11-15 15:35:32.758393 |    20    |   10  |     0.025      |     100     | (0.872, 0.814) |
    | 2020-11-15 15:35:32.758500 | 2020-11-15 15:35:49.266718 |    20    |   10  |     0.025      |     200     | (0.871, 0.814) |
    | 2020-11-15 15:35:49.266827 | 2020-11-15 15:36:05.932444 |    20    |   10  |      0.05      |      10     | (0.871, 0.814) |
    | 2020-11-15 15:36:05.932548 | 2020-11-15 15:36:22.468883 |    20    |   10  |      0.05      |      25     | (0.87, 0.814)  |
    | 2020-11-15 15:36:22.468986 | 2020-11-15 15:36:39.050835 |    20    |   10  |      0.05      |      50     | (0.87, 0.814)  |
    | 2020-11-15 15:36:39.050938 | 2020-11-15 15:36:55.777101 |    20    |   10  |      0.05      |     100     | (0.871, 0.814) |
    | 2020-11-15 15:36:55.777199 | 2020-11-15 15:37:13.022816 |    20    |   10  |      0.05      |     200     | (0.871, 0.814) |
    | 2020-11-15 15:37:13.022941 | 2020-11-15 15:37:30.384497 |    20    |   10  |      0.1       |      10     | (0.87, 0.814)  |
    | 2020-11-15 15:37:30.384588 | 2020-11-15 15:37:47.599100 |    20    |   10  |      0.1       |      25     | (0.871, 0.814) |
    | 2020-11-15 15:37:47.599194 | 2020-11-15 15:38:04.987065 |    20    |   10  |      0.1       |      50     | (0.87, 0.814)  |
    | 2020-11-15 15:38:04.987159 | 2020-11-15 15:38:22.801165 |    20    |   10  |      0.1       |     100     | (0.869, 0.814) |
    | 2020-11-15 15:38:22.801332 | 2020-11-15 15:38:39.918120 |    20    |   10  |      0.1       |     200     | (0.871, 0.814) |
    | 2020-11-15 15:38:39.918237 | 2020-11-15 15:38:56.933265 |    20    |   10  |      0.2       |      10     | (0.87, 0.814)  |
    | 2020-11-15 15:38:56.933364 | 2020-11-15 15:39:14.867037 |    20    |   10  |      0.2       |      25     | (0.871, 0.814) |
    | 2020-11-15 15:39:14.867131 | 2020-11-15 15:39:32.858872 |    20    |   10  |      0.2       |      50     | (0.87, 0.814)  |
    | 2020-11-15 15:39:32.859030 | 2020-11-15 15:39:50.664227 |    20    |   10  |      0.2       |     100     | (0.871, 0.814) |
    | 2020-11-15 15:39:50.664319 | 2020-11-15 15:40:07.818701 |    20    |   10  |      0.2       |     200     | (0.87, 0.814)  |
    | 2020-11-15 15:40:07.818809 | 2020-11-15 15:40:25.816342 |    20    |   10  |      0.4       |      10     | (0.87, 0.814)  |
    | 2020-11-15 15:40:25.816514 | 2020-11-15 15:40:43.657444 |    20    |   10  |      0.4       |      25     | (0.87, 0.814)  |
    | 2020-11-15 15:40:43.657554 | 2020-11-15 15:41:01.066479 |    20    |   10  |      0.4       |      50     | (0.871, 0.814) |
    | 2020-11-15 15:41:01.066592 | 2020-11-15 15:41:18.316445 |    20    |   10  |      0.4       |     100     | (0.869, 0.814) |
    | 2020-11-15 15:41:18.316561 | 2020-11-15 15:41:35.558548 |    20    |   10  |      0.4       |     200     | (0.871, 0.814) |
    | 2020-11-15 15:41:35.558651 | 2020-11-15 15:41:54.218140 |    20    |   15  |     0.025      |      10     | (0.871, 0.814) |
    | 2020-11-15 15:41:54.218255 | 2020-11-15 15:42:10.772776 |    20    |   15  |     0.025      |      25     | (0.871, 0.814) |
    | 2020-11-15 15:42:10.772879 | 2020-11-15 15:42:27.166745 |    20    |   15  |     0.025      |      50     | (0.87, 0.814)  |
    | 2020-11-15 15:42:27.166854 | 2020-11-15 15:42:43.659419 |    20    |   15  |     0.025      |     100     | (0.871, 0.814) |
    | 2020-11-15 15:42:43.659528 | 2020-11-15 15:43:00.830224 |    20    |   15  |     0.025      |     200     | (0.871, 0.814) |
    | 2020-11-15 15:43:00.830358 | 2020-11-15 15:43:18.667973 |    20    |   15  |      0.05      |      10     | (0.87, 0.814)  |
    | 2020-11-15 15:43:18.668100 | 2020-11-15 15:43:35.885131 |    20    |   15  |      0.05      |      25     | (0.872, 0.814) |
    | 2020-11-15 15:43:35.885235 | 2020-11-15 15:43:52.413374 |    20    |   15  |      0.05      |      50     | (0.871, 0.814) |
    | 2020-11-15 15:43:52.413480 | 2020-11-15 15:44:09.371043 |    20    |   15  |      0.05      |     100     | (0.871, 0.814) |
    | 2020-11-15 15:44:09.371146 | 2020-11-15 15:44:26.302076 |    20    |   15  |      0.05      |     200     | (0.87, 0.814)  |
    | 2020-11-15 15:44:26.302230 | 2020-11-15 15:44:44.084116 |    20    |   15  |      0.1       |      10     | (0.87, 0.814)  |
    | 2020-11-15 15:44:44.084205 | 2020-11-15 15:45:01.239640 |    20    |   15  |      0.1       |      25     | (0.871, 0.814) |
    | 2020-11-15 15:45:01.239854 | 2020-11-15 15:45:18.879138 |    20    |   15  |      0.1       |      50     | (0.87, 0.814)  |
    | 2020-11-15 15:45:18.879264 | 2020-11-15 15:45:37.121393 |    20    |   15  |      0.1       |     100     | (0.871, 0.814) |
    | 2020-11-15 15:45:37.121493 | 2020-11-15 15:45:54.946084 |    20    |   15  |      0.1       |     200     | (0.871, 0.814) |
    | 2020-11-15 15:45:54.946200 | 2020-11-15 15:46:12.507573 |    20    |   15  |      0.2       |      10     | (0.87, 0.814)  |
    | 2020-11-15 15:46:12.507726 | 2020-11-15 15:46:29.699451 |    20    |   15  |      0.2       |      25     | (0.871, 0.814) |
    | 2020-11-15 15:46:29.699552 | 2020-11-15 15:46:46.245493 |    20    |   15  |      0.2       |      50     | (0.871, 0.814) |
    | 2020-11-15 15:46:46.245609 | 2020-11-15 15:47:02.729555 |    20    |   15  |      0.2       |     100     | (0.87, 0.814)  |
    | 2020-11-15 15:47:02.729659 | 2020-11-15 15:47:19.305676 |    20    |   15  |      0.2       |     200     | (0.871, 0.814) |
    | 2020-11-15 15:47:19.305783 | 2020-11-15 15:47:35.726434 |    20    |   15  |      0.4       |      10     | (0.871, 0.814) |
    | 2020-11-15 15:47:35.726540 | 2020-11-15 15:47:52.343293 |    20    |   15  |      0.4       |      25     | (0.87, 0.814)  |
    | 2020-11-15 15:47:52.343472 | 2020-11-15 15:48:08.546819 |    20    |   15  |      0.4       |      50     | (0.871, 0.814) |
    | 2020-11-15 15:48:08.546923 | 2020-11-15 15:48:24.790612 |    20    |   15  |      0.4       |     100     | (0.871, 0.814) |
    | 2020-11-15 15:48:24.790717 | 2020-11-15 15:48:40.802903 |    20    |   15  |      0.4       |     200     | (0.87, 0.814)  |
    | 2020-11-15 15:48:40.803047 | 2020-11-15 15:48:56.907654 |    20    |   30  |     0.025      |      10     | (0.87, 0.814)  |
    | 2020-11-15 15:48:56.907755 | 2020-11-15 15:49:13.481114 |    20    |   30  |     0.025      |      25     | (0.869, 0.814) |
    | 2020-11-15 15:49:13.481222 | 2020-11-15 15:49:30.503208 |    20    |   30  |     0.025      |      50     | (0.871, 0.814) |
    | 2020-11-15 15:49:30.503403 | 2020-11-15 15:49:47.927045 |    20    |   30  |     0.025      |     100     | (0.87, 0.814)  |
    | 2020-11-15 15:49:47.927140 | 2020-11-15 15:50:05.305760 |    20    |   30  |     0.025      |     200     | (0.87, 0.814)  |
    | 2020-11-15 15:50:05.305855 | 2020-11-15 15:50:23.052045 |    20    |   30  |      0.05      |      10     | (0.871, 0.814) |
    | 2020-11-15 15:50:23.052144 | 2020-11-15 15:50:40.545981 |    20    |   30  |      0.05      |      25     | (0.87, 0.814)  |
    | 2020-11-15 15:50:40.546084 | 2020-11-15 15:50:58.443599 |    20    |   30  |      0.05      |      50     | (0.871, 0.814) |
    | 2020-11-15 15:50:58.443708 | 2020-11-15 15:51:16.651173 |    20    |   30  |      0.05      |     100     | (0.871, 0.814) |
    | 2020-11-15 15:51:16.651394 | 2020-11-15 15:51:37.682419 |    20    |   30  |      0.05      |     200     | (0.87, 0.814)  |
    | 2020-11-15 15:51:37.682528 | 2020-11-15 15:51:54.072589 |    20    |   30  |      0.1       |      10     | (0.871, 0.814) |
    | 2020-11-15 15:51:54.072793 | 2020-11-15 15:52:10.203555 |    20    |   30  |      0.1       |      25     | (0.87, 0.814)  |
    | 2020-11-15 15:52:10.203662 | 2020-11-15 15:52:26.549352 |    20    |   30  |      0.1       |      50     | (0.871, 0.814) |
    | 2020-11-15 15:52:26.549459 | 2020-11-15 15:52:42.739399 |    20    |   30  |      0.1       |     100     | (0.87, 0.814)  |
    | 2020-11-15 15:52:42.739505 | 2020-11-15 15:52:58.290804 |    20    |   30  |      0.1       |     200     | (0.871, 0.814) |
    | 2020-11-15 15:52:58.290911 | 2020-11-15 15:53:14.329836 |    20    |   30  |      0.2       |      10     | (0.869, 0.814) |
    | 2020-11-15 15:53:14.329940 | 2020-11-15 15:53:30.071775 |    20    |   30  |      0.2       |      25     | (0.871, 0.814) |
    | 2020-11-15 15:53:30.071881 | 2020-11-15 15:53:46.007508 |    20    |   30  |      0.2       |      50     | (0.869, 0.814) |
    | 2020-11-15 15:53:46.007611 | 2020-11-15 15:54:02.284301 |    20    |   30  |      0.2       |     100     | (0.87, 0.814)  |
    | 2020-11-15 15:54:02.284397 | 2020-11-15 15:54:19.203315 |    20    |   30  |      0.2       |     200     | (0.871, 0.814) |
    | 2020-11-15 15:54:19.203423 | 2020-11-15 15:54:36.343968 |    20    |   30  |      0.4       |      10     | (0.871, 0.814) |
    | 2020-11-15 15:54:36.344064 | 2020-11-15 15:54:53.264003 |    20    |   30  |      0.4       |      25     | (0.87, 0.814)  |
    | 2020-11-15 15:54:53.264215 | 2020-11-15 15:55:10.498551 |    20    |   30  |      0.4       |      50     | (0.87, 0.814)  |
    | 2020-11-15 15:55:10.498647 | 2020-11-15 15:55:27.266358 |    20    |   30  |      0.4       |     100     | (0.871, 0.814) |
    | 2020-11-15 15:55:27.266470 | 2020-11-15 15:55:43.989733 |    20    |   30  |      0.4       |     200     | (0.871, 0.814) |
    | 2020-11-15 15:55:43.989827 | 2020-11-15 15:56:01.740113 |    20    |   35  |     0.025      |      10     | (0.871, 0.814) |
    | 2020-11-15 15:56:01.740209 | 2020-11-15 15:56:18.266715 |    20    |   35  |     0.025      |      25     | (0.872, 0.814) |
    | 2020-11-15 15:56:18.266833 | 2020-11-15 15:56:35.161691 |    20    |   35  |     0.025      |      50     | (0.872, 0.814) |
    | 2020-11-15 15:56:35.161784 | 2020-11-15 15:56:52.146861 |    20    |   35  |     0.025      |     100     | (0.87, 0.814)  |
    | 2020-11-15 15:56:52.146977 | 2020-11-15 15:57:09.247553 |    20    |   35  |     0.025      |     200     | (0.871, 0.814) |
    | 2020-11-15 15:57:09.247712 | 2020-11-15 15:57:26.967090 |    20    |   35  |      0.05      |      10     | (0.87, 0.814)  |
    | 2020-11-15 15:57:26.967216 | 2020-11-15 15:57:44.285133 |    20    |   35  |      0.05      |      25     | (0.87, 0.814)  |
    | 2020-11-15 15:57:44.285229 | 2020-11-15 15:58:00.835177 |    20    |   35  |      0.05      |      50     | (0.871, 0.814) |
    | 2020-11-15 15:58:00.835282 | 2020-11-15 15:58:17.409637 |    20    |   35  |      0.05      |     100     | (0.871, 0.814) |
    | 2020-11-15 15:58:17.409749 | 2020-11-15 15:58:34.021267 |    20    |   35  |      0.05      |     200     | (0.871, 0.814) |
    | 2020-11-15 15:58:34.021399 | 2020-11-15 15:58:51.750664 |    20    |   35  |      0.1       |      10     | (0.87, 0.814)  |
    | 2020-11-15 15:58:51.750805 | 2020-11-15 15:59:09.533789 |    20    |   35  |      0.1       |      25     | (0.871, 0.814) |
    | 2020-11-15 15:59:09.533884 | 2020-11-15 15:59:26.359511 |    20    |   35  |      0.1       |      50     | (0.87, 0.814)  |
    | 2020-11-15 15:59:26.359603 | 2020-11-15 15:59:43.263872 |    20    |   35  |      0.1       |     100     | (0.871, 0.814) |
    | 2020-11-15 15:59:43.263977 | 2020-11-15 16:00:00.153648 |    20    |   35  |      0.1       |     200     | (0.87, 0.814)  |
    | 2020-11-15 16:00:00.153737 | 2020-11-15 16:00:16.851936 |    20    |   35  |      0.2       |      10     | (0.87, 0.814)  |
    | 2020-11-15 16:00:16.852047 | 2020-11-15 16:00:33.565665 |    20    |   35  |      0.2       |      25     | (0.87, 0.814)  |
    | 2020-11-15 16:00:33.565781 | 2020-11-15 16:00:50.175113 |    20    |   35  |      0.2       |      50     | (0.871, 0.814) |
    | 2020-11-15 16:00:50.175307 | 2020-11-15 16:01:07.507935 |    20    |   35  |      0.2       |     100     | (0.871, 0.814) |
    | 2020-11-15 16:01:07.508167 | 2020-11-15 16:01:24.533468 |    20    |   35  |      0.2       |     200     | (0.87, 0.814)  |
    | 2020-11-15 16:01:24.533572 | 2020-11-15 16:01:41.116973 |    20    |   35  |      0.4       |      10     | (0.871, 0.814) |
    | 2020-11-15 16:01:41.117075 | 2020-11-15 16:01:58.242515 |    20    |   35  |      0.4       |      25     | (0.871, 0.814) |
    | 2020-11-15 16:01:58.242619 | 2020-11-15 16:02:14.981652 |    20    |   35  |      0.4       |      50     | (0.871, 0.814) |
    | 2020-11-15 16:02:14.981755 | 2020-11-15 16:02:31.899197 |    20    |   35  |      0.4       |     100     | (0.87, 0.814)  |
    | 2020-11-15 16:02:31.899297 | 2020-11-15 16:02:48.899584 |    20    |   35  |      0.4       |     200     | (0.87, 0.814)  |
    | 2020-11-15 16:02:48.899790 | 2020-11-15 16:03:05.959419 |    30    |   5   |     0.025      |      10     | (0.871, 0.814) |
    | 2020-11-15 16:03:05.959547 | 2020-11-15 16:03:22.764288 |    30    |   5   |     0.025      |      25     | (0.872, 0.814) |
    | 2020-11-15 16:03:22.764390 | 2020-11-15 16:03:39.473173 |    30    |   5   |     0.025      |      50     | (0.87, 0.814)  |
    | 2020-11-15 16:03:39.473280 | 2020-11-15 16:03:56.016176 |    30    |   5   |     0.025      |     100     | (0.87, 0.814)  |
    | 2020-11-15 16:03:56.016281 | 2020-11-15 16:04:12.691417 |    30    |   5   |     0.025      |     200     | (0.87, 0.814)  |
    | 2020-11-15 16:04:12.691523 | 2020-11-15 16:04:29.453809 |    30    |   5   |      0.05      |      10     | (0.871, 0.814) |
    | 2020-11-15 16:04:29.453914 | 2020-11-15 16:04:46.217855 |    30    |   5   |      0.05      |      25     | (0.871, 0.814) |
    | 2020-11-15 16:04:46.217967 | 2020-11-15 16:05:02.873391 |    30    |   5   |      0.05      |      50     | (0.871, 0.814) |
    | 2020-11-15 16:05:02.873534 | 2020-11-15 16:05:19.636597 |    30    |   5   |      0.05      |     100     | (0.87, 0.814)  |
    | 2020-11-15 16:05:19.636743 | 2020-11-15 16:05:36.159137 |    30    |   5   |      0.05      |     200     | (0.871, 0.814) |
    | 2020-11-15 16:05:36.159240 | 2020-11-15 16:05:53.071702 |    30    |   5   |      0.1       |      10     | (0.872, 0.814) |
    | 2020-11-15 16:05:53.071805 | 2020-11-15 16:06:10.015069 |    30    |   5   |      0.1       |      25     | (0.87, 0.814)  |
    | 2020-11-15 16:06:10.015172 | 2020-11-15 16:06:26.673924 |    30    |   5   |      0.1       |      50     | (0.872, 0.814) |
    | 2020-11-15 16:06:26.674025 | 2020-11-15 16:06:43.290380 |    30    |   5   |      0.1       |     100     | (0.871, 0.814) |
    | 2020-11-15 16:06:43.290535 | 2020-11-15 16:06:59.845187 |    30    |   5   |      0.1       |     200     | (0.87, 0.814)  |
    | 2020-11-15 16:06:59.845296 | 2020-11-15 16:07:16.897704 |    30    |   5   |      0.2       |      10     | (0.871, 0.814) |
    | 2020-11-15 16:07:16.897807 | 2020-11-15 16:07:33.605696 |    30    |   5   |      0.2       |      25     | (0.871, 0.814) |
    | 2020-11-15 16:07:33.605789 | 2020-11-15 16:07:50.108655 |    30    |   5   |      0.2       |      50     | (0.871, 0.814) |
    | 2020-11-15 16:07:50.108758 | 2020-11-15 16:08:06.899693 |    30    |   5   |      0.2       |     100     | (0.871, 0.814) |
    | 2020-11-15 16:08:06.899782 | 2020-11-15 16:08:23.459060 |    30    |   5   |      0.2       |     200     | (0.872, 0.814) |
    | 2020-11-15 16:08:23.459164 | 2020-11-15 16:08:40.188143 |    30    |   5   |      0.4       |      10     | (0.87, 0.814)  |
    | 2020-11-15 16:08:40.188243 | 2020-11-15 16:08:57.285881 |    30    |   5   |      0.4       |      25     | (0.87, 0.814)  |
    | 2020-11-15 16:08:57.285986 | 2020-11-15 16:09:13.834765 |    30    |   5   |      0.4       |      50     | (0.87, 0.814)  |
    | 2020-11-15 16:09:13.834870 | 2020-11-15 16:09:30.324285 |    30    |   5   |      0.4       |     100     | (0.869, 0.814) |
    | 2020-11-15 16:09:30.324389 | 2020-11-15 16:09:47.070456 |    30    |   5   |      0.4       |     200     | (0.871, 0.814) |
    | 2020-11-15 16:09:47.070556 | 2020-11-15 16:10:03.836118 |    30    |   10  |     0.025      |      10     | (0.87, 0.814)  |
    | 2020-11-15 16:10:03.836221 | 2020-11-15 16:10:20.507012 |    30    |   10  |     0.025      |      25     | (0.87, 0.814)  |
    | 2020-11-15 16:10:20.507116 | 2020-11-15 16:10:36.977206 |    30    |   10  |     0.025      |      50     | (0.87, 0.814)  |
    | 2020-11-15 16:10:36.977313 | 2020-11-15 16:10:53.467672 |    30    |   10  |     0.025      |     100     | (0.871, 0.814) |
    | 2020-11-15 16:10:53.467775 | 2020-11-15 16:11:10.157892 |    30    |   10  |     0.025      |     200     | (0.87, 0.814)  |
    | 2020-11-15 16:11:10.157996 | 2020-11-15 16:11:26.846443 |    30    |   10  |      0.05      |      10     | (0.872, 0.814) |
    | 2020-11-15 16:11:26.846548 | 2020-11-15 16:11:43.400035 |    30    |   10  |      0.05      |      25     | (0.869, 0.814) |
    | 2020-11-15 16:11:43.400138 | 2020-11-15 16:11:59.938696 |    30    |   10  |      0.05      |      50     | (0.871, 0.814) |
    | 2020-11-15 16:11:59.938801 | 2020-11-15 16:12:16.630067 |    30    |   10  |      0.05      |     100     | (0.87, 0.814)  |
    | 2020-11-15 16:12:16.630172 | 2020-11-15 16:12:33.284503 |    30    |   10  |      0.05      |     200     | (0.871, 0.814) |
    | 2020-11-15 16:12:33.284613 | 2020-11-15 16:12:49.976997 |    30    |   10  |      0.1       |      10     | (0.869, 0.814) |
    | 2020-11-15 16:12:49.977101 | 2020-11-15 16:13:07.001647 |    30    |   10  |      0.1       |      25     | (0.87, 0.814)  |
    | 2020-11-15 16:13:07.001787 | 2020-11-15 16:13:23.874684 |    30    |   10  |      0.1       |      50     | (0.869, 0.814) |
    | 2020-11-15 16:13:23.875028 | 2020-11-15 16:13:40.403405 |    30    |   10  |      0.1       |     100     | (0.871, 0.814) |
    | 2020-11-15 16:13:40.403508 | 2020-11-15 16:13:57.243544 |    30    |   10  |      0.1       |     200     | (0.871, 0.814) |
    | 2020-11-15 16:13:57.243650 | 2020-11-15 16:14:13.951573 |    30    |   10  |      0.2       |      10     | (0.871, 0.814) |
    | 2020-11-15 16:14:13.951678 | 2020-11-15 16:14:30.664479 |    30    |   10  |      0.2       |      25     | (0.869, 0.814) |
    | 2020-11-15 16:14:30.664677 | 2020-11-15 16:14:47.242943 |    30    |   10  |      0.2       |      50     | (0.87, 0.814)  |
    | 2020-11-15 16:14:47.243047 | 2020-11-15 16:15:03.876633 |    30    |   10  |      0.2       |     100     | (0.87, 0.814)  |
    | 2020-11-15 16:15:03.876963 | 2020-11-15 16:15:20.445851 |    30    |   10  |      0.2       |     200     | (0.871, 0.814) |
    | 2020-11-15 16:15:20.445956 | 2020-11-15 16:15:37.270827 |    30    |   10  |      0.4       |      10     | (0.87, 0.814)  |
    | 2020-11-15 16:15:37.270929 | 2020-11-15 16:15:53.829669 |    30    |   10  |      0.4       |      25     | (0.87, 0.814)  |
    | 2020-11-15 16:15:53.829775 | 2020-11-15 16:16:10.431165 |    30    |   10  |      0.4       |      50     | (0.871, 0.814) |
    | 2020-11-15 16:16:10.431267 | 2020-11-15 16:16:27.283341 |    30    |   10  |      0.4       |     100     | (0.87, 0.814)  |
    | 2020-11-15 16:16:27.283443 | 2020-11-15 16:16:43.819403 |    30    |   10  |      0.4       |     200     | (0.871, 0.814) |
    | 2020-11-15 16:16:43.819507 | 2020-11-15 16:17:00.343206 |    30    |   15  |     0.025      |      10     | (0.87, 0.814)  |
    | 2020-11-15 16:17:00.343311 | 2020-11-15 16:17:16.881275 |    30    |   15  |     0.025      |      25     | (0.87, 0.814)  |
    | 2020-11-15 16:17:16.881379 | 2020-11-15 16:17:33.389907 |    30    |   15  |     0.025      |      50     | (0.871, 0.814) |
    | 2020-11-15 16:17:33.390013 | 2020-11-15 16:17:50.241742 |    30    |   15  |     0.025      |     100     | (0.871, 0.814) |
    | 2020-11-15 16:17:50.241837 | 2020-11-15 16:18:06.804250 |    30    |   15  |     0.025      |     200     | (0.871, 0.814) |
    | 2020-11-15 16:18:06.804353 | 2020-11-15 16:18:23.380950 |    30    |   15  |      0.05      |      10     | (0.871, 0.814) |
    | 2020-11-15 16:18:23.381060 | 2020-11-15 16:18:39.927836 |    30    |   15  |      0.05      |      25     | (0.87, 0.814)  |
    | 2020-11-15 16:18:39.927941 | 2020-11-15 16:18:56.523271 |    30    |   15  |      0.05      |      50     | (0.871, 0.814) |
    | 2020-11-15 16:18:56.523374 | 2020-11-15 16:19:13.246108 |    30    |   15  |      0.05      |     100     | (0.87, 0.814)  |
    | 2020-11-15 16:19:13.246218 | 2020-11-15 16:19:30.246237 |    30    |   15  |      0.05      |     200     | (0.871, 0.814) |
    | 2020-11-15 16:19:30.246326 | 2020-11-15 16:19:46.764424 |    30    |   15  |      0.1       |      10     | (0.87, 0.814)  |
    | 2020-11-15 16:19:46.764528 | 2020-11-15 16:20:03.324259 |    30    |   15  |      0.1       |      25     | (0.869, 0.814) |
    | 2020-11-15 16:20:03.324480 | 2020-11-15 16:20:20.083683 |    30    |   15  |      0.1       |      50     | (0.87, 0.814)  |
    | 2020-11-15 16:20:20.083788 | 2020-11-15 16:20:36.644452 |    30    |   15  |      0.1       |     100     | (0.87, 0.814)  |
    | 2020-11-15 16:20:36.644557 | 2020-11-15 16:20:53.180426 |    30    |   15  |      0.1       |     200     | (0.87, 0.814)  |
    | 2020-11-15 16:20:53.180540 | 2020-11-15 16:21:09.723074 |    30    |   15  |      0.2       |      10     | (0.87, 0.814)  |
    | 2020-11-15 16:21:09.723217 | 2020-11-15 16:21:26.452972 |    30    |   15  |      0.2       |      25     | (0.871, 0.814) |
    | 2020-11-15 16:21:26.453076 | 2020-11-15 16:21:43.262001 |    30    |   15  |      0.2       |      50     | (0.871, 0.814) |
    | 2020-11-15 16:21:43.262108 | 2020-11-15 16:21:59.945735 |    30    |   15  |      0.2       |     100     | (0.87, 0.814)  |
    | 2020-11-15 16:21:59.945840 | 2020-11-15 16:22:16.519487 |    30    |   15  |      0.2       |     200     | (0.871, 0.814) |
    | 2020-11-15 16:22:16.519594 | 2020-11-15 16:22:33.073349 |    30    |   15  |      0.4       |      10     | (0.871, 0.814) |
    | 2020-11-15 16:22:33.073453 | 2020-11-15 16:22:49.696796 |    30    |   15  |      0.4       |      25     | (0.872, 0.814) |
    | 2020-11-15 16:22:49.697174 | 2020-11-15 16:23:06.428139 |    30    |   15  |      0.4       |      50     | (0.87, 0.814)  |
    | 2020-11-15 16:23:06.428245 | 2020-11-15 16:23:23.156620 |    30    |   15  |      0.4       |     100     | (0.87, 0.814)  |
    | 2020-11-15 16:23:23.156730 | 2020-11-15 16:23:39.848547 |    30    |   15  |      0.4       |     200     | (0.872, 0.814) |
    | 2020-11-15 16:23:39.848651 | 2020-11-15 16:23:56.354493 |    30    |   30  |     0.025      |      10     | (0.871, 0.814) |
    | 2020-11-15 16:23:56.354599 | 2020-11-15 16:24:13.206724 |    30    |   30  |     0.025      |      25     | (0.871, 0.814) |
    | 2020-11-15 16:24:13.206828 | 2020-11-15 16:24:30.080471 |    30    |   30  |     0.025      |      50     | (0.871, 0.814) |
    | 2020-11-15 16:24:30.080619 | 2020-11-15 16:24:47.274526 |    30    |   30  |     0.025      |     100     | (0.869, 0.814) |
    | 2020-11-15 16:24:47.274627 | 2020-11-15 16:25:04.036161 |    30    |   30  |     0.025      |     200     | (0.869, 0.814) |
    | 2020-11-15 16:25:04.036288 | 2020-11-15 16:25:20.666001 |    30    |   30  |      0.05      |      10     | (0.87, 0.814)  |
    | 2020-11-15 16:25:20.666218 | 2020-11-15 16:25:37.503340 |    30    |   30  |      0.05      |      25     | (0.872, 0.814) |
    | 2020-11-15 16:25:37.503430 | 2020-11-15 16:25:54.186423 |    30    |   30  |      0.05      |      50     | (0.871, 0.814) |
    | 2020-11-15 16:25:54.186536 | 2020-11-15 16:26:11.269207 |    30    |   30  |      0.05      |     100     | (0.871, 0.814) |
    | 2020-11-15 16:26:11.269308 | 2020-11-15 16:26:27.822420 |    30    |   30  |      0.05      |     200     | (0.871, 0.814) |
    | 2020-11-15 16:26:27.822525 | 2020-11-15 16:26:44.308146 |    30    |   30  |      0.1       |      10     | (0.869, 0.814) |
    | 2020-11-15 16:26:44.308253 | 2020-11-15 16:27:01.014759 |    30    |   30  |      0.1       |      25     | (0.869, 0.814) |
    | 2020-11-15 16:27:01.014860 | 2020-11-15 16:27:17.647468 |    30    |   30  |      0.1       |      50     | (0.87, 0.814)  |
    | 2020-11-15 16:27:17.647645 | 2020-11-15 16:27:34.138202 |    30    |   30  |      0.1       |     100     | (0.87, 0.814)  |
    | 2020-11-15 16:27:34.138312 | 2020-11-15 16:27:50.649779 |    30    |   30  |      0.1       |     200     | (0.871, 0.814) |
    | 2020-11-15 16:27:50.649886 | 2020-11-15 16:28:07.298715 |    30    |   30  |      0.2       |      10     | (0.87, 0.814)  |
    | 2020-11-15 16:28:07.298825 | 2020-11-15 16:28:23.852681 |    30    |   30  |      0.2       |      25     | (0.87, 0.814)  |
    | 2020-11-15 16:28:23.852784 | 2020-11-15 16:28:40.405790 |    30    |   30  |      0.2       |      50     | (0.871, 0.814) |
    | 2020-11-15 16:28:40.406093 | 2020-11-15 16:28:57.107712 |    30    |   30  |      0.2       |     100     | (0.871, 0.814) |
    | 2020-11-15 16:28:57.107815 | 2020-11-15 16:29:13.638850 |    30    |   30  |      0.2       |     200     | (0.871, 0.814) |
    | 2020-11-15 16:29:13.638960 | 2020-11-15 16:29:30.297112 |    30    |   30  |      0.4       |      10     | (0.869, 0.814) |
    | 2020-11-15 16:29:30.297208 | 2020-11-15 16:29:47.220274 |    30    |   30  |      0.4       |      25     | (0.87, 0.814)  |
    | 2020-11-15 16:29:47.220412 | 2020-11-15 16:30:03.943567 |    30    |   30  |      0.4       |      50     | (0.871, 0.814) |
    | 2020-11-15 16:30:03.943673 | 2020-11-15 16:30:20.425085 |    30    |   30  |      0.4       |     100     | (0.869, 0.814) |
    | 2020-11-15 16:30:20.425191 | 2020-11-15 16:30:36.925680 |    30    |   30  |      0.4       |     200     | (0.869, 0.814) |
    | 2020-11-15 16:30:36.925788 | 2020-11-15 16:30:53.592967 |    30    |   35  |     0.025      |      10     | (0.869, 0.814) |
    | 2020-11-15 16:30:53.593074 | 2020-11-15 16:31:10.367794 |    30    |   35  |     0.025      |      25     | (0.871, 0.814) |
    | 2020-11-15 16:31:10.367898 | 2020-11-15 16:31:26.925545 |    30    |   35  |     0.025      |      50     | (0.871, 0.814) |
    | 2020-11-15 16:31:26.925653 | 2020-11-15 16:31:43.433271 |    30    |   35  |     0.025      |     100     | (0.87, 0.814)  |
    | 2020-11-15 16:31:43.433373 | 2020-11-15 16:32:00.033605 |    30    |   35  |     0.025      |     200     | (0.872, 0.814) |
    | 2020-11-15 16:32:00.033780 | 2020-11-15 16:32:16.667581 |    30    |   35  |      0.05      |      10     | (0.871, 0.814) |
    | 2020-11-15 16:32:16.667674 | 2020-11-15 16:32:33.357616 |    30    |   35  |      0.05      |      25     | (0.869, 0.814) |
    | 2020-11-15 16:32:33.357718 | 2020-11-15 16:32:50.119300 |    30    |   35  |      0.05      |      50     | (0.87, 0.814)  |
    | 2020-11-15 16:32:50.119405 | 2020-11-15 16:33:07.031241 |    30    |   35  |      0.05      |     100     | (0.87, 0.814)  |
    | 2020-11-15 16:33:07.031334 | 2020-11-15 16:33:24.768113 |    30    |   35  |      0.05      |     200     | (0.871, 0.814) |
    | 2020-11-15 16:33:24.768213 | 2020-11-15 16:33:43.269057 |    30    |   35  |      0.1       |      10     | (0.871, 0.814) |
    | 2020-11-15 16:33:43.269169 | 2020-11-15 16:34:04.268036 |    30    |   35  |      0.1       |      25     | (0.87, 0.814)  |
    | 2020-11-15 16:34:04.268146 | 2020-11-15 16:34:22.007183 |    30    |   35  |      0.1       |      50     | (0.871, 0.814) |
    | 2020-11-15 16:34:22.007290 | 2020-11-15 16:34:39.776894 |    30    |   35  |      0.1       |     100     | (0.87, 0.814)  |
    | 2020-11-15 16:34:39.777000 | 2020-11-15 16:34:55.679438 |    30    |   35  |      0.1       |     200     | (0.87, 0.814)  |
    | 2020-11-15 16:34:55.679539 | 2020-11-15 16:35:11.131222 |    30    |   35  |      0.2       |      10     | (0.87, 0.814)  |
    | 2020-11-15 16:35:11.131326 | 2020-11-15 16:35:26.537574 |    30    |   35  |      0.2       |      25     | (0.871, 0.814) |
    | 2020-11-15 16:35:26.537676 | 2020-11-15 16:35:41.931851 |    30    |   35  |      0.2       |      50     | (0.87, 0.814)  |
    | 2020-11-15 16:35:41.931955 | 2020-11-15 16:35:57.674327 |    30    |   35  |      0.2       |     100     | (0.87, 0.814)  |
    | 2020-11-15 16:35:57.674427 | 2020-11-15 16:36:13.064235 |    30    |   35  |      0.2       |     200     | (0.871, 0.814) |
    | 2020-11-15 16:36:13.064340 | 2020-11-15 16:36:28.559351 |    30    |   35  |      0.4       |      10     | (0.871, 0.814) |
    | 2020-11-15 16:36:28.559454 | 2020-11-15 16:36:44.060772 |    30    |   35  |      0.4       |      25     | (0.871, 0.814) |
    | 2020-11-15 16:36:44.060877 | 2020-11-15 16:36:59.454463 |    30    |   35  |      0.4       |      50     | (0.872, 0.814) |
    | 2020-11-15 16:36:59.454564 | 2020-11-15 16:37:14.846695 |    30    |   35  |      0.4       |     100     | (0.87, 0.814)  |
    | 2020-11-15 16:37:14.846796 | 2020-11-15 16:37:30.262759 |    30    |   35  |      0.4       |     200     | (0.871, 0.814) |
    +----------------------------+----------------------------+----------+-------+----------------+-------------+----------------+

Para llevar a cabo el proceso de optimización, se decidió probar los siguientes parámetros: factor [10,20,30], alfa [5,10,15,30,35], regularizacion [0.025,0.05,0.1,0.2,0.4] e iteracion [10,25,50,100,200], obteniendo el mejor modelo con los siguientes parámetros:

    Factores
    Alpha
    Regularizacion
    Iteraciones
    Evaluacion

    10
    5
    0,025
    10
    0,872

Pese a los resultados obtenidos, no se percibe una mejoría representativa entre el modelo con menor desempeño y el de mayor desempeño, máxime si se considera el esfuerzo computacional requerido de alrededor de 2 horas.

## Comentarios finales

Hemos visto cómo diseñar y evaluar un sistema de recomendación con ratings implícitos. En implementaciones de la vida real, si el tamaño de la matriz de ratings es muy grande, puede ser más práctica su implementación en Spark:
https://spark.apache.org/docs/latest/mllib-collaborative-filtering.html

También se pueden seguir explorando los sistemas de recomendación híbridos, incorporando información propia de los usuarios e items además de su comportamiento de compras. La librería de Python `LightFM` de Maciej Kula permite implementar distintos algoritmos con preferencias implícitas y explícitas:
https://making.lyst.com/lightfm/docs/home.html

Para los sistemas de recomendación con ratings explícitos podemos usar `SurPRISE`, que estudiaremos las próximas sesiones, o también pueden explorar este blog:

*Explicit Matrix Factorization: ALS, SGD, and All That Jazz*, por Ethan Rosenthal
    https://www.ethanrosenthal.com/2016/01/09/explicit-matrix-factorization-sgd-als/

Finalmente, si buscan datos para la implementación de sistemas de recomendación, pueden explorar el siguiente link: https://gist.github.com/entaroadun/1653794

### Reflexion final

Pensemos que si bien el sistema no recomienda items que ya han sido comprados, sí puede estar recomendando otra vez el mismo tipo de productos. Por ejemplo, si un usuario compra una lavadora, ¿tiene sentido recomendarle otra lavadora?

Hay ciertos productos que se compran solo una vez, y requieren más bien de otros productos complementarios que combinen bien con su uso.

Piense en una estrategia para desarrollar un sistema de recomendación que no recomiende siempre productos sustitutos o muy similares entre sí, es decir, productos que cumplan exactamente las mismas funciones que lo que ya han sido adquiridos.

R/ Una vez que se implementa el sistema de recomendación, se podría realizar un análisis de filtrado usando variables complementarias tales como la Tipología y vida útil de cada producto. Por ejemplo, si un producto (crema dental, por ejemplo) pertenece a la categoría de artículos de aseo y su vida útil es de 1 mes, se podría nuevamente recomendar un mes después de la última compra.  Por otro lado, para un producto que pertenece a la categoría electrodoméstico y de vida útil 3 años (Televisor, por ejemplo), se podría recomendar pasados tres años de la última compra. La Categoría, adicionalmente podría ser útil para recomendar productos complementarios; así si un cliente compró un Televisor Inteligente, se le podría recomendar una barra de sonido, una suscripción a contenido digital, etc.