GDBase

Algorytm maksymalizujący przychód z kampanii marketingowej – zastosowanie GDBase

Prowadzenie kampanii marketingowej w celu pozyskania leadów może wiązać się z napotkaniem kilku problemów, których rozwiązanie wydaje się problematyczne i uciążliwe. Chcemy zbudować algorytm, który zmaksymalizuje oczekiwany przychód przy uwzględnieniu ograniczenia dziennego leadów dla każdej z kampanii unikając przy tym zawarcia zbyt dużej liczby ofert w jednej wiadomości.

AdvancedMiner posiada wbudowaną bazę danych GDBase obsługującą wyzwalacze i kwarendy o dowolnym stopniu skomplikowania. Umożliwia swobodne pisanie skryptów opartych na Pythonie oraz wplatanie do nich większości zapytań języka SQL. Dzięki temu możliwe staje się wykonywanie operacji posiadających wiele ograniczeń wynikających z informacji zawartych w bazach danych, czy w zmiennych ograniczających.

Kod Pythona (w AdvancedMiner nazwany jako Gython ze względu na wprowadzone modyfikacje ułatwiające przeprowadzanie operacji analitycznych) może być wprowadzany bezpośrednio w skrypcie lub w trakcie używania języka SQL po słowach TRANSFORM i GLOBALS.

GDBase w przeciwieństwie do innych baz danych umożliwia stworzenie prostego algorytmu, który maksymalizuje przychód nawet przy wielu ograniczeniach.

Umieszczenie tabeli z innej bazy w GDBase

Aby umieścić tabelę z innej bazy w GDBase należy w skrypcie umieścić zapytanie:

sql: IMPORT COMPRESSED Query: SELECT * FROM inna_baza.nazwa_tabeli AS s1 AS nazwa_tabeli_w_GDBase USING ODBC('DSN=RP')

Przykładowa tabela użyta w algorytmie w kampanii marketingowej:

GDBase - algorytm maksymalizujący przychód z kampanii marketingowej - 1

Pobierz dane użyte w tym wpisie tutaj .

Kolumna client_id zawiera identyfikator klienta, może nim być na przykład adres e-mail lub numer telefonu. Do każdego klienta przypisane są identyfikatory wszystkich kampanii (campaign_id), prawdopodobieństwo uzyskania leada od klienta dla danej kampanii (lead_probability), przychód, jaki dana kampania może przynieść (income), oczekiwany przychód uwzględniający prawdopodobieństwo (expected_income) oraz dzienne ograniczenie leadów dla każdej z kampanii (lead_limit).

Poniższy algorytm został wykonany na przykładowej tabeli o nazwie „example”. Kolejne kroki postępowania zawierają komentarze pomagające zrozumieć zasady działania algorytmu.

Najpierw należy dokonać inicjalizacji zmiennych ograniczających.

max_number_of_offers = 3 #maksymalna liczba ofert w jednej wiadomości cups = { } #kubełek zawierający wartości oczekiwane liczby odpowiedzi na leada limits = { } #limity dzienne leadów dla każdej kampanii

Wyciągamy listę ofert wraz z limitami oraz nadajemy wartości cups oraz limits.

sql a: SELECT DISTINCT campaign_id, lead_limit FROM example print a for r in a: cups[r[0]] = 0 limits[r[0]] = r[1]

Tabelę sortujemy po maksymalnym scoringu oraz scoringu dla każdej z kampanii.

sql: REPLACE TABLE example_recommendations AS SELECT * FROM ( SELECT client_id, max(expected_income) AS max_score FROM example GROUP BY 1 ORDER BY max_score DESC ) AS s1 LEFT JOIN (SELECT * FROM example ORDER BY expected_income DESC) as s2 USING (client_id) TRANSFORM: #użycie Gythona if current_client_id <> client_id: number_of_offers = 0 for offer, contents in cups.items(): #umieszczamy w kubełku ofertę, która zostanie wysłana if (offer == campaign_id) and (number_of_offers < max_number_of_offers): #musimy jednak sprawdzić, czy w tym kubełku jest jeszcze miejsce if contents < limits[offer]: chosen_offer = offer cups[offer] = cups[offer] + lead_probability kryterium zapełnienia kubełka jest sumą prawdopodobieństw uzyskania leada z danej kampanii dla wszystkich klientów number_of_offers = number_of_offers + 1 __save__() current_client_id = client_id __skipRow__ = 1 GLOBALS: #inicjalizacja zmiennych globalnych current_client_id = '' number_of_offers = 0 max_number_of_offers = $max_number_of_offers cups = $cups limits = $limits KEEP chosen_offer, client_id, lead_probability, expected_income

Otrzymujemy tabelę wyjściową zawierającą rekomendacje ofert, które przyniosą największy przychód. Dla każdego z klientów wybrane są 3 oferty. Limity dla kampanii są zachowane.

GDBase - algorytm maksymalizujący przychód z kampanii marketingowej - 2

Dla porównania, nie używając algorytmu podczas wybierania kampanii, odpowiedzi na oferty jest dziesięciokrotnie mniej, co skutkuje znacznie niższym przychodem pozyskanym z każdej z tych kampanii. Powyższe rozwiązanie pozwala uporać się z wszelkimi ograniczeniami. Możliwość wprowadzenia niewielkich modyfikacji sprawia, że taki algorytm jest wyjątkowo uniwersalny.

Pin It on Pinterest