Logotipo de Zephyrnet

Estrategias de MLOps para el éxito de la conversión de ventas

Fecha:

Introducción

ChatGPT

En el panorama dinámico de los negocios modernos, la intersección del aprendizaje automático y las operaciones (MLOps) ha surgido como una fuerza poderosa que remodela los enfoques tradicionales para la optimización de la conversión de ventas. El artículo lo lleva al papel transformador que desempeñan las estrategias MLOps para revolucionar el éxito de la conversión de ventas. A medida que las empresas se esfuerzan por lograr una mayor eficiencia y mejores interacciones con los clientes, la integración de técnicas de aprendizaje automático en las operaciones ocupa un lugar central. Esta exploración revela estrategias innovadoras que aprovechan MLOps no solo para optimizar los procesos de ventas sino también para desbloquear un éxito sin precedentes en la conversión de prospectos en clientes leales. Únase a nosotros en un viaje a través de las complejidades de MLOps y descubra cómo su aplicación estratégica está remodelando el panorama de la conversión de ventas.

Estrategias MLOps | Éxito en la conversión de ventas

OBJETIVOS DE APRENDIZAJE

  • Importancia del modelo de optimización de ventas
  • Limpieza de datos, transformación de conjuntos de datos y preprocesamiento de conjuntos de datos
  • Creación de detección de fraude de extremo a extremo utilizando Kedro y Deepcheck
  • Implementación del modelo usando streamlit y huggingface

Este artículo fue publicado como parte del Blogatón de ciencia de datos.

Tabla de contenidos.

¿Qué es el modelo de optimización de ventas?

Un modelo de optimización de ventas es un modelo de aprendizaje automático de un extremo a otro para maximizar la venta de productos y mejorar la tasa de conversión. El modelo toma varios parámetros como entradas, como impresión, grupo de edad, sexo, tasa de clics y costo por clic. Una vez entrenado, el modelo predice la cantidad de personas que comprarán el producto después de ver el anuncio.

Requisitos previos necesarios

1) Clonar el repositorio

git clone https://github.com/ashishk831/Final-THC.git
cd Final-THC

2) Crear y activar el entorno virtual.

#create a virtual environment
python3 -m venv SOP
#Activate your virtual environment in your project folder
source SOP/bin/activate
pip install -r requirements.txt

4) Instale Kedro, Kedro-viz, Streamlit y Deepcheck

pip install streamlit
pip install Deepcheck
pip install Kedro
pip install Kedro-viz

Descripción de datos

Realicemos un análisis de datos fundamental utilizando la implementación de Python en un conjunto de datos de Kaggle. Para descargar el conjunto de datos, haga clic en haga clic aquí

import pandas as pd
import numpy as np
df = pd.read_csv('KAG_conversion_data.csv')
df.head()
image.png
image.png
Columna Descripción
ad_id Una identificación única para cada anuncio
xyz_campaign_id Un ID asociado a cada campaña publicitaria de la empresa XYZ.
fb_campaign_id Una identificación asociada con cómo Facebook rastrea cada campaña.
edad Edad de la persona a quien se muestra el anuncio
género Género de la persona a quien se le muestra el anuncio
intereses un código que especifica la categoría a la que pertenece el interés de la persona (los intereses son los mencionados en el perfil público de Facebook de la persona)
Impresiones el número de veces que se mostró el anuncio.
Clicks Número de clics para ese anuncio.
Gastado Monto pagado por la empresa xyz a Facebook, para mostrar ese anuncio
Total
conversión
Total
Número de personas que preguntaron sobre el producto después de ver el anuncio.
Aprobado
conversión
Total
Número de personas que compraron el producto después de ver el anuncio.

Aquí el "Conversión aprobada”es la columna de destino. Nuestro
El objetivo es diseñar un modelo que aumente la venta del producto una vez que la gente vea
el anuncio.

Desarrollo de modelos utilizando Kedro

Para construir este proyecto de un extremo a otro, utilizaremos la herramienta Kedro. Kedro es una herramienta de código abierto que se utiliza para crear un modelo de aprendizaje automático listo para producción y que ofrece una serie de beneficios.

  • Maneja la complejidad: Proporciona una estructura para probar datos que se pueden enviar a producción después de una prueba exitosa.
  • Normalización: Proporciona una plantilla estándar para el proyecto. Haciendo que sea más fácil de entender para los demás.
  • Listo para producción: El código se puede enviar fácilmente a producción con código exploratorio que puede pasar a experimentos modulares, reproducibles y mantenibles.

Leer Más: Tutorial de Kedro Framework

Estructura de tubería

Para crear un proyecto en Kedro, siga los pasos a continuación.

#create project
kedro new

#create pipeline
kedro pipeline create <pipeline-name>

#Run kedro
kedro run

#Visualizing pipeline
kedro viz

Usando kedro diseñaremos el modelo de canalización de un extremo a otro que se muestra a continuación.

localhost:Kedro-viz
localhost:Kedro-viz

Preprocesamiento de datos

  • Compruebe si faltan valores y trátelos.
  • Creando dos nuevas columnas CTR y CPC.
  • Conversión de variable de columna en numérica.
import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder

def preprocessing(data: pd.DataFrame):    
    data.gender = data.gender.apply(lambda x: 1 if x=="M" else 0)
    data['CTR'] = ((data['Clicks']/data['Impressions'])*100)
    data['CPC'] = data['Spent']/data['Clicks']
    data['CPC'] = data['CPC'].replace(np.nan,0)
    encoder=LabelEncoder()
    encoder.fit(data["age"])
    data["age"]=encoder.transform(data["age"])
    #data.Approved_Conversion = data.Approved_Conversion.apply(lambda x: 0 if x==0 else 1)
    preprocessed_data = data.copy()
    
    return preprocessed_data

Dividir datos

import pandas as pd
from sklearn.model_selection import train_test_split

def split_data(processed_data: pd.DataFrame):
    X = processed_data[['ad_id', 'age', 'gender', 'interest', 'Spent', 
    'Total_Conversion','CTR', 'CPC']]
    y = processed_data["Approved_Conversion"]
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, 
    random_state=42)
    return X_train, X_test, y_train, y_test

Arriba, el conjunto de datos se divide en un conjunto de datos de entrenamiento y un conjunto de datos de prueba para fines de entrenamiento del modelo.

Entrenamiento de modelos

from sklearn.ensemble import RandomForestRegressor


def train_model(X_train, y_train):
    
    model = RandomForestRegressor(n_estimators = 50, random_state = 0, max_samples=0.75)
    
    model.fit(X_train, y_train)
    return model

Usaremos el módulo RandomForestRegressor para entrenar el modelo. Solo con RandomForestRegressor pasamos otros parámetros como n_estimators random_state y max_samples.

Evaluación

import numpy as np
import logging
from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error, max_error


def evaluate_model(model, X_test, y_test):
    y_pred = model.predict(X_test)
    mae=mean_absolute_error(y_test, y_pred)
    mse=mean_squared_error(y_test, y_pred)
    rmse=np.sqrt(mse)
    r2score=r2_score(y_test, y_pred)
    me = max_error(y_test, y_pred)
    print("MAE Of Model is: ",mae)
    print("MSE Of Model is: ",mse)
    print("RMSE Of Model is: ",rmse)
    print("R2_Score Of Model is: ",r2score)
    logger = logging.getLogger(__name__)
    logger.info("Model has a coefficient R^2 of %.3f on test data.", r2score)
    return {"r2_score": r2score, "mae": mae, "max_error": me}

Una vez que se entrena el modelo, se evalúa utilizando una serie de métricas clave como MAE, MSE, RMSE y R2-score.

Rastreador de experimentos

Para realizar un seguimiento del rendimiento del modelo y seleccionar el mejor modelo, utilizaremos el rastreador de experimentos. La funcionalidad del rastreador de experimentos es guardar toda la información sobre el experimento cuando se ejecuta la aplicación. Para habilitar el rastreador de experimentos en Kedro, podemos actualizar el archivo catalog.xml. El parámetro versionado debe establecerse en Verdadero. A continuación se muestra el ejemplo.

model:
  type: pickle.PickleDataSet
  filepath: data/06_models/model.pkl
  backend: pickle
  versioned: True

Esto ayuda a rastrear el resultado del modelo y guardar la versión del modelo. Aquí, utilizaremos el rastreador de experimentos en el paso de evaluación para realizar un seguimiento del rendimiento del modelo durante la fase de desarrollo.

Cuando se ejecuta el modelo, generará diferentes métricas de evaluación, como MAE, MSE, RMSE y puntuación R2 para diferentes marcas de tiempo, como se muestra en la imagen. Sobre la base de las métricas de evaluación anteriores, se puede seleccionar el mejor modelo.

Rastreador de experimentos | Estrategias MLOps | Éxito en la conversión de ventas
Local: Kedro-viz

Deepcheck: para monitoreo de datos y modelos

Cuando el modelo se implementa en producción, existe la posibilidad de que la calidad de los datos cambie con el tiempo y, debido a esto, el rendimiento del modelo también puede cambiar. Para solucionar este problema necesitamos monitorear los datos en el entorno de producción. Para ello, utilizaremos una herramienta de código abierto Deepcheck. Deepcheck tiene bibliotecas incorporadas como Label-drift y Feature-Drift que se pueden integrar fácilmente con el código del modelo.

  • FeatureDrift: – Una deriva significa un cambio en la distribución de datos a lo largo del tiempo debido al cual se degrada el rendimiento del modelo. FeatureDift significa que se ha producido un cambio en una única característica del conjunto de datos.
  • Labeldrift: – Labeldrift ocurre cuando las etiquetas reales de un conjunto de datos cambian con el tiempo. Ocurre principalmente debido a cambios en los criterios de la etiqueta.

Integración de predicción y monitoreo de modelos con Streamlit

Ahora crearemos una interfaz de usuario para interactuar con el modelo y realizar predicciones sobre los parámetros de entrada dados para verificar la tasa de conversión.

import streamlit as st
import pandas as pd
import joblib
import numpy as np 

st.sidebar.header("Model Prediction or Report")

selected_report = st.sidebar.selectbox("Select from below", ["Model Prediction",
"Data Integrity","Feature Drift", "Label Drift"])

if selected_report=="Model Prediction":
        st.header("Sales Optimization Model")
        #def predict(ad_id, age, gender, interest, Impressions, Clicks, Spent, 
        #Total_Conversion, CTR, CPC):
        def predict(ad_id, age, gender, interest,  Spent, Total_Conversion, CTR, CPC):
            if gender == 'Male':
                gender = 0
            else:
                gender = 1
            ad_id = int(ad_id)
            age = int(age)
            gender = int(gender)
            interest = int(interest)
            #Impressions = int(Impressions)
            #Clicks = int(Clicks)
            Spent = float(Spent)
            Total_Conversion = int(Total_Conversion)
            CTR = float(CTR*0.000001)
            CPC = float(CPC)
 
            input=np.array([[ad_id, age, gender, interest, Spent, 
            Total_Conversion, CTR, CPC]]).astype(np.float64)
    
        
            model = joblib.load('model/model.pkl')
    # Make prediction
            prediction = model.predict(input)
            prediction= np.round(prediction)
    # Return the predicted value for Approved_Conversion 
            return prediction
        
        ad_id = st.number_input('Enter the advertisement ID',min_value = 0)
        age = st.number_input('Enter the target age stoup',min_value = 0)
        gender = st.radio("Gender",('Male','Female'))
        interest = st.selectbox('Interest', [2, 7, 10, 15, 16, 18, 19, 20, 21, 22, 23,
         24, 25, 
                        26, 27, 28, 29, 30, 31, 32, 36, 63, 64, 65, 66, 100, 101, 102, 
                        103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114])
        #Impressions = st.number_input('Enter the number of impressions',min_value = 0)
        #Clicks = st.number_input('Enter the number of clicks',min_value = 0)
        Spent = st.number_input('Enter the amount spent on the ad',min_value = 0)
        Total_Conversion = st.number_input('Enter the total conversion count',
        min_value = 0)
        CTR = st.number_input('Enter the Click-Through Rate',min_value = 0)
        CPC = st.number_input('Enter the Cost Per Click',min_value = 0)

        if st.button("Predicted Approved Conversion"): 
             output = predict(ad_id, age, gender, interest, Spent, Total_Conversion, 
             CTR, CPC)
             st.success("Approved Conversion Rate  :{}".format(output)) 
else:
    st.header("Sales Model Monitoring Report")
    report_file_name = "report/"+ selected_report.replace(" ", "") + ".html"
    HtmlFile = open(report_file_name, 'r', encoding='utf-8')
    source_code = HtmlFile.read() 
    st.components.v1.html(source_code, width=1200, height=1500, scrolling=True)

Demostración de la aplicación HuggingFace | Estrategias MLOps | Éxito en la conversión de ventas
Localhost:streamlit

Implementación mediante HuggingFace

Ahora que hemos creado un modelo de optimización de ventas de un extremo a otro, implementaremos el modelo utilizando HuggingFace. En huggingface, necesitamos configurar el archivo README.md para la implementación del modelo. Huggingface se encarga de CI/CD. Como siempre que hay un cambio en el archivo, realizará un seguimiento de los cambios y volverá a implementar la aplicación. A continuación se muestra la configuración del archivo readme.md.

title: {{Sale-str-opt}}
emoji: {{Sale-str-opt}}
colorFrom: {{colorFrom}}
colorTo: {{colorTo}}
sdk: {{sdk}}
sdk_version: {{sdkVersion}}
app_file: app.py
pinned: false

Demostración de la aplicación HuggingFace

Demostración de la aplicación HuggingFace | Estrategias MLOps | Éxito en la conversión de ventas
https://huggingface.co/spaces/ashishk566/sales-str-opt

Para la versión en la nube haga clic haga clic aquí

Conclusión

  • Las aplicaciones de aprendizaje automático pueden proporcionar una tasa de conversión de prueba en un mercado desconocido, lo que ayuda a las empresas a conocer la demanda del producto.
  • Al utilizar el modelo de optimización de ventas, las empresas pueden dirigirse a su público adecuado.
  • Esta aplicación ayuda a aumentar los ingresos comerciales.
  • El monitoreo de datos en tiempo real también puede ayudar a rastrear el cambio de modelo y el cambio de comportamiento del usuario.

Preguntas frecuentes

P1. ¿Cuál es el propósito del modelo de optimización de ventas?

R. El propósito del modelo de optimización de ventas es predecir la cantidad de clientes que comprarán el producto después de ver el anuncio.

P2. ¿Por qué necesitamos monitorear los datos?

R. El seguimiento de los datos ayuda a realizar un seguimiento del conjunto de datos y del comportamiento del modelo.

P3. ¿Huggingface es de uso gratuito?

R. Sí, huggingface es de uso gratuito con la función básica 2 vCPU y 16 GB de RAM.

P4. ¿Existen reglas específicas para seleccionar informes en la etapa de seguimiento del modelo?

R. No existen reglas estrictas para seleccionar informes en la etapa de monitoreo del modelo; deepcheck tiene muchas bibliotecas incorporadas, como deriva de modelo y deriva de distribución.

P5. ¿Qué tan útil es la iluminación aerodinámica?

R. Streamlit ayuda en la implementación local, lo que ayuda a corregir errores durante la fase de desarrollo.

Los medios que se muestran en este artículo no son propiedad de Analytics Vidhya y se utilizan a discreción del autor.

punto_img

Información más reciente

punto_img