Как люди покупают какие-либо продукты? На какие основные факторы обращают внимание потребители при покупке товара?

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

Согласно исследованиям, люди больше всего нуждаются в социальных доказательствах при покупке или выборе продукта.

Так что же такое социальное доказательство и почему оно необходимо для электронного коммерческого маркетинга?

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

Существует 6 типов социального доказательства:

· Клиенты — социальное доказательство от ваших существующих клиентов

· Эксперты — социальное доказательство от ценных экспертов в вашей отрасли

· Знаменитости — Социальные доказательства от влиятельных лиц в социальных сетях

· Толпы — большое количество людей, которым нравится ваш продукт.

· Друзья — Социальные сети от друзей

"Потому что у толпы есть мудрость, и мы можем думать, что если все делают это хорошо, если всем это нравится, это хорошо".

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

Факторы, определяющие покупку товара, следующие:

· Рейтинг продуктов

· Сортировка товаров

· Сортировка комментариев пользователей на страницах сведений о продукте

· Дизайн страницы и областей взаимодействия

· Пробные версии

· Проверка возможных реакций

В этой статье я объясню эти 3 основные концепции с некоторыми примерами, используя Python.

Приятного чтения 😊

1) Оценка продуктов

Я хочу объяснить этот раздел, создав новый проект через Pycharm.

Содержание соответствующего курса в этом проекте следующее:

Название курса: Курс Python

Рейтинг: 4,71(4,7132)

Всего баллов: 3025

В этом разделе мы создадим приложение, основанное на пользовательских и временных средневзвешенных рейтингах продуктов для соответствующего курса.

· Средний

· Средневзвешенное значение по времени

· Средневзвешенное значение на основе пользователей

· Взвешенный рейтинг (по времени и по пользователям)

Мы импортируем соответствующие библиотеки и устанавливаем параметр отображения для столбцов и строк.

import pandas as pd
import math
import scipy.stats as st
from sklearn.preprocessing import MinMaxScaler
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
pd.set_option('display.width', 500)
pd.set_option('display.expand_frame_repr', False)
pd.set_option('display.float_format', lambda x: '%.5f' % x)

Прочитать набор данных

df=pd.read_csv("C:/Users/mgurk/PycharmProjects/pythonProject1/datasets/course_reviews_2020.csv",sep=";")
df.head()

df.shape
# Out[76]: (2924, 6)
df["Rating"].value_counts()
# Out[77]: 
5.00000    2181
4.00000     607
3.00000     101
1.00000      10
2.50000       8
2.00000       8
4.50000       7
3.50000       2
Name: Rating, dtype: int64

1.1 Среднее

Мы рассчитываем средний рейтинг, поставленный пользователями

df["Rating"].mean()
# Out[79]: 4.692373461012312

1.2 Средневзвешенное значение по времени

Рассчитаем средний рейтинг этого курса, взвешенный по времени.

Мы меняем тип данных переменной времени на дату.

df["Timestamp"] = pd.to_datetime(df["Timestamp"])

Мы создаем текущую переменную даты на основе указанного времени.

current_date =pd.to_datetime('2021-01-05')

После этого мы создаем новую переменную на основе дней.

df["days"] = (current_date - df["Timestamp"]).dt.days

Средняя оценка курса рассчитывается путем присвоения среднего значения определенного веса в соответствии с разницей в днях. Я установил дневное время как минимум 15 дней. Это полностью субъективная ситуация по определению дней.

Мы создаем новую функцию как взвешенное среднее по времени.

def time_based_weighted_average(dataframe, w1, w2, w3, w4,w5):
    return dataframe.loc[dataframe["days"]<= 15,"Rating"].mean() * w1 / 100 + \
           dataframe.loc[(dataframe["days"] > 15) & (dataframe["days"] <= 30) , "Rating"].mean() * w2 / 100 + \
           dataframe.loc[(dataframe["days"] > 30) & (dataframe["days"] <= 60) , "Rating"].mean() * w3 / 100 + \
           dataframe.loc[(dataframe["days"] > 60) & (dataframe["days"] <= 90), "Rating"].mean()  * w4 / 100 + \
           dataframe.loc[dataframe["days"] > 90, "Rating"].mean() * w5 / 100

Выходная функция:

time_based_weighted_average(df,30,24,20,16,10)
# # Out[30]: 4.71066527027193

1.3 Средневзвешенное значение на основе пользователей

Давайте посчитаем средний рейтинг этого курса на основе взвешенных пользователей.

Во-первых, мы изучаем показатели прогресса пользователей, которые участвуют в этом курсе.

df["Progress"].value_counts().head(20)

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

def user_based_weighted_average(dataframe, u1, u2, u3, u4,u5):
    return dataframe.loc[dataframe["Progress"] <= 5 ,"Rating"].mean() * u1/100 +\
           dataframe.loc[(dataframe["Progress"] > 5) & (dataframe["Progress"] <= 20), "Rating"].mean() * u2 / 100 + \
           dataframe.loc[(dataframe["Progress"] > 20) & (dataframe["Progress"] <= 40), "Rating"].mean() * u3 / 100 + \
           dataframe.loc[(dataframe["Progress"] > 40) & (dataframe["Progress"] <= 60), "Rating"].mean() * u4 / 100 + \
           dataframe.loc[(dataframe["Progress"] > 60), "Rating"].mean() * u5 / 100

Выведите функцию:

user_based_weighted_average(df, 16, 18, 20, 22,24)
# Out[88]: 4.720023369693682

1.4 Взвешенный рейтинг (как по времени, так и по пользователям)

На этот раз мы рассчитаем средний балл рейтинга, включив средневзвешенные значения как по времени, так и по пользователям.

def course_weighted_rating(dataframe, user_w):
    time_w = 100-user_w
    return time_based_weighted_average(dataframe,w1=30,w2=24,w3=20,w4=16,w5=10) * time_w/100 + \
           user_based_weighted_average(dataframe,u1=16,u2=18,u3=20,u4=22,u5=24)*user_w/100

Выведите функцию:

course_weighted_rating(df,40)
# Out[90]: 4.714408510040631

В последнем случае мы видим, что нашли оценку, очень близкую к оценке курса, используя функцию как взвешенную оценку курса.

2) Сортировка продуктов

Я объясню детали сортировки продуктов, используя набор данных фильмов IMDb. В этом разделе 4 основные темы.

· Сортировка по тарифам

· Сортировка по количеству комментариев или количеству покупок

· Сортировка по рейтингу, комментариям и покупкам

· Байесовский средний рейтинговый балл

Давайте импортируем соответствующие библиотеки и настроим отображение столбцов и строк.

import pandas as pd
import math
import scipy.stats as st
from sklearn.preprocessing import MinMaxScaler
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
pd.set_option('display.expand_frame_repr', False)
pd.set_option('display.float_format', lambda x: '%.5f' % x)

Прочитайте набор данных фильмов IMDb.

df= pd.read_csv('C:/Users/mgurk/PycharmProjects/pythonProject1/datasets/movies_metadata.csv',low_memory=False)

Мы создаем новый набор данных, выбирая определенные переменные в текущем наборе данных.

df = df[["title","vote_average","vote_count"]]
df.head()

2.1 Сортировка по рейтингу

df.sort_values("vote_average",ascending=False).head(20)

2.2 Сортировка по количеству комментариев или количеству покупок

df["vote_count"].describe([0.10, 0.25, 0.50, 0.70, 0.80, 0.90, 0.95, 0.99]).T

df[df["vote_count"] > 400].sort_values("vote_average", ascending=False).head(20)

Средние значения голосов и общее количество голосов отличаются друг от друга по масштабу. Следовательно, мы должны привести общее количество голосов к той же шкале (от 1 до 10)

df["vote_count_score"] = MinMaxScaler(feature_range=(1, 10)). \
    fit(df[["vote_count"]]). \
    transform(df[["vote_count"]])

2.3 Сортировка по рейтингу, комментарию и покупке

Мы определяем новую переменную как «средний счет», объединяя эти две переменные. Затем мы сортируем фильмы по этой переменной.

df["average_count_score"] = df["vote_average"] * df["vote_count_score"]
df.sort_values("average_count_score", ascending=False).head(20)

Компании могут создавать функции с настраиваемыми параметрами для сортировки состояний в своем наборе данных.

Давайте создадим функцию сортировки в этом наборе данных и посмотрим на эту ситуацию.

# r: vote_average
# v: vote_count
N = 1000
C = df['vote_average'].mean()
def weighted_rating_sort(r, v, N, C):
    return (v / (v + N) * r) + (N / (v + N) * C)

Выведите функцию:

df["weighted_rating_sort"] = weighted_rating_sort(df["vote_average"],df["vote_count"],N,C)

2.4 Байесовский средний рейтинговый балл

Байесовский средний рейтинг также указывается как ранжирование продуктов в соответствии с 5-звездочными рейтингами или ранжирование продуктов в соответствии с 5-звездочным распределением. Среднее значение рассчитывается по распределению баллов.

Мы определяем байесовскую среднюю рейтинговую функцию следующим образом:

def bayesian_average_rating(n, confidence=0.95):
    if sum(n) == 0:
        return 0
    K = len(n)
    z = st.norm.ppf(1 - (1 - confidence) / 2)
    N = sum(n)
    first_part = 0.0
    second_part = 0.0
    for k, n_k in enumerate(n):
        first_part += (k + 1) * (n[k] + 1) / (N + K)
        second_part += (k + 1) * (k + 1) * (n[k] + 1) / (N + K)
    score = first_part - z * math.sqrt((second_part - first_part * first_part) / (N + K + 1))
    return score

Значение n указывает звезды, которые необходимо ввести, и частоту наблюдения этих звезд.

Значение шкалы баллов имеет только одну фокусную точку. Это также значение рейтинга. На этом этапе, если необходимо сосредоточиться более чем на одной ситуации, байесовская средняя оценка может привести к ошибке.

Вы можете найти мой код для байесовской функции среднего рейтинга в моем репозитории Github.

Нажмите для проблем с измерением Github Repo

Вы можете нажать на ссылку, чтобы получить доступ к моему профилю Github.

Заключение:

Во-первых, вам нужно правильно понять набор данных.

Вы должны правильно масштабировать переменные, которые будете оценивать или сортировать.

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

Я надеюсь, что эта статья может стать полезным источником информации для вашей будущей работы.

Ссылки: