Zephyrnet-Logo

MLOps-Strategien für erfolgreiche Verkaufskonvertierungen

Datum:

Einleitung

ChatGPT

In der dynamischen Landschaft moderner Unternehmen hat sich die Schnittstelle zwischen maschinellem Lernen und Betrieb (MLOps) zu einer starken Kraft entwickelt, die traditionelle Ansätze zur Umsatzoptimierung umgestaltet. Der Artikel führt Sie in die transformative Rolle ein, die MLOps-Strategien bei der Revolutionierung des Vertriebserfolgs spielen. Während Unternehmen nach höherer Effizienz und verbesserter Kundeninteraktion streben, steht die Integration maschineller Lerntechniken in den Betrieb im Mittelpunkt. Diese Untersuchung stellt innovative Strategien vor, die MLOps nutzen, um nicht nur Vertriebsprozesse zu optimieren, sondern auch beispiellose Erfolge bei der Umwandlung potenzieller Kunden in treue Kunden zu erzielen. Begleiten Sie uns auf einer Reise durch die Feinheiten von MLOps und entdecken Sie, wie seine strategische Anwendung die Landschaft der Vertriebskonvertierung neu gestaltet.

MLOps-Strategien | Erfolgreiche Verkaufskonvertierung

Lernziele

  • Bedeutung des Verkaufsoptimierungsmodells
  • Bereinigen von Daten, Transformieren von Datensätzen und Vorverarbeiten von Datensätzen
  • Aufbau einer durchgängigen Betrugserkennung mit Kedro und Deepcheck
  • Bereitstellen des Modells mit Streamlit und Huggingface

Dieser Artikel wurde als Teil des veröffentlicht Data Science-Blogathon.

Inhaltsverzeichnis

Was ist ein Verkaufsoptimierungsmodell?

Ein Verkaufsoptimierungsmodell ist ein End-to-End-Modell für maschinelles Lernen, um den Verkauf von Produkten zu maximieren und die Konversionsrate zu verbessern. Das Modell verwendet mehrere Parameter als Eingaben wie Impression, Altersgruppe, Geschlecht, Klickrate und Kosten pro Klick. Sobald Sie das Modell trainiert haben, prognostiziert es die Anzahl der Personen, die das Produkt kaufen werden, nachdem sie die Anzeige gesehen haben.

Notwendige Voraussetzungen

1) Klonen Sie das Repository

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

2) Erstellen und aktivieren Sie die virtuelle Umgebung

#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) Installieren Sie Kedro, Kedro-viz, Streamlit und Deepcheck

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

Daten Beschreibung

Lassen Sie uns eine grundlegende Datenanalyse mithilfe der Python-Implementierung an einem Datensatz von Kaggle durchführen. Um den Datensatz herunterzuladen, klicken Sie auf .

import pandas as pd
import numpy as np
df = pd.read_csv('KAG_conversion_data.csv')
df.head()
image.png
image.png
Kolonne Beschreibung
ad_id Eine eindeutige ID für jede Anzeige
xyz_campaign_id Eine ID, die jeder Werbekampagne des Unternehmens XYZ zugeordnet ist
fb_campaign_id Eine ID, die damit verknüpft ist, wie Facebook jede Kampagne verfolgt
Alter Alter der Person, der die Anzeige gezeigt wird
Geschlecht Das Geschlecht der Person, die hinzugefügt werden soll, wird angezeigt
Interesse ein Code, der die Kategorie angibt, zu der das Interesse der Person gehört (die Interessen entsprechen den Angaben im öffentlichen Facebook-Profil der Person)
Impressionen die Häufigkeit, mit der die Anzeige angezeigt wurde.
Klicks (Clicks) Anzahl der Klicks auf diese Anzeige.
Verbraucht Betrag, den das Unternehmen xyz an Facebook gezahlt hat, um diese Anzeige anzuzeigen
Gesamt
Umwandlung
Gesamt
Anzahl der Personen, die sich nach dem Betrachten der Anzeige nach dem Produkt erkundigt haben
Genehmigt
Umwandlung
Gesamt
Anzahl der Personen, die das Produkt gekauft haben, nachdem sie die Anzeige gesehen haben

Hier das "Genehmigter Umbau„ist die Zielspalte. Unser
Ziel ist es, ein Modell zu entwerfen, das den Verkauf eines Produkts steigert, sobald es die Leute sehen
die Anzeige.

Modellentwicklung mit Kedro

Für den End-to-End-Aufbau dieses Projekts verwenden wir das Kedro-Tool. Kedro ist ein Open-Source-Tool zum Aufbau eines produktionsreifen Modells für maschinelles Lernen, das eine Reihe von Vorteilen bietet.

  • Bewältigt Komplexität: Es bietet eine Struktur zum Testen von Daten, die nach erfolgreichem Testen in die Produktion übertragen werden können.
  • Standardisierung: Es stellt eine Standardvorlage für das Projekt bereit. Damit es für andere leichter verständlich wird.
  • Produktionsbereit: Code kann mit explorativem Code einfach in die Produktion übertragen werden, sodass Sie ihn in reproduzierbare, wartbare und modulare Experimente umwandeln können.

Weiterlesen: Exemplarische Vorgehensweise des Kedro Framework

Pipeline-Struktur

Um ein Projekt in Kedro zu erstellen, führen Sie die folgenden Schritte aus.

#create project
kedro new

#create pipeline
kedro pipeline create <pipeline-name>

#Run kedro
kedro run

#Visualizing pipeline
kedro viz

Mit Kedro entwerfen wir die End-to-End-Modellpipeline, die unten gezeigt wird.

localhost:Kedro-viz
localhost:Kedro-viz

Datenvorverarbeitung

  • Suchen Sie nach fehlenden Werten und behandeln Sie diese.
  • Erstellen Sie zwei neue Spalten CTR und CPC.
  • Spaltenvariable in numerisch umwandeln.
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

Daten aufteilen

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

Oben ist der Datensatz für Modelltrainingszwecke in einen Zugdatensatz und einen Testdatensatz unterteilt.

Modelltraining

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

Wir werden das Modul „RandomForestRegressor“ verwenden, um das Modell zu trainieren. Allein mit RandomForestRegressor übergeben wir andere Parameter wie n_estimators random_state und max_samples.

Evaluierung

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}

Sobald das Modell trainiert ist, wird es anhand einer Reihe wichtiger Metriken wie MAE, MSE, RMSE und R2-Score bewertet.

Experiment-Tracker

Um die Modellleistung zu verfolgen und das beste Modell auszuwählen, verwenden wir den Experiment-Tracker. Die Funktionalität des Experiment-Trackers besteht darin, alle Informationen über das Experiment zu speichern, wenn die Anwendung ausgeführt wird. Um den Experiment-Tracker in Kedro zu aktivieren, können wir die Datei „catalog.xml“ aktualisieren. Der Parameter versioned muss auf True gesetzt sein. Unten ist das Beispiel

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

Dies hilft bei der Verfolgung des Modellergebnisses und beim Speichern der Modellversion. Hier verwenden wir den Experiment-Tracker im Evaluierungsschritt, um die Modellleistung während der Entwicklungsphase zu verfolgen.

Wenn das Modell ausgeführt wird, generiert es verschiedene Bewertungsmetriken wie MAE, MSE, RMSE und R2-Score für verschiedene Zeitstempel, wie im Bild gezeigt. Auf der Grundlage der oben genannten Bewertungsmetriken kann das beste Modell ausgewählt werden.

Experiment-Tracker | MLOps-Strategien | Erfolgreiche Verkaufskonvertierung
Lokal: Kedro-viz

Deepcheck: Für die Daten- und Modellüberwachung

Wenn das Modell in der Produktion eingesetzt wird, besteht die Möglichkeit, dass sich die Datenqualität im Laufe der Zeit ändert und sich dadurch auch die Modellleistung ändern kann. Um dieses Problem zu beheben, müssen wir die Daten in der Produktionsumgebung überwachen. Hierzu verwenden wir das Open-Source-Tool Deepcheck. Deepcheck verfügt über integrierte Bibliotheken wie Label-Drift und Feature-Drift, die problemlos in Modellcode integriert werden können.

  • FeatureDrift: – Eine Drift bedeutet eine Änderung der Datenverteilung im Laufe der Zeit, aufgrund derer sich die Modellleistung verschlechtert. FeaturDift bedeutet, dass in einem einzelnen Feature des Datensatzes eine Änderung aufgetreten ist.
  • Labeldrift: – Labeldrift tritt auf, wenn sich die Grundwahrheitsbezeichnungen für einen Datensatz im Laufe der Zeit ändern. Dies ist hauptsächlich auf Änderungen der Kennzeichnungskriterien zurückzuführen.

Integration von Modellvorhersage und -überwachung mit Streamlit

Jetzt erstellen wir eine Benutzeroberfläche für die Interaktion mit dem Modell, um anhand der angegebenen Eingabeparameter Vorhersagen zu treffen und die Conversion-Rate zu überprüfen.

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)

HuggingFace-App-Demo | MLOps-Strategien | Erfolgreiche Verkaufskonvertierung
Localhost:streamlit

Bereitstellung mit HuggingFace

Nachdem wir nun ein End-to-End-Verkaufsoptimierungsmodell erstellt haben, werden wir das Modell mit HuggingFace bereitstellen. In Huggingface müssen wir die Datei README.md für die Modellbereitstellung konfigurieren. Huggingface kümmert sich um CI/CD. Bei jeder Änderung in der Datei werden die Änderungen nachverfolgt und die App erneut bereitgestellt. Nachfolgend finden Sie die Konfiguration der Datei 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

HuggingFace-App-Demo

HuggingFace-App-Demo | MLOps-Strategien | Erfolgreiche Verkaufskonvertierung
https://huggingface.co/spaces/ashishk566/sales-str-opt

Klicken Sie für die Cloud-Version .

Zusammenfassung

  • Apps für maschinelles Lernen können die Testkonversionsrate in unbekannten Märkten ermitteln und Unternehmen dabei helfen, die Produktnachfrage zu ermitteln.
  • Mithilfe des Verkaufsoptimierungsmodells können Unternehmen ihre richtige Zielgruppe ansprechen.
  • Diese Anwendung trägt dazu bei, den Geschäftsumsatz zu steigern.
  • Die Überwachung von Daten in Echtzeit kann auch dabei helfen, Modelländerungen und Änderungen im Benutzerverhalten zu verfolgen.

Häufig gestellte Fragen

Q1. Was ist der Zweck des Verkaufsoptimierungsmodells?

A. Der Zweck des Verkaufsoptimierungsmodells besteht darin, die Anzahl der Kunden vorherzusagen, die das Produkt kaufen werden, nachdem sie die Anzeige gesehen haben.

Q2. Warum müssen wir die Daten überwachen?

A. Die Überwachung der Daten hilft bei der Verfolgung des Datensatzes und des Modellverhaltens.

Q3. Ist die Nutzung von Huggingface kostenlos?

A. Ja, die Nutzung von Huggingface ist mit der Grundfunktion 2 vCPU und 16 GB RAM kostenlos.

Q4. Gibt es spezielle Regeln für die Auswahl von Berichten in der Modellüberwachungsphase?

A. Es gibt keine strengen Regeln für die Auswahl von Berichten in der Modellüberwachungsphase. Deepcheck verfügt über viele integrierte Bibliotheken wie Modelldrift und Verteilungsdrift.

F5. Wie hilfreich ist Streamlit?

A. Streamlit hilft bei der lokalen Bereitstellung und hilft bei der Behebung von Fehlern während der Entwicklungsphase.

Die in diesem Artikel gezeigten Medien sind nicht Eigentum von Analytics Vidhya und werden nach Ermessen des Autors verwendet.

spot_img

Neueste Intelligenz

spot_img