Разработка и сравнение методов сведения задачи оценки эффекта от воздействия к задаче регрессии

Анализ методов оценки эффекта от воздействия и тестирование разработанных методов на реальных и синтетических наборах данных. Обзор семейств методов оценки эффекта от воздействия. Описание методов решения задачи регрессии, их программной реализации.

Рубрика Экономико-математическое моделирование
Вид дипломная работа
Язык русский
Дата добавления 04.12.2019
Размер файла 2,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Метод Кейна с весами (логистическая регрессия);

Метод Кейн с весами (случайный лес);

Метод Кейна (случайный лес);

Метод кадит моделирования (линейная регрессия);

Пессимистичный метод (логистическая регрессия);

Пессимистичный метод (случайный лес);

Метод Джасковски (случайный лес);

Метод Лаи (случайный лес);

Метод Лаи с весами (случайный лес);

Рефлективный метод (случайный лес).

Рис. 4.5. RMSE на синтетическом наборе данных и шумом равным 1

4.3 Набор данных Hillstrom Email Marketing

В качестве второго набора данных, был выбран набор «Hillstrom Email Marketing», который был описан в статье Кевина Хилстрома. Набор данных хранит информацию об эксперименте, в котором участвовало 64000 пользователей некоторого интернет-магазина. Эксперимент состоял из нескольких этапов. На первом этапе была отобрана группа пользователей, которые совершали покупки в интернет-магазине в течении последних 12 месяцев. На втором этапе пользователей разделили на три группы:

Пользователи, которым отправили электронное сообщение с рекламой мужских товаров.

Пользователи, которым отправили электронное сообщение с рекламой женских товаров.

Пользователи, которым не отправляли никаких электронных сообщений.

Через две недели после отправки сообщений были подведены итоги. Целью эксперимента являлось определить, помогла ли отправка электронных сообщений увеличить средние затраты покупателя? Каждая запись в наборе данных представляет информацию об одном пользователе. На момент начала эксперимента, организаторы обладали следующей информацией о каждом пользователе:

Recency - количество месяцев с последней покупки.

History - сколько пользователь потратил денег за последний год.

History_Segment - категоризованное значение переменной History.

Mens - индикатор, покупал ли пользователь мужские товары.

Womens - индикатор, покупал ли пользователь женские товары.

Zip_Code - категориальная переменная, которая показывает в какой области проживает пользователь (центр города, пригород, за городом).

Newbie - индикатор того, что пользователь зарегистрировался в системе в течении двенадцати месяцев.

Channel - канал связи, с помощью которого пользователь совершал покупки.

Segment - воздействие, которое было оказано на пользователя во время эксперимента (реклама мужских товаров, реклама женских товаров, ничего).

После двух недель была получена следующая информация о каждом пользователе:

Visit - посетил ли пользователь ресурс, в течении двух недель, после того, как на него было произведено воздействие.

Conversion - купил ли пользователь какой-нибудь товар, в течении двух недель, после того, как на него было произведено воздействие.

Spend - сколько денег пользователь потратил, в течении двух недель, после того, как на него было произведено воздействие.

На рис. 4.6 представлены несколько примеров из набора данных.

Рис. 4.6. Набор данных Hillstrom Email Marketing

4.3.1 Преобразование данных

Использовать данные в их исходном виде нельзя так как признаки «history-segment», «zip_code», «channel» и «segment» представляются в виде строк, а модели машинного обучения требуют представления данных в числовом виде. Как можно заметить, проблемные признаки представляют собой категориальные данные (т.е. множество значений - конечно). Подобного рода данные можно легко преобразовать в числовой вид с помощью техники «One Hot Encoding» или введения фиктивных переменных. В нашем случае, для всех проблемных признаков мы будем вводить фиктивные переменные. На рис. 4.7 представлена часть данных после преобразования их в необходимый для обучения моделей формат.

Рис. 4.7 Преобразованный набор данных

4.3.2 Результаты сравнения

На рис. 4.8 представлены распределения (посредством «ящиков с усами») результатов предсказаний эффектов от воздействия для клиентов, которые не получали сообщений и получили сообщение с рекламой мужских товаров. Исходный код вычисления эффектов от воздействия находится в приложении В.

Рис. 4.8 Эффект от воздействия после получения рекламы мужских товаров

Изучая полученные результаты можно заметить, что модели, которые используют случайный лес показывают, в среднем, более высокие результаты, в сравнении с моделями, которые используют линейную и логистическую регрессии. Данная зависимость часто проявляется при тестировании на реальных наборах данных т.к. в реальной жизни очень часто данные имеют нелинейную природу. Также можно заметить, что метод Кейна с весами дает заметно худший результат в сравнении с другими методами.

Для того чтобы упорядочить тестируемые модели по качеству предсказания на данном наборе данных, воспользуемся парным критерием Стьюдента. Сравним все модели друг с другом и упорядочим их по парному критерию Стьюдента с доверительным интервалом 5%. Результаты упорядочивания представлены на рис. 4.9.

Рис. 4.9 Упорядоченные модели по парному критерию Стьюдента

Результаты сравнения с помощью критерия Стьюдента почти полностью повторяют упорядоченные по медиане результаты предсказаний моделей, которые были представлены на рис. 4.8. Тестирования с воздействием от получения рекламы мужских товаров закончено. Перейдем ко второй части тестирования набора данных - тестирование с воздействием от получения рекламы женских товаров.

На рис. 4.10 представлены распределения результатов предсказаний эффектов от воздействия для клиентов, которые не получали сообщений и получили сообщение с рекламой женских товаров. Исходный код вычисления эффектов от воздействия находится в приложении С.

Рис. 4.10. Эффект от воздействия после получения рекламы женских товаров

Изучая полученные результаты можно заметить, что на данном графике медианы полученных значений разняться значительно больше по сравнению с предыдущим случаем. К тому же, линейные модели показали себя лучше. Также можно заметить, что модели: эконометрический метод (случайный лес), метод двух моделей (случайный лес) и метод воздействие как признак (случайный лес) показали заметно худший результат в сравнении с другими моделями.

Так же, как и в первом случае, упорядочим тестируемые модели по качеству предсказания, воспользовавшись парным критерием Стьюдента с доверительным интервалом 5%. Результаты упорядочивания представлены на рис. 4.11.

Рис. 4.11. Упорядоченные модели по парному критерию Стьюдента

Результаты сравнения с помощью критерия Стьюдента во многом повторяют упорядоченные по медиане результаты предсказаний моделей, которые были представлены на рис. 4.10.

4.4 Выводы

В сравнении участвовали девять методов оценки эффекта от воздействия. Охарактеризуем результаты работы каждого метода по отдельности. Начнем с группы методов выделения переменной и метода двух моделей. Данный метод показал себя как один из лучших методов оценки эффекта от воздействия. На обоих наборах данных метод двух моделей показал высокое качество работы, как при использовании линейной регрессии, так и при использовании случайного леса. Следующий метод - воздействие как признак. Тяжело оценить качество работы данного метода т.к. в большем количестве случаев данный алгоритм показал слабые результаты, но при этом в нескольких тестах показал себя одним из лучших методов. Эконометрический метод показал себя положительно на всех тестах. Можно сказать, что в случае удачно подобранной регрессионной модели, данный метод позволит получить максимально качественные результаты. Последний метод - кадит моделирование. Метод кадит моделирования показал отличные результаты при работе с реальными данными.

Далее подведем итоги для методов трансформации. Начнем с метода Лаи. Метод Лаи был представлен в двух вариация с весами и без. Обе вариации метода показали себя достойно. На наборе с синтетическими данными тестируемые модели давали стабильный результат вне зависимости от величины шума в данных. Далее рассмотрим метод Кейна, который также был представлен в двух вариациях: с весами и без весов. Наличие весов не помогло методу Кейна показать высокой предсказательной точности. Обе вариации метода показали средние результаты на обоих наборах данных. Метод Джасковски - очередной метод, который показал средние результаты на тестовых наборах данных. Рефлективный метод также, как и предыдущие два, показал средние результаты точности работы. Последний метод - пессимистичный метод. Несмотря на своё название данный метод показал себя хорошо. На реальных данных метод оказался в топ-5 лучших по точности работы.

Заключение

Исследования в области оценки эффекта от воздействия сейчас очень актуальны. В течение последних 5 лет интерес к данной теме непрерывно растет. Различные крупные компании находят применение методов оценки эффекта от воздействия в своей деятельности.

Данная работа имеет как прикладной, так и теоретический характер. В рамках данной работы были рассмотрены семейства методов оценки эффекта от воздействия и исследованы методы оценки эффекта, которые решают задачу с помощью сведения к задаче регрессии. Прикладное значение данной работы состоит в разработке библиотеки «pyuplift» https://pyuplift.readthedocs.io, которая реализует рассмотренные методы оценки эффекта от воздействия.

Результаты исследований были представлены на семинаре научно-учебной группы по теме «Гетерогенные эффекты воздействия в клиентской аналитике», а также в статье на конференцию «Математика и междисциплинарные исследования 2019», которая называется «Сравнение методов оценки эффекта от воздействия».

Данная работа имеет несколько вариантов дальнейшего развития. Первый вариант связан с дальнейшим изучением семейства методов оценки эффекта от воздействия, которая решается путем сведения к задаче регрессии. Второй вариант - это исследование и разработка методов прямого вычисления эффекта от воздействия для дальнейшего сравнения эффективности семейств методов и развития библиотеки «pyuplift».

Список источников

Weisberg HI, Pontes VP. Post hoc subgroups in clinical trials: Anathema or analytics? // Clinical trials. 2015 Aug;12(4):357-64.

Issenberg S. How President Obama's campaign used big data to rally individual voters // Technology Review. 2013 Jan 1;116(1):38-49.

Bimber B. Digital media in the Obama campaigns of 2008 and 2012: Adaptation to the personalized political communication environment // Journal of information technology & politics. 2014 Apr 3;11(2):130-50.

Guelman L, Guillйn M, Pйrez-Marнn AM. A decision support framework to implement optimal personalized marketing interventions // Decision Support Systems. 2015 Apr 1;72:24-32.

Athey S, Imbens GW. The econometrics of randomized experiments // Handbook of Economic Field Experiments 2017 Jan 1 (Vol. 1, pp. 73-140). North-Holland.

Devriendt F, Moldovan D, Verbeke W. A literature survey and experimental evaluation of the state-of-the-art in uplift modeling: A stepping stone toward the development of prescriptive analytics // Big data. 2018 Mar 1;6(1):13-41.

Hansotia B, Rukstales B. Incremental value modeling // Journal of Interactive Marketing. 2002 Jul 1;16(3):35.

Chickering DM, Heckerman D. A decision theoretic approach to targeted advertising // Proceedings of the Sixteenth conference on Uncertainty in artificial intelligence 2000 Jun 30 (pp. 82-88). Morgan Kaufmann Publishers Inc.

Radcliffe NJ, Surry PD. Real-world uplift modelling with significance-based uplift trees // White Paper TR-2011-1, Stochastic Solutions. 2011.

Lo VS. The true lift model: a novel data mining approach to response modeling in database marketing // ACM SIGKDD Explorations Newsletter. 2002 Dec 1;4(2):78-86.

Breiman L. Classification and regression trees // Routledge; 2017 Oct 19.

Quinlan JR. C4. 5: programs for machine learning // Elsevier; 2014 Jun 28.

Kass GV. An exploratory technique for investigating large quantities of categorical data // Journal of the Royal Statistical Society: Series C (Applied Statistics). 1980 Jun;29(2):119-27.

Guelman L, Guillйn M, Pйrez-Marнn AM. Random forests for uplift modeling: an insurance customer retention case // International Conference on Modeling and Simulation in Engineering, Economics and Management 2012 May 30 (pp. 123-133). Springer, Berlin, Heidelberg.

Guelman L, Guillйn M, Pйrez Marнn AM. Optimal personalized treatment rules for marketing interventions: A review of methods, a new proposal, and an insurance case study // UB Riskcenter Working Paper Series, 2014/06. 2014.

Breiman L. Arcing classifier (with discussion and a rejoinder by the author) // The annals of statistics. 1998;26(3):801-49.

Breiman L. Random forests // Machine learning. 2001 Oct 1;45(1):5-32.

Lai LY. Influential marketing: a new direct marketing strategy addressing the existence of voluntary buyers (Doctoral dissertation, School of Computing Science-Simon Fraser University).

Shaar A, Abdessalem T, Segard O. Pessimistic uplift modeling // 22nd SIGKDD Conference on Knowledge Discovery and Data Mining (ACM SIGKDD) 2016 Mar 31.

Jaskowski M, Jaroszewicz S. Uplift modeling for clinical trial data // InICML Workshop on Clinical Data Analysis 2012 Jun 30.

Kane K, Lo VS, Zheng J. True-lift modeling: Comparison of methods // J Market Anal. 2014 Dec;2(4):218-38.

Radcliffe NJ, Surry PD. Differential response analysis: Modeling true response by isolating the effect of a single action // Credit Scoring and Credit Control VI. Edinburgh, Scotland. 1999.

Hansotia BJ, Rukstales B. Direct marketing for multichannel retailers: Issues, challenges and solutions // Journal of Database Marketing & Customer Strategy Management. 2002 Mar 1;9(3):259-266.

Справочник по прикладной статистике. В 2-х т. Т. 1: Пер. с англ. / Под ред. Э. Ллойда, У. Ледермана, Ю. Н. Тюрина. - М.: Финансы и статистика, 1989. - 510 с.

Жерон О. Прикладное машинное обучение с помощью Scikit-Learn и TensorFlow: концепции, инструменты и техники для создания интеллектуальных систем // М.:«Диалектика. - 2018.

Дьяконов А. Г. Анализ данных, обучение по прецедентам, логические игры, системы WEKA, RapidMiner и MatLab (Практикум на ЭВМ кафедры математических методов прогнозирования): Учебное пособие // М.: Издательский отдел факультета ВМК МГУ имени МВ Ломоносова. - 2010.

Приложение A. Исходный код вычисления предсказательной точности модели на синтетическом наборе данных

import random

import operator

import numpy as np

import pandas as pd

from sklearn.linear_model import LinearRegression, LogisticRegression

from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier

from sklearn.metrics import mean_squared_error

from pyuplift.variable_selection import *

from pyuplift.transformation import *

import warnings

warnings.filterwarnings('ignore')

def make_linear_regression(

size: int,

x1_params=(0, 1),

x2_params=(0, 0.1),

x3_params=(0, 1),

t_params=(0, 2),

e_params=(0, 1),

eps=0.01,

seed=777

):

np.random.seed(seed)

x1 = np.random.normal(*x1_params, size)

x2 = np.random.normal(*x2_params, size)

x3 = np.random.normal(*x3_params, size)

t = np.random.randint(*t_params, size)

e = np.random.normal(*e_params, size)

y_ = x1 + x2 * t + e

y = []

for value in y_:

if value - int(value) > eps:

y.append(value)

else:

y.append(0)

y = np.array(y)

return pd.DataFrame(data={

'x1': x1,

'x2': x2,

'x3': x3,

't': t,

'y': y

})

def train_test_split_indexes(y, t, train_share=0.7, seed=1):

random.seed(seed)

y_0_t_0, y_0_t_1, y_1_t_0, y_1_t_1, = [], [], [], []

size = len(y)

for i in range(size):

if y[i] == 0:

if t[i] == 0:

y_0_t_0.append(i)

else:

y_0_t_1.append(i)

else:

if t[i] == 0:

y_1_t_0.append(i)

else:

y_1_t_1.append(i)

num_attempts = 0

while num_attempts < 20:

num_attempts += 1

y_0_t_0_train = random.sample(y_0_t_0, int(len(y_0_t_0) * train_share))

y_0_t_1_train = random.sample(y_0_t_1, int(len(y_0_t_1) * train_share))

y_1_t_0_train = random.sample(y_1_t_0, int(len(y_1_t_0) * train_share))

y_1_t_1_train = random.sample(y_1_t_1, int(len(y_1_t_1) * train_share))

y_0_t_0_test = [el for el in y_0_t_0 if el not in y_0_t_0_train]

y_0_t_1_test = [el for el in y_0_t_1 if el not in y_0_t_1_train]

y_1_t_0_test = [el for el in y_1_t_0 if el not in y_1_t_0_train]

y_1_t_1_test = [el for el in y_1_t_1 if el not in y_1_t_1_train]

train_is_not_empty = len(y_0_t_0_train) != 0 and len(y_0_t_1_train) != 0 and len(y_1_t_0_train) != 0 and len(

y_1_t_1_train) != 0

test_is_not_empty = len(y_0_t_0_test) != 0 and len(y_0_t_1_test) != 0 and len(y_1_t_0_test) != 0 and len(

y_1_t_1_test) != 0

if train_is_not_empty and test_is_not_empty:

train_indexes = y_0_t_0_train + y_0_t_1_train + y_1_t_0_train + y_1_t_1_train

test_indexes = y_0_t_0_test + y_0_t_1_test + y_1_t_0_test + y_1_t_1_test

train_indexes.sort()

test_indexes.sort()

return train_indexes, test_indexes

else:

random.seed(seed + 10000)

raise Exception('')

def cross_val_score(x, y, t, model, train_share=0.7, cv=5, seeds=None):

if seeds is None:

seeds = [None for _ in range(cv)]

if cv != len(seeds):

raise Exception("The length of seed's array should be equals to cv.")

scores = []

for i in range(cv):

train_indexes, test_indexes = train_test_split_indexes(y, t, train_share, seeds[i])

model.fit(X[train_indexes, :], y[train_indexes], t[train_indexes])

y_pred = model.predict(X[test_indexes, :])

score = mean_squared_error(y_pred, X[test_indexes, 1])

scores.append(score)

return np.array(scores)

def test(X, y, t, models, cv, seeds):

model_names, model_scores = [], []

for model_name in models:

print(model_name)

scores = cross_val_score(X, y, t, models[model_name], cv=cv, seeds=seeds)

for score in scores:

model_names.append(model_name)

model_scores.append(score)

return pd.DataFrame(data={'Model': model_names, 'RMSE': model_scores})

def show_values_on_bars(axs):

def _show_on_single_plot(ax):

for p in ax.patches:

_x = p.get_x() + p.get_width() / 2

_y = p.get_y() + p.get_height()

value = '{:.1f}'.format(p.get_height())

ax.text(_x, _y, value, ha="center")

if isinstance(axs, np.ndarray):

for idx, ax in np.ndenumerate(axs):

_show_on_single_plot(ax)

else:

_show_on_single_plot(axs)

def get_sorted_names(df):

names_means = {}

for name in df['Model'].unique():

mn = df[df['Model'] == name]['RMSE'].values.mean()

names_means[name] = mn

srtd = sorted(names_means.items(), key=operator.itemgetter(1))

return list(map(lambda x: x[0], srtd))

def find_max_error(df, errors):

for name in errors:

cur_error = df[df['Model'] == name]['RMSE'].values.mean()

if cur_error > errors[name]:

errors[name] = cur_error

return errors

size = 10000

cv = 100

seeds = [(i * 10) for i in range(1, cv + 1)]

models = {

'Эконометрический (лин. рег.)': Econometric(LinearRegression(n_jobs=-1)),

'Эконометрический (случ. лес)': Econometric(RandomForestRegressor(n_jobs=-1)),

'Две модели (лин. рег.)': TwoModel(LinearRegression(n_jobs=-1), LinearRegression(n_jobs=-1)),

'Две модели (случ. лес)': TwoModel(RandomForestRegressor(n_jobs=-1), RandomForestRegressor(n_jobs=-1)),

'Воздействие как признак (лин. рег.)': Dummy(LinearRegression(n_jobs=-1)),

'Воздействие как признак (случ. лес)': Dummy(RandomForestRegressor(n_jobs=-1)),

'Лаи (лог. рег.)': Lai(LogisticRegression(n_jobs=-1)),

'Лаи (случ. лес)': Lai(RandomForestClassifier(n_jobs=-1)),

'Лаи с весами (лог. рег.)': Lai(LogisticRegression(n_jobs=-1), use_weights=True),

'Лаи с весами (случ. лес)': Lai(RandomForestClassifier(n_jobs=-1), use_weights=True),

'Кейн (лог. рег.)': Kane(LogisticRegression(n_jobs=-1)),

'Кейн (случ. лес)': Kane(RandomForestClassifier(n_jobs=-1)),

'Кейн с весами (лог. рег.)': Kane(LogisticRegression(n_jobs=-1), use_weights=True),

'Кейн с весами (случ. лес)': Kane(RandomForestClassifier(n_jobs=-1), use_weights=True),

'Рефлективный (лог. рег.)': Reflective(LogisticRegression(n_jobs=-1)),

'Рефлективный (случ. лес)': Reflective(RandomForestClassifier(n_jobs=-1)),

'Пессимистичный (лог. рег.)': Pessimistic(LogisticRegression(n_jobs=-1)),

'Пессимистичный (случ. лес)': Pessimistic(RandomForestClassifier(n_jobs=-1)),

'Джасковски (лог. рег.)': Jaskowski(LogisticRegression(n_jobs=-1)),

'Джасковски (случ. лес)': Jaskowski(RandomForestClassifier(n_jobs=-1)),

'Кадит (лин. рег.)': Cadit(LinearRegression(n_jobs=-1)),

'Кадит (случ. лес)': Cadit(RandomForestRegressor(n_jobs=-1)),

}

# Error = 0

df = make_linear_regression(size, e_params=(0, 0), eps=0)

X, y, t = df.drop(['t', 'y'], axis=1).values, df['y'].values, df['t'].values

df_stats_0 = test(X, y, t, models, cv, seeds)

df_stats_0.to_csv('outs/error-0.csv', index=False)

# Error = 0.1

df = make_linear_regression(size, e_params=(0, 0.1), eps=0)

X, y, t = df.drop(['t', 'y'], axis=1).values, df['y'].values, df['t'].values

df_stats_01 = test(X, y, t, models, cv, seeds)

df_stats_01.to_csv('outs/error-01.csv', index=False)

# Error = 1

df = make_linear_regression(size, e_params=(0, 1), eps=0)

X, y, t = df.drop(['t', 'y'], axis=1).values, df['y'].values, df['t'].values

df_stats_1 = test(X, y, t, models, cv, seeds)

df_stats_1.to_csv('outs/error-1.csv', index=False)

Приложение B. Исходный код вычисления эффектов от воздействия рекламы мужских товаров

import numpy as np

import pandas as pd

import seaborn as sns

from statistics import mean

from random import sample

from sklearn import preprocessing

from sklearn.linear_model import LinearRegression, LogisticRegression

from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier

from pyuplift.variable_selection import *

from pyuplift.transformation import *

from pyuplift.model_selection import treatment_cross_val_score

from pyuplift.datasets import load_hillstrom_email_marketing

cv = 50

seeds = [(i*10) for i in range(1, cv+1)]

models = {

'Эконометрический (лин. рег.)': Econometric(LinearRegression(n_jobs=-1)),

'Эконометрический (случ. лес)': Econometric(RandomForestRegressor(n_jobs=-1)),

'Две модели (лин. рег.)': TwoModel(LinearRegression(n_jobs=-1), LinearRegression(n_jobs=-1)),

'Две модели (случ. лес)': TwoModel(RandomForestRegressor(n_jobs=-1), RandomForestRegressor(n_jobs=-1)),

'Воздействие как признак (лин. рег.)': Dummy(LinearRegression(n_jobs=-1)),

'Воздействие как признак (случ. лес)': Dummy(RandomForestRegressor(n_jobs=-1)),

'Лаи (лог. рег.)': Lai(LogisticRegression(n_jobs=-1)),

'Лаи (случ. лес)': Lai(RandomForestClassifier(n_jobs=-1)),

'Лаи с весами (лог. рег.)': Lai(LogisticRegression(n_jobs=-1), use_weights=True),

'Лаи с весами (случ. лес)': Lai(RandomForestClassifier(n_jobs=-1), use_weights=True),

'Кейн (лог. рег.)': Kane(LogisticRegression(n_jobs=-1)),

'Кейн (случ. лес)': Kane(RandomForestClassifier(n_jobs=-1)),

'Кейн с весами (лог. рег.)': Kane(LogisticRegression(n_jobs=-1), use_weights=True),

'Кейн с весами (случ. лес)': Kane(RandomForestClassifier(n_jobs=-1), use_weights=True),

'Рефлективный (лог. рег.)': Reflective(LogisticRegression(n_jobs=-1)),

'Рефлективный (случ. лес)': Reflective(RandomForestClassifier(n_jobs=-1)),

'Пессимистичный (лог. рег.)': Pessimistic(LogisticRegression(n_jobs=-1)),

'Пессимистичный (случ. лес)': Pessimistic(RandomForestClassifier(n_jobs=-1)),

'Джасковски (лог. рег.)': Jaskowski(LogisticRegression(n_jobs=-1)),

'Джасковски (случ. лес)': Jaskowski(RandomForestClassifier(n_jobs=-1)),

'Кадит (лин. рег.)': Cadit(LinearRegression(n_jobs=-1)),

'Кадит (случ. лес)': Cadit(RandomForestRegressor(n_jobs=-1)),

}

df = load_hillstrom_email_marketing(load_raw_data=False)

ex_womens_indexes = df['treatment'] != 2

X_ex_womens = df['data'][ex_womens_indexes]

y_ex_womens = df['target'][ex_womens_indexes]

t_ex_womens = df['treatment'][ex_womens_indexes]

ex_womens_model_names, ex_womens_model_scores = [], []

for model_name in models:

print(model_name)

scores = treatment_cross_val_score(X_ex_womens, y_ex_womens, t_ex_womens, models[model_name], cv, seeds=seeds)

for score in scores:

ex_womens_model_names.append(model_name)

ex_womens_model_scores.append(score)

df_ex_womens_stats = pd.DataFrame(data={'Модель': ex_womens_model_names, 'Эффект от воздействия': ex_womens_model_scores})

Приложение C. Исходный код вычисления эффектов от воздействия рекламы женских товаров

import numpy as np

import pandas as pd

import seaborn as sns

from statistics import mean

from random import sample

from sklearn import preprocessing

from sklearn.linear_model import LinearRegression, LogisticRegression

from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier

from pyuplift.variable_selection import *

from pyuplift.transformation import *

from pyuplift.model_selection import treatment_cross_val_score

from pyuplift.datasets import load_hillstrom_email_marketing

cv = 50

seeds = [(i*10) for i in range(1, cv+1)]

models = {

'Эконометрический (лин. рег.)': Econometric(LinearRegression(n_jobs=-1)),

'Эконометрический (случ. лес)': Econometric(RandomForestRegressor(n_jobs=-1)),

'Две модели (лин. рег.)': TwoModel(LinearRegression(n_jobs=-1), LinearRegression(n_jobs=-1)),

'Две модели (случ. лес)': TwoModel(RandomForestRegressor(n_jobs=-1), RandomForestRegressor(n_jobs=-1)),

'Воздействие как признак (лин. рег.)': Dummy(LinearRegression(n_jobs=-1)),

'Воздействие как признак (случ. лес)': Dummy(RandomForestRegressor(n_jobs=-1)),

'Лаи (лог. рег.)': Lai(LogisticRegression(n_jobs=-1)),

'Лаи (случ. лес)': Lai(RandomForestClassifier(n_jobs=-1)),

'Лаи с весами (лог. рег.)': Lai(LogisticRegression(n_jobs=-1), use_weights=True),

'Лаи с весами (случ. лес)': Lai(RandomForestClassifier(n_jobs=-1), use_weights=True),

'Кейн (лог. рег.)': Kane(LogisticRegression(n_jobs=-1)),

'Кейн (случ. лес)': Kane(RandomForestClassifier(n_jobs=-1)),

'Кейн с весами (лог. рег.)': Kane(LogisticRegression(n_jobs=-1), use_weights=True),

'Кейн с весами (случ. лес)': Kane(RandomForestClassifier(n_jobs=-1), use_weights=True),

'Рефлективный (лог. рег.)': Reflective(LogisticRegression(n_jobs=-1)),

'Рефлективный (случ. лес)': Reflective(RandomForestClassifier(n_jobs=-1)),

'Пессимистичный (лог. рег.)': Pessimistic(LogisticRegression(n_jobs=-1)),

'Пессимистичный (случ. лес)': Pessimistic(RandomForestClassifier(n_jobs=-1)),

'Джасковски (лог. рег.)': Jaskowski(LogisticRegression(n_jobs=-1)),

'Джасковски (случ. лес)': Jaskowski(RandomForestClassifier(n_jobs=-1)),

'Кадит (лин. рег.)': Cadit(LinearRegression(n_jobs=-1)),

'Кадит (случ. лес)': Cadit(RandomForestRegressor(n_jobs=-1)),

}

df = load_hillstrom_email_marketing(load_raw_data=False)

ex_mens_indexes = df['treatment'] != 2

X_ex_mens = df['data'][ex_mens_indexes]

y_ex_mens = df['target'][ex_mens_indexes]

t_ex_mens = df['treatment'][ex_mens_indexes]

ex_mens_model_names, ex_mens_model_scores = [], []

for model_name in models:

print(model_name)

scores = treatment_cross_val_score(X_ex_mens, y_ex_mens, t_ex_mens, models[model_name], cv, seeds=seeds)

for score in scores:

ex_mens_model_names.append(model_name)

ex_mens_model_scores.append(score)

df_ex_mens_stats = pd.DataFrame(data={'Модель': ex_mens_model_names, 'Эффект от воздействия': ex_mens_model_scores})

Размещено на Allbest.ru

...

Подобные документы

  • Освоение методики организации и проведения выборочного наблюдения; статистических методов и методов компьютерной обработки информации; методов оценки параметров генеральной совокупности на основе выборочных данных. Проверка статистических гипотез.

    лабораторная работа [258,1 K], добавлен 13.05.2010

  • Обзор методов решения задачи. Расчет количества клиентов, выручки, средний размер очереди и количество отказов за период моделирования. Алгоритм моделирования процесса, разработка его программной реализации. Машинный эксперимент с разработанной моделью.

    курсовая работа [932,5 K], добавлен 15.01.2011

  • Синтез интуитивных и формализованных методов при прогнозировании внутренних экономических связей. Экспертные оценки в основе методов неформализованного анализа и прогноза. Методы экспертных оценок: аналитический, "Комиссий", "Дельфи", "Конференций".

    статья [258,7 K], добавлен 07.08.2017

  • Изучение на практике современных методов управления и организации производства, совершенствование применения этих методов. Описание ориентированной сети, рассчет показателей сети для принятия управленческих решений. Проблема выбора и оценка поставщика.

    курсовая работа [137,6 K], добавлен 21.08.2010

  • Разработка и исследование эконометрических методов с учетом специфики экономических данных и в соответствии с потребностями экономической науки и практики. Применение эконометрических методов и моделей для статистического анализа экономических данных.

    реферат [43,1 K], добавлен 10.01.2009

  • Повышение надежности метода оценки клиентов для снижения рисков при выдаче кредита путем определения ключевых параметров, влияющих на принятие решения. Использование банком скоринговых моделей на различных этапах оценки клиентов, алгоритм apriori.

    дипломная работа [2,4 M], добавлен 25.07.2015

  • Задачи эконометрики, ее математический аппарат. Взаимосвязь между экономическими переменными, примеры оценки линейности и аддитивности. Основные понятия и проблемы эконометрического моделирования. Определение коэффициентов линейной парной регрессии.

    контрольная работа [79,3 K], добавлен 28.07.2013

  • Аппроксимация данных с учетом их статистических параметров. Математическая постановка задачи регрессии, ее принципы. Виды регрессии: линейная и нелинейная, полиномиальная. Сглаживание данных и предсказание зависимостей. Реализация задач в Mathcad.

    реферат [167,8 K], добавлен 12.04.2009

  • Сущность, цели и задачи выборочного обследования. Описание и особенности использования типического способа отбора выборочной совокупности. Формы статистических показателей выборочного наблюдения. Виды и методика расчета оценок статистических показателей.

    курсовая работа [124,1 K], добавлен 13.03.2010

  • Моделирование работы регулировочного участка цеха. Выбор методов решения задачи. Критерий оценки эффективности процесса функционирования системы - вероятность отказа агрегату в первичной обработке. Алгоритмизация модели системы и ее машинная реализация.

    курсовая работа [36,3 K], добавлен 27.01.2011

  • Классификационные принципы методов прогнозирования: фактографические, комбинированные и экспертные. Разработка приёмов статистического наблюдения и анализа данных. Практическое применение методов прогнозирования на примере метода наименьших квадратов.

    курсовая работа [77,5 K], добавлен 21.07.2013

  • Исследование самой совершенной операционной системы для мобильных устройств в мире. Особенности использования математических методов для улучшения работы организации и максимизации прибыли. Применение скоринга для оценки риска и анализа сотрудничества.

    курсовая работа [344,1 K], добавлен 04.12.2013

  • Оптимизационные методы решения экономических задач. Классическая постановка задачи оптимизации. Оптимизация функций. Оптимизация функционалов. Многокритериальная оптимизация. Методы сведения многокритериальной задачи к однокритериальной. Метод уступок.

    реферат [565,7 K], добавлен 20.06.2005

  • Прямая регрессии. Стандартная ошибка оценки. Использование функции "Линейная линия тренда" электронных таблиц Microsoft Excell для выведения на график уравнения регрессии. Оценка случайного отклонения. Построение прогнозного значения на основе данных.

    контрольная работа [44,0 K], добавлен 08.02.2015

  • Теоретические основы экономико-математических методов. Этапы принятия решений. Классификация задач оптимизации. Задачи линейного, нелинейного, выпуклого, квадратичного, целочисленного, параметрического, динамического и стохастического программирования.

    курсовая работа [2,3 M], добавлен 07.05.2013

  • Решение математической двухпараметрической задачи оптимизации на основе методов линейного программирования. Выбор оптимальной профессии, для которой показатели безопасности будут минимальными или максимальными. Методика интегральной оценки условий труда.

    контрольная работа [256,1 K], добавлен 29.04.2013

  • Основные положения теории расписаний, постановка задачи минимизации средневзвешенного суммарного штрафа и методы ее решения. Разработка алгоритма решения данной задачи методами полного перебора и оптимальной вставки, составление программы на Delphi.

    курсовая работа [468,7 K], добавлен 10.04.2011

  • Коэффициенты текущей ликвидности и инвестиционной активности - основные показатели оценки финансового состояния предприятия. Типы задач многокритериальной сравнительной оценки вариантов. Расчет минимума целевой функции поисковым методом Хука-Дживса.

    курсовая работа [127,8 K], добавлен 29.05.2019

  • Построение модели планирования производства. Использование инструментального средства "Поиск решения" для решения задачи линейного программирования. Решение оптимальной задачи, с использованием методов математического анализа и возможностей MathCad.

    лабораторная работа [517,1 K], добавлен 05.02.2014

  • Характеристика ипотечного кредитования на примере Брянской области. Обзор математических методов принятия решений: экспертных оценок, последовательных и парных сравнений, анализа иерархий. Разработка программы поиска оптимального ипотечного кредита.

    курсовая работа [1,7 M], добавлен 29.11.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.