وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

پیش‌بینی کلیک‌های تبلیغاتی مشتری از طریق یادگیری ماشینی

0 1
زمان لازم برای مطالعه: 8 دقیقه


معرفی

بازاریابی اینترنتی در گذشته اخیر استراتژی های بازاریابی سنتی را در اختیار گرفته است. شرکت ها ترجیح می دهند محصولات خود را تبلیغ کنند روی وب سایت ها و پلتفرم های رسانه های اجتماعی با این حال، هدف قرار دادن مخاطبان مناسب هنوز یک چالش در بازاریابی آنلاین است. صرف میلیون ها دلار برای نمایش تبلیغات به مخاطبانی که احتمال خرید محصولات شما را ندارند می تواند هزینه بر باشد.

در این مقاله، ما با داده‌های تبلیغاتی یک آژانس بازاریابی کار خواهیم کرد تا یک الگوریتم یادگیری ماشینی ایجاد کنیم که پیش‌بینی می‌کند کاربر خاصی کلیک کند یا خیر. روی تبلیغات. داده ها از 10 متغیر تشکیل شده است: Daily Time Spent روی Site، Age، Area Income، Daily Internet Usage، Ad Topic Line، City، Male، Country، Timestamp و Clicked روی Ad.

متغیر اصلی مورد علاقه ما کلیک شده است روی آگهی’. این متغیر می تواند دو نتیجه ممکن داشته باشد: 0 و 1 که در آن 0 به حالتی اشاره دارد که کاربر روی تبلیغ کلیک نکرده است، در حالی که 1 به سناریویی اشاره دارد که کاربر روی تبلیغات کلیک می کند.

خواهیم دید که آیا می‌توانیم از ۹ متغیر دیگر برای پیش‌بینی دقیق مقدار «کلیک‌شده» استفاده کنیم روی متغیر آگهی ما همچنین برخی از تجزیه و تحلیل داده های اکتشافی را انجام خواهیم داد تا ببینیم چگونه Daily Time Spent روی Site در ترکیب با Ad Topic Line بر تصمیم کاربر برای کلیک کردن تأثیر می گذارد روی آگهی

واردات کتابخانه ها

برای توسعه مدل پیش بینی خود، باید import کتابخانه های ضروری پایتون:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

%matplotlib inline

وارد کردن مجموعه داده

مجموعه داده های این مقاله را می توانید از اینجا دانلود کنید لینک کاگل. فایل فشرده دانلود شده را از حالت فشرده خارج کرده و در آن قرار دهید advertising.csv فایل در درایو محلی شما این فایلی است که می خواهیم برای آموزش مدل یادگیری ماشین خود استفاده کنیم.

اکنون باید داده ها را بارگذاری کنیم:

data = pd.read_csv('E:/Datasets/advertising.csv')

بیایید ده خط اول DataFrame خود را ببینیم:

data.head(10)

پیش‌بینی کلیک‌های تبلیغاتی مشتری از طریق یادگیری ماشینی

مستقر روی در خطوط اول جدول، می‌توانیم بینشی اولیه از داده‌هایی که با آنها کار می‌کنیم به دست آوریم. ما می خواهیم بررسی کنیم که چه مقدار داده در هر متغیر داریم.

data.info()

خروجی:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1000 entries, 0 to 999
Data columns (total 10 columns):
Daily Time Spent روی Site    1000 non-null float64
Age                         1000 non-null int64
Area Income                 1000 non-null float64
Daily Internet Usage        1000 non-null float64
Ad Topic Line               1000 non-null object
City                        1000 non-null object
Male                        1000 non-null int64
Country                     1000 non-null object
Timestamp                   1000 non-null object
Clicked روی Ad               1000 non-null int64
dtypes: float64(3), int64(3), object(4)
memory usage: 78.2+ KB

خبر خوب! همه متغیرها کامل هستند و هیچ مقدار گمشده ای در آنها وجود ندارد. هر یک از آنها شامل 1000 عنصر است و نیازی به پیش پردازش اضافی داده های خام نخواهد بود.

ما نیز استفاده خواهیم کرد describe تابع برای به دست آوردن بینش نسبت به محدوده هایی که در آن متغیرها تغییر می کنند:

data.describe()

پیش‌بینی کلیک‌های تبلیغاتی مشتری از طریق یادگیری ماشینی

یک واقعیت جالب از جدول این است که کمترین درآمد منطقه 13996.50 دلار و بالاترین آن 79484.80 دلار است. این بدان معناست که بازدیدکنندگان سایت افرادی هستند که به طبقات اجتماعی مختلف تعلق دارند. همچنین می توان نتیجه گرفت که ما در حال تجزیه و تحلیل یک وب سایت محبوب هستیم زیرا کاربران بین 32 تا 91 دقیقه وقت می گذارند. روی وب سایت در یک جلسه اینها واقعا اعداد بزرگی هستند!

همچنین میانگین سنی بازدیدکنندگان 36 سال است. می بینیم که جوان ترین کاربر 19 و مسن ترین کاربر 61 ساله است. می توان نتیجه گرفت که سایت کاربران بزرگسال را هدف قرار می دهد. در نهایت، اگر بپرسیم که این سایت بیشتر توسط مردان بازدید می شود یا زنان، می بینیم که وضعیت تقریباً برابر است (52٪ به نفع زنان).

برای تجزیه و تحلیل بیشتر داده‌هایمان، اجازه دهید ابتدا یک هیستوگرام با تخمین چگالی هسته برای آن ترسیم کنیم Age متغیر.

from scipy.stats import norm
sns.distplot(data('Age'), hist=False, color='r', rug=True, fit=norm);

پیش‌بینی کلیک‌های تبلیغاتی مشتری از طریق یادگیری ماشینی

می توان نتیجه گرفت که متغیر Age دارای توزیع نرمال داده ها است. در برخی از مقالات بعدی خواهیم دید که چرا این کار برای پردازش موثر داده ها خوب است.

بیایید نمودار چگالی دو بعدی را برای تعیین وابستگی متقابل دو متغیر ترسیم کنیم. بیایید ببینیم سن کاربر و زمان صرف شده چگونه است روی سایت لینک شده اند

f, ax = plt.subplots(figsize=(10, 10))
sns.kdeplot(data.Age, data('Daily Time Spent روی Site'), color="b", ax=ax)
sns.rugplot(data.Age, color="r", ax=ax)
sns.rugplot(data('Daily Time Spent روی Site'), vertical=True, ax=ax)

پیش‌بینی کلیک‌های تبلیغاتی مشتری از طریق یادگیری ماشینی

از تصویر می توان نتیجه گرفت که کاربران جوان زمان بیشتری را صرف می کنند روی سایت. این بدان معناست که کاربران بین 20 تا 40 سال می توانند گروه هدف اصلی برای کمپین بازاریابی باشند. به صورت فرضی، اگر محصولی برای افراد میانسال داشته باشیم، این سایت مناسب برای تبلیغات است. برعکس، اگر محصولی برای افراد بالای 60 سال داشته باشیم، تبلیغ اشتباه است. روی این سایت.

ما یک نمودار چگالی دیگر را ارائه خواهیم کرد و وابستگی متقابل را تعیین خواهیم کرد Daily Time Spent روی Site و Daily Internet Usage.

f, ax = plt.subplots(figsize=(8, 8))
cmap = sns.cubehelix_palette(as_cmap=True, start=0, dark=0, light=3, reverse=True)
sns.kdeplot(data("Daily Time Spent روی Site"), data('Daily Internet Usage'),
    cmap=cmap, n_levels=100, shade=True);

پیش‌بینی کلیک‌های تبلیغاتی مشتری از طریق یادگیری ماشینی

از شکل بالا مشخص است که کاربرانی که زمان بیشتری را صرف می کنند روی اینترنت نیز زمان بیشتری را صرف می کند روی سایت.

اکنون روش تجسم روندها در داده ها را با استفاده از این نشان خواهیم داد scatter_matrix تابع. ما فقط متغیرهای عددی را برای انجام تجزیه و تحلیل درج خواهیم کرد.

from pandas.plotting import scatter_matrix
scatter_matrix(data(('Daily Time Spent روی Site', 'Age','Area Income', 'Daily Internet Usage')),
    alpha=0.3, figsize=(10,10))

پیش‌بینی کلیک‌های تبلیغاتی مشتری از طریق یادگیری ماشینی

تصویر بزرگ بینش خوبی از ویژگی های کاربرانی که کلیک می کنند می دهد روی تبلیغات بر این اساس، می توان تعداد زیادی تحلیل بیشتر انجام داد. ما آنها را به شما واگذار می کنیم، سعی کنید حقایق جالب دیگری را از داده ها پیدا کنید و آن را در نظرات با ما به اشتراک بگذارید.

پیش پردازش داده ها

شاید متوجه شده باشید Ad Topic Line، City، و Country ستون های دسته بندی هستند. بیایید تمام مقادیر منحصر به فرد این ستون ها را رسم کنیم.

object_variables = ('Ad Topic Line', 'City', 'Country')
data(object_variables).describe(include=('O'))

پیش‌بینی کلیک‌های تبلیغاتی مشتری از طریق یادگیری ماشینی

همانطور که از جدول بالا می بینیم، تمام مقادیر در ستون هستند Ad Topic Line منحصر به فرد هستند، در حالی که City ستون شامل 969 مقدار منحصر به فرد از 1000 است. عناصر منحصر به فرد زیادی در این دو ستون طبقه بندی شده وجود دارد و به طور کلی انجام یک پیش بینی بدون وجود الگوی داده دشوار است. به همین دلیل، آنها از تجزیه و تحلیل بیشتر حذف خواهند شد. سومین متغیر مقوله ای، یعنی Country، دارای یک عنصر منحصر به فرد (فرانسه) است که 9 بار تکرار می شود. علاوه بر این، می‌توانیم کشورهایی را با بیشترین تعداد بازدیدکننده تعیین کنیم:

pd.crosstab(index=data('Country'), columns='count').sort_values(('count'), ascending=False).head(20)

جدول زیر 20 کشوری که بیشترین نمایندگی را در DataFrame ما دارند را نشان می دهد.

پیش‌بینی کلیک‌های تبلیغاتی مشتری از طریق یادگیری ماشینی

قبلاً دیده‌ایم، 237 کشور منحصربه‌فرد مختلف در مجموعه داده‌های ما وجود دارد و هیچ کشوری بیش از حد مسلط نیست. تعداد زیادی از عناصر منحصر به فرد اجازه نمی دهد که یک مدل یادگیری ماشینی روابط ارزشمندی را ایجاد کند. به همین دلیل، این متغیر نیز حذف خواهد شد.

data = data.drop(('Ad Topic Line', 'City', 'Country'), axis=1)

در مرحله بعد، ما مقوله “Timestamp” را تجزیه و تحلیل خواهیم کرد. این نشان دهنده زمان دقیق کلیک کاربر است روی تبلیغ ما این دسته را به 4 دسته جدید گسترش خواهیم داد: ماه، روز ماه، روز هفته و ساعت. به این ترتیب متغیرهای جدیدی بدست می آوریم که یک مدل ML قادر به انجام آنها خواهد بود process و وابستگی ها و همبستگی های احتمالی را پیدا کنید. از آنجایی که متغیرهای جدیدی ایجاد کرده ایم، متغیر اصلی “Timestamp” را از جدول حذف می کنیم. متغیر “روز هفته” حاوی مقادیری از 0 تا 6 است که هر عدد نشان دهنده یک روز خاص از هفته (از دوشنبه تا یکشنبه) است.

data('Timestamp') = pd.to_datetime(data('Timestamp'))

data('Month') = data('Timestamp').dt.month
data('Day of the month') = data('Timestamp').dt.day
data("Day of the week") = data('Timestamp').dt.dayofweek
data('Hour') = data('Timestamp').dt.hour
data = data.drop(('Timestamp'), axis=1)

data.head()

پیش‌بینی کلیک‌های تبلیغاتی مشتری از طریق یادگیری ماشینی

آموزش و آزمایش مجموعه داده ها

هنگامی که مجموعه داده پردازش شد، باید آن را به دو بخش تقسیم کنیم: آموزش و مجموعه تست. ما خواهیم کرد import و استفاده کنید train_test_split عملکرد برای آن همه متغیرها به جز ‘Clicked’ روی Ad’ مقادیر ورودی خواهد بود X برای مدل های ML متغیر ‘Clicked’ روی آگهی در ذخیره می شود y، و متغیر پیش بینی را نشان می دهد. ما خودسرانه انتخاب کردیم که 33 درصد از کل داده ها را برای مجموعه آموزشی اختصاص دهیم.

from sklearn.model_selection import train_test_split

X = data(('Daily Time Spent روی Site', 'Age', 'Area Income', 'Daily Internet Usage',
    'Male', 'Month', 'Day of the month' ,'Day of the week'))
y = data('Clicked روی Ad')
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

مراحل توسعه و برازش مدل

در این مقاله، دو مدل مختلف ML توسعه داده خواهد شد: یک مدل رگرسیون لجستیک و یک مدل درخت تصمیم.

مدل رگرسیون لجستیک الگوریتمی است که از یک تابع لجستیک برای مدلسازی متغیرهای وابسته باینری استفاده می کند. ابزاری برای تجزیه و تحلیل پیش بینی است و برای توضیح روابط بین متغیرهای متعدد استفاده می شود. در لینک زیر می توانید با این تکنیک بیشتر آشنا شوید: رگرسیون لجستیک.

درخت تصمیم یکی از رایج ترین تکنیک های داده کاوی برای تحلیل و مدل سازی است. برای طبقه بندی، پیش بینی، تخمین، خوشه بندی، توصیف داده ها و تجسم استفاده می شود. مزایای Decision Trees در مقایسه با سایر تکنیک های داده کاوی، سادگی و کارایی محاسبات است. مقداری پس زمینه روی درخت‌های تصمیم و روش استفاده از آنها با Scikit-Learn را می‌توانید در اینجا پیدا کنید: درخت‌های تصمیم در پایتون با Scikit-Learn

اولین مدلی که خواهیم داشت import یک مدل رگرسیون لجستیک خواهد بود. ابتدا لازم است که بارگذاری شود LogisticRegression تابع از sklearn.linear_model کتابخانه همچنین، ما را بارگذاری خواهیم کرد accuracy_score برای ارزیابی عملکرد طبقه بندی مدل.

from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
from sklearn.metrics import confusion_matrix

مراحل بعدی اولیه سازی مدل، آموزش آن و در نهایت انجام پیش بینی است.

model_1 = LogisticRegression(solver='lbfgs')
model_1.fit(X_train, y_train)
predictions_LR = model_1.predict(X_test)

print('Logistic regression accuracy:', accuracy_score(predictions_LR, y_test))
print('')
print('Confusion matrix:')
print(confusion_matrix(y_test,predictions_LR))

خروجی:

Logistic regression accuracy: 0.906060606060606

Confusion matrix:
((158   4)
 ( 27 141))

دقت مدل رگرسیون لجستیک 906/0 یا 6/90 درصد است. همانطور که مشاهده می شود، عملکرد مدل نیز توسط ماتریس سردرگمی تعیین می شود. شرط استفاده از این ماتریس، بهره برداری است روی یک مجموعه داده با مقادیر درست و نادرست شناخته شده. می توانید اطلاعات تکمیلی را بیابید روی ماتریس سردرگمی در اینجا: ماتریس سردرگمی.

ماتریس سردرگمی ما به ما می گوید که تعداد کل پیش بینی های دقیق است 158 + 141 = 299. از سوی دیگر، تعداد پیش بینی های نادرست است 27 + 4 = 31. ما می توانیم از دقت پیش بینی مدل خود راضی باشیم.

حالا ما خواهیم کرد import DecisionTreeClassifier از sklearn.tree کتابخانه model_2 مبتنی خواهد بود روی تکنیک درخت تصمیم مانند مورد قبل آموزش داده می شود و پیش بینی های مورد نظر انجام می شود.

from sklearn.tree import DecisionTreeClassifier

model_2 = DecisionTreeClassifier()
model_2.fit(X_train, y_train)
predictions_DT = model_2.predict(X_test)

print('Decision tree accuracy:', accuracy_score(predictions_DT, y_test))
print('')
print('Confusion matrix:')
print(confusion_matrix(y_test,predictions_DT))

خروجی:

Decision tree accuracy: 0.9333333333333333

Confusion matrix:
((151  11)
 ( 11 157))

می توان نتیجه گرفت که مدل درخت تصمیم در مقایسه با مدل رگرسیون لجستیک عملکرد بهتری از خود نشان داد. ماتریس سردرگمی به ما نشان می دهد که 308 پیش بینی به درستی انجام شده است و تنها 22 پیش بینی نادرست وجود دارد. علاوه بر این، دقت درخت تصمیم در مقایسه با مدل رگرسیون اول حدود 3 درصد بهتر است.

نتیجه

نتایج به‌دست‌آمده ارزش استفاده هر دو مدل یادگیری ماشین را نشان داد. مدل درخت تصمیم عملکرد کمی بهتر از مدل رگرسیون لجستیک نشان داد، اما قطعاً هر دو مدل نشان داده‌اند که می‌توانند در حل مسائل طبقه‌بندی بسیار موفق باشند.

نتایج پیش‌بینی مطمئناً می‌تواند با رویکرد متفاوتی برای تحلیل داده‌ها تغییر کند. ما شما را تشویق می کنیم که از ابتدا تجزیه و تحلیل خود را انجام دهید تا وابستگی های جدیدی بین متغیرها پیدا کنید و آنها را به صورت گرافیکی نمایش دهید. پس از آن، یک مجموعه آموزشی جدید و یک مجموعه تست جدید ایجاد کنید. اجازه دهید مجموعه آموزشی دارای حجم بیشتری از داده نسبت به مقاله باشد. مدل خود را متناسب و ارزیابی کنید. در پایان، اگر عملکرد بهتری دریافت کردید، در نظر خود را تحسین کنید.

ما برای شما کار موفق و جادویی آرزو می کنیم!

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-22 10:52:04

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید