- دوشنبه ۳۰ بهمن ۱۴۰۲
مقایسه تکنیکهای یادگیری ماشینی در پیشبینی ریزش مشتری
یادگیری ماشینی در بازار
مقایسه تکنیکهای یادگیری ماشینی در پیشبینی ریزش مشتری
آزمایشات ما نشان داد که مدل SVM-rbf نسبت به سایر مدلها عملکرد بهتری داشت و MLPو Boosted DT با فاصله کمی در رتبههای بعدی قرار گرفتند. همچنین پیشپردازش دادهها و مهندسی ویژگیها نقش حیاتی در بهبود عملکرد مدلها بازی میکنند.
دپارتمان فناوری اطلاعات و ارتباطات
چکیده
این مقاله یک مطالعه تطبیقی درباره پرکاربردترین روشهای یادگیری ماشین بهکاررفته در مسأله چالشبرانگیز پیشبینی ریزش مشتری در صنعت مخابرات است. در فاز اول آزمایشها، همه مدلها با استفاده از روش اعتبارسنجی متقابل بر روی یک دیتاست عمومی اعمال و ارزیابی شدهاند. به منظور تعیین بهترین ترکیب هایپرپارامترها، از روش جستجوی شبکهها برای هر مدل و استفاده از یک طیف گسترده از پارامترها استفاده شد.
در فاز دوم به بهبود کارایی مدلها با استفاده از روش بوستینگ پرداخته شده است. در این مرحله، مدلها پس از تقویت شدن، بر روی دیتاست اعمال شدند و با استفاده از روش اعتبارسنجی متقابل مورد ارزیابی قرار گرفتند. نتایج ما برتری SVM-rbf را نسبت به دیگر مدلها نشان میدهد. MLP وBoosted DT با اختلاف کمی در جایگاه دوم و سوم قرار دارند.
یادگیری ماشینی و ریزش مشتریان
پدیده ریزش مشتری، به عنوان یکی از چالشهای اساسی کسبوکارهایی که بازارِ رقابتی دارند مطرح است. امروزه توانایی پیشبینی رفتار مشتری با استفاده از تکنیکهای پیشرفته تحلیل داده، به دلیل اهمیت آن در چالش پیش روی کسبوکارها مورد توجه واقع شده است. یادگیری ماشین یکی از زیرشاخههای هوش مصنوعی است که بهطور گسترده در حل مسئله ریزش مشتری به کار گرفته میشود.
روش ما در این تحقیق شامل شش مرحله مهم است که عبارتاند از پیشپردازش دادهها، مهندسی ویژگیها (engineering feature)، پیادهسازی مدل، تقویت (Boost) مدل، ارزیابی با cross- validation و مقایسه نتایج. هدف اصلی این تحقیق ارائه یک ارزیابی جامع از اثربخشی الگوریتمهای یادگیری ماشین در پیشبینی ریزش مشتری است که باعث میشود کسبوکارها قادر به توسعه استراتژیهای بهتری برای حفظ مشتریان خود شوند. این مطالعه در تصمیمگیریهای مبتنی بر داده به شرکتها کمک میکند و وفاداری مشتریان و درآمد کسبوکارها را افزایش میدهد. انتظار میرود که از نتایج این تحقیق برای بررسی کارایی تکنیکهای یادگیری ماشین در پیشبینی ریزش مشتری، بینشهای ارزشمندی فراهم شود.
جمعآوری داده
دیتاست مورد استفاده، یک دیتاست مخابراتی ایرانی است که بهطور گسترده در تحقیقات مختلف مورد استفاده قرار گرفته و برای تحقیقات عمومی در دسترس است. استفاده از این دیتاست برای انجام تحلیلهای پیشبینی مانند predictive prescription یا predictive decision-making مناسب است. این دیتاست در چندین مقاله تحقیقاتی مورد استفاده قرار گرفته است که از جمله آنها میتوان به «تصمیمگیری مبتنی بر هوش مصنوعی: شبکههای عصبی مصنوعی نوآورانه در صنعت مخابرات» نوشته جعفریمنش و همکاران، «پیشبینی مبتنی بر هوش مصنوعی در صنعت مخابرات با استفاده از تکنیکهای دادهکاوی» نوشته کرامتی و همکاران و «تحلیل مبتنی بر هوش مصنوعی برای یک اپراتور تلفن همراه ایرانی» نوشته کرامتی و اردبیلی اشاره کرد.
دیتاست استفاده شده در این پژوهش شامل ویژگیهای مختلفی است که میتواند برای پیشبینی مشتری، از جمله جمعیتشناسی مشتری، الگوهای استفاده و ارزش مشتری مورد استفاده قرار گیرد. جهت دریافت اطلاعات بیشتر درباره هر یک از این ویژگیها، میتوانید به مقالات مذکور مراجعه نمایید.
پیشپردازش داده
پیشپردازش داده یکی از مراحل اساسی در یادگیری ماشینی است که شامل بهبود کیفیت دادهها، حذف دادههای نامناسب و تبدیل دادهها به قالب قابل استفاده برای الگوریتمهای یادگیری ماشینی میشود. این مرحله میتواند در بهبود دقت مدلها، کاهش زمان آموزش و افزایش کارایی سیستمهای یادگیری ماشینی بسیار مؤثر باشد.
بعد از لود کردن دیتاست، با استفاده از دستور زیر تعداد دادههای ناموجود را بررسی میکنیم.
data.isnull().sum()
در صورت وجود مقادیر NaN آنها را با دستور data.dropna(inplace=True) حذف میکنیم. در ادامه با دستور زیر نوع هر کدام از ستونها را بررسی میکنیم و در صورت نیاز آنها را به قالب قابل استفاده برای الگوریتمها تبدیل میکنیم.
data.info()
در نهایت با استفاده از دستور زیر مقادیر تکراری را حذف میکنیم.
data.drop_duplicates(inplace=True)
مهندسی ویژگیها
در یادگیری ماشینی، مهندسی ویژگیها یا Feature Engineering یکی از مهمترین مراحل مورد نیاز برای آمادهسازی دادهها قبل از ورود به مدل است. در این فرایند، ویژگیهای مهم و مفید از دادهها استخراج و تبدیل میشوند. استخراج ویژگیهای مناسب و بهتر از دادهها میتواند نقش بسیار مهمی در بهبود عملکرد مدلهای یادگیری ماشینی ایفا کند. در واقع ویژگیهای مناسب میتوانند به مدلها کمک کنند تا به صورت دقیقتر، سریعتر و با کارآیی بیشتری پاسخگویی داشته باشند.
یادگیری ماشینی نیز همانند سایر روشهای تحلیل داده، از تحلیل دادههای اکتشافی (EDA) برای درک بهتر دادهها و پیدا کردن روابط درون آنها استفاده میکند. با انجام EDA میتوانیم تصاویر و نمودارهای مختلفی از دادهها و ویژگیهای آنها و اطلاعات مهمی در خصوص توزیع دادهها به دست بیاوریم و تغییرات آنها یا هر نوع الگو در دادهها را کشف کنیم.
برای فهم بهتر از برخی از featureها میتوانیم از کتابخانه seaborn برای کشیدن نمودار آنها استفاده کنیم.
sns.countplot(x="[feature name]", data=data, hue="Churn")
همبستگی یا Correlation در مهندسی ویژگی به معنای رابطه بین دو ویژگی مختلف است. این رابطه میتواند مثبت، منفی یا صفر باشد. زمانی که ویژگیهای مختلف در یک سیستم با یکدیگر مرتبط هستند، مهندسان میتوانند با به کار بردن اطلاعاتی که از رابطه بین آنها به دست میآید، بهترین تصمیمات را برای بهینهسازی سیستم بگیرند. در قدم بعد با رسم یک هیتمپ (heatmap) همبستگی متغیرها را با یکدیگر بررسی میکنیم.
full_corr_matrix = data.corr().abs() sns.heatmap(full_corr_matrix, annot=True, cmap='coolwarm')
plt.show()
در این هیتمپ رنگ گرمتر نشاندهنده همبستگی بیشتر بین دو متغیر است. در ادامه برای به دست آوردن اهمیت ویژگیها، همبستگی آنها را با خود targetچک میکنیم.
data.drop('Churn', axis=1).corrwith(data.Churn).abs().plot(kind='barh')
نتیجه این کد یک نمودار میلهای است و هرچه نمودار متغیری بلندتر باشد، نشاندهنده تأثیر بیشتر آن متغیر در نتیجه طبقهبندی است.
یکی دیگر از روشهای پیدا کردن ویژگیهای مهم PPScore است که برای ارزیابی قدرت پیشبینی یک ویژگی در یک دیتاست به کار میرود. این روش به شما امکان میدهد بهسرعت ویژگیهای مهم و مؤثر در دیتاست خود را شناسایی کنید. با انتخاب ویژگیهای پیشبینیکننده میتوانید مدل خود را ساده کنید و ریسک overfittingرا کاهش دهید. از این رو PPScore یک ابزار مفید در انتخاب ویژگی در مدلهای یادگیری ماشین شناخته میشود. برای محاسبه PPScore ابتدا آن را import میکنیم و مقادیر آن را در قالب یک heatmap نشان میدهیم.
import ppscore as pps sns.set(rc={'figure.figsize':(10,8)}) matrix_df = pps.matrix(data).pivot(columns='x', index='y',
values='ppscore') sns.heatmap(matrix_df, annot=True)
در نمودار Heatmap ارائهشده میتوان امتیاز PPScore را در بازه صفر تا یک مشاهده کرد. امتیاز صفر به این معنی است که ویژگی هیچ قدرتی در پیشبینی هدف ندارد، در حالی که امتیاز یک به این معنی است که ویژگی توانایی کامل در پیشبینی هدف را داراست. با توجه به اطلاعات بهدستآمده از PPScore و هیتمپ همبستگی، میتوانیم متغیرهای اضافی را با دستور زیر حذف کنیم.
data.drop(["[feature name]"], axis=1, inplace=True)
بعد از حذف متغیرهای اضافه و پیشپردازش داده، دیتا را آماده پردازش توسط مدل میکنیم. ابتدا تارگت را از دیتا جدا میکنیم.
X = data.drop("Churn", axis=1)
y = data["Churn"]
و در ادامه بعد از وارد کردن کتابخانه scale آن را به X اعمال میکنیم.
from sklearn.preprocessing import scale X = scale(X)
یکی از دلایل اهمیت هممقیاس کردن دادهها در حوزه علم داده این است که تقریباً تمام الگوریتمهای موجود در این زمینه بر اساس محاسبات ریاضی شکل گرفتهاند. در نتیجه عدم وجود این شرط میتواند باعث اشتباه در محاسبات و عملکرد الگوریتمها و همچنین پیشبینیهای مورد نظر شود. به همین دلیل هممقیاس کردن دادهها برای دقت و صحت بالای محاسبات و پیشبینیهای دقیق در حوزه علم داده ضروری است.
در نهایت با تقسیم X و y به دو بخش train و test قدم آخر در آمادهسازی دیتاست را برمیداریم.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size =
0.2, stratify = y)
پیاده سازی مدلها
در این بخش مدلها بعد از پیدا کردن بهترین هایپرپارامترها پیادهسازی میشوند. برای این کار از GridSearchCV استفاده میشود. این الگوریتم برای یافتن بهترین مقدار برای هر هایپرپارامتر، تمامی ترکیبهای ممکن از هایپرپارامترهای مورد نظر را امتحان کرده و بهترین مقادیر آنها را برای استفاده در مدل مشخص میکند. یعنی با اجرای مدل برای هر ترکیبی از هایپرپارامترها، بهترین ترکیبی را که دقت بیشتری در پیشبینی دارد انتخاب میکند. GridSearchCV یک روش جستجوی سراسری و کامل است که نیاز به تعریف یک مجموعه پارامتر دارد و برای جستجوی بهترین دسته از پارامترها (مانند هسته در SVM یا تعداد دوره در یک رگرسیون لجستیکی) استفاده میشود.
الف. شبکه عصبی هوش مصنوعی لایه چندگانه(MLP)
شبکه عصبی هوش مصنوعی لایه چندگانه (Multi-Layer Artificial Neural Networks) یا MLP یک الگوریتم یادگیری عمیق است که در فراگیری الگوهای پیچیده در دادهها نقش بسزایی ایفا میکند. این شبکه با استفاده از لایههای مختلف نورونها در تلاش است تا به فراگیری این الگوها کمک کند. هر لایه از این شبکه، شامل تعدادی از نورونهاست که هر یک با استفاده از ورودیهای خود سعی در شناسایی خروجی مورد نظر دارد. سپس خروجی هر لایه به لایه بعدی ارسال میشود تا درنهایت با تولید خروجی نهایی توسط لایه آخر، پردازش به پایان برسد. MLP به عنوان یکی از الگوریتمهای محبوب برای پیشبینی و تحلیل دادههای مختلف از جمله تصویر، گفتار و موسیقی به کار گرفته میشود.
param_grid = {
'hidden_layer_sizes': [(50,), (100,), (50,50), (100,50),
(100,100)],
'activation': ['logistic', 'tanh', 'relu'],
'alpha': [0.0001, 0.001, 0.01, 0.1],
'learning_rate_init': [0.001, 0.01, 0.1],
}
# Create an MLP classifier object
mlp = MLPClassifier(max_iter=1000) # Create RandomizedSearchCV instance random_search = RandomizedSearchCV(mlp, param_distributions =
param_grid, n_iter=10, cv=5, n_jobs=-)1
random_search.fit(X_train, y_train)
# Create a model from the best hyperparameters mlp = random_search.best_estimator_
مزیت RandomizedSearchCV این است که همه ترکیبات موجود را مورد امتحان قرار نمیدهد، بلکه به صورت تصادفی نمونههایی از مقادیر انتخاب میکند. استفاده از RandomizedSearchCV در مواقعی که تعداد هایپرپارامترها زیاد است یا زمانی که به علت بزرگی دیتاست آموزش مدل زمانبر است بهتر از GridSearchCV است.
ب.Decision Trees (DT)
در این الگوریتم از یک دیتاست برای ایجاد یک مدل استفاده میشود و سپس با توجه به خصوصیات مختلف هر نمونه از داده، این درخت برای تصمیمگیری مورد استفاده قرار میگیرد. تصمیمگیری در این الگوریتم بر اساس سؤالهایی است که از دادهها پرسیده میشود و نتیجههای آن به صورت یک درخت تصمیمگیری در نظر گرفته میشوند. در نهایت این درخت به صورت یک الگوریتم برای پیشبینی و تصمیمگیری قابل استفاده است.
Param_grid = {
‘max_depth’: [2, 5, 10, 20, 30, 50],
‘min_samples_split’: [2, 5, 10],
‘min_samples_leaf’: [1, 2, 4],
}
# Create a Decision Tree classifier object
dt = DecisionTreeClassifier()
# Create a GridSearchCV object and fit it to the data
grid_search = GridSearchCV(dt, param_grid=param_grid, cv=5, n_jobs=-
)1
grid_search.fit(X_train, y_train)
# Create a model from the best hyperparameters
ج. Support Vector Machines (SVM)
dt = grid_search.best_estimator_
یک الگوریتم یادگیری ماشینی است که برای دستهبندی دادهها و رگرسیون استفاده میشود. در SVM دادهها بهعنوان نقاط در فضای چندبعدی در نظر گرفته میشوند و الگوریتم سعی میکند یک خط یا هایپرپلان به گونهای انتخاب کند که موجب جداسازی دو کلاس مختلف دادهها شود. دادههایی که نزدیک به خط یا هایپرپلان قرار دارند، به عنوان بردارهای پشتیبان مشخص میشوند.
هدف اصلی SVM بهینهسازی یک حاشیه (margin) بین دو دسته داده است. وقتی یک نقطه جدید به الگوریتم داده شود، الگوریتم با استفاده از خط یا هایپرپلان شناسایی میکند که نقطه به کدام دسته تعلق دارد. از آنجایی که SVM بهینهسازی حاشیه را در نظر میگیرد، برای دادههای جدید بهشدت پایدار است و نسبت به دادههای نویزی و اشتباهات آموزشی کمتر حساس است.
param_grid = {
'C': [0.1, 1, 10, 100],
'kernel': ['linear', 'poly', 'rbf'],
'degree': [2, 3, 4],
'gamma': [0.01, 0.1, 1, 'scale', 'auto']}
# create an SVM object
svm = SVC()
# Create a GridSearchCV object and fit it to the data
grid_search = GridSearchCV(svm, param_grid, cv=5, n_jobs=-)1
# fit the GridSearchCV object to the data
grid_search.fit(X_train, y_train)
# Create a model from the best hyperparameters
د. Gaussian Naïve Bayes (NB)
svm = grid_search.best_estimator_
این یک الگوریتم یادگیری ماشین است که برای کلاسبندی دادهها استفاده میشود. در این الگوریتم احتمال اینکه یک نمونه در یک کلاس خاص قرار بگیرد بر اساس ویژگیهای آن نمونه محاسبه میشود. در Gaussian Naive Bayes فرض میشود که توزیع ویژگیهای هر کلاس گاوسی است، به این معنی که ویژگیها با توزیع نرمال (گاوسی) در هر کلاس توزیع شدهاند. احتمال اینکه یک نمونه در هر کلاس قرار داشته باشد، با مقایسه احتمال هر کلاس با دیگری و پیدا کردن بیشترین احتمال به دست میآید. الگوریتم Gaussian Naive Bayesبرا ی دستهبندی دادههای پیوسته و عددی مناسب است.
# Implement Naive Bayes (NB)
nb = GaussianNB() nb.fit(X_train, y_train)
دلیل اصلی برای اینکه نمیتوان برای Gaussian Naive Bayes بهینهسازی هایپرپارامتر انجام داد، این است که این الگوریتم به دلیل فرض شدن توزیع گاوسی برای هر ویژگی، تنها یک هایپرپارامتر را میتواند بهینهسازی کند و آن نیز واریانس برای هر توزیع گاوسی است. به عبارت دیگر، با توجه به اینکه فرض گاوسی در این الگوریتم بهطور ثابت حفظ میشود، بهینهسازی هایپرپارامترهای مختلف برای smoothing و غیره امکانپذیر نیست.
از آنجایی که توزیع گاوسی برای هر ویژگی در این الگوریتم ثابت است، تنظیم هایپرپارامترهایی مانند اندازه قدم، عرض باند کرنل و غیره که در الگوریتمهای دیگر بهینهسازی میشوند، در این الگوریتم امکانپذیر نیست. بنابراین برای بهبود عملکرد Gaussian Naive Bayes میتوانیم از روشهای دیگری مانند انتخاب ویژگی، افزایش دادههای آموزشی یا استفاده از ترکیبی از چند الگوریتم مانند روشهای آنسامبل استفاده کنیم.
ه. Logistic Regression (LR)
الگوریتمی برای دستهبندی است که از آن به منظور پیشبینی کلاس استفاده میشود. این الگوریتم با استفاده از تابع لجستیک، ورودی را به یکی از دو کلاس یا دسته مختلف تقسیم میکند. تابع لجستیک همانند توزیع نرمال دارای یک نقطه تعادل است که به آن نقطه تعادل فراوانی (equilibrium point) یا نقطه برش (cut-off point) نیز گفته میشود. با ایجاد یک حد مشخص، ورودیهایی که بزرگتر از آن هستند، در یک دسته یا کلاس (مثبت) و ورودیهایی که کوچکتر از آن هستند در دسته مقابل (منفی) قرار میگیرند.
param_grid = {
'C': [0.01, 0.1, 1.0, 10.0],
'penalty': ['l1', 'l2', 'elasticnet', 'none'],
'solver': ['newton-cg', 'lbfgs', 'liblinear', 'saga']}
# Create LR model
lr = LogisticRegression()
# Create a GridSearchCV object and fit it to the data
grid_search = GridSearchCV(lr, param_grid, cv=5, n_jobs=-)1
grid_search.fit(X_train, y_train)
# Create a model from the best hyperparameters
lr = grid_search.best_estimator_
تقویت مدلها (Boosting)
Boosting یکی از روشهای یادگیری نظارتشده در یادگیری ماشین است که به منظور افزایش دقت مدلهای پیشبینی موجود استفاده میشود. Boosting این طور کار میکند که به صورت مجزا چندین مدل ضعیف (weak learner) ایجاد میکند و در هر مرحله با تمرکز بر دادههای تقویتکننده (boosting) تلاش میکند تا این مدلهای ضعیف را به یکدیگر اضافه کرده و به یک مدل قویتر (strong learner) تبدیل کند.
Adaboost یک الگوریتم یادگیری ماشین است که در این الگوریتم چندین مدل ضعیف یا مدلهای دارای توان پایین در کنار هم قرار میگیرند و با ترکیب آنها یک مدل قویتر ایجاد میشود. در هر مرحله از آموزش Adaboostوزنهای هر نمونه داده را بر اساس دقت مدل قبلی تنظیم میکند، بهطوری که دادههایی که توسط مدل قبلی اشتباه تشخیص داده شدهاند، وزن بیشتری در مرحله بعدی خواهند داشت. سپس مدل بعدی با در نظر گرفتن این وزنها آموزش داده میشود و این فرآیند تا زمانی که دقت کلی بیشینه شود یا تعداد مدلهای تعریف شده به پایان برسد ادامه مییابد.
ابتدا کتابخانه لازم را وارد میکنیم.
from sklearn.ensemble import AdaBoostClassifier
الف. شبکه عصبی هوش مصنوعی لایه چندگانه(MLP)
به طور کلی در Adaboost به دلیل قابلیت پردازش درختی از مدلهای سادهتر مثل درخت تصمیم، بهعنوان روشی برای تقویت بینایی ماشین استفاده میشود. MLP یا Multi-Layer Perceptron برخلاف درخت تصمیم یک مدل پیچیدهتر در حوزه شبکههای عصبی عمیق است و نیاز به آموزش مدلهای پیچیده با الگوریتمهای مخصوص خود دارد. به همین دلیل MLP بهصورت مستقیم با Adaboost قابل تقویت نیست، بلکه روشهای دیگری مانند Gradient Boosting میتوانند برای ترکیب MLPها با مدلهای دیگر استفاده شوند.
ب.Decision Trees (DT)
param_grid = {
'n_estimators': [50, 100, 200, 250],
'learning_rate': [0.1, 0.5, 1.0, 1.5],
'algorithm' : ['SAMME','SAMME.R']
}
# Create an AdaBoost classifier object with DT as base estimator
ada_clf = AdaBoostClassifier(base_estimator=dt)
# Create a GridSearchCV object and fit it to the data
grid_search = GridSearchCV(dt, param_grid=param_grid, cv=5, n_jobs=-
)1
grid_search.fit(X_train, y_train)
# Create a model from the best hyperparameters
dt_boost = grid_search.best_estimator_
ج. Support Vector Machines (SVM)
param_grid = {
'n_estimators': [50, 100, 200, 250],
'learning_rate': [0.1, 0.5, 1.0, 1.5],
'algorithm' : ['SAMME','SAMME.R']
}
# Create an AdaBoost classifier object with SVM as base estimator ada_clf = AdaBoostClassifier(base_estimator=svm) # Create a GridSearchCV object and fit it to the data
grid_search = GridSearchCV(dt, param_grid=param_grid, cv=5, n_jobs=-
)1 grid_search.fit(X_train, y_train)
# Create a model from the best hyperparameters
svm_boost = grid_search.best_estimator_
د. Gaussian Naïve Bayes (NB)
Gaussian Naive Bayes یک الگوریتم طبقهبندی مبتنی بر بیز است و فرض آن کلیت دادههاست. این فرض میتواند منجر به دقت نامطلوب و مشکلات دیگر در الگوریتم شود. بنابراین به علت وجود این فرض، نمیتوان آن را بهراحتی با استفاده از Adaboost تقویت کرد.
ه. Logistic Regression (LR)
مدل Logistic Regression بیشتر برای مسائل دستهبندی دودویی (binary classification) استفاده میشود و در این حالت معمولاً به صورت مستقیم با الگوریتم Adaboost قابل تقویت نیست. زیرا Adaboost برای تقویت الگوریتمهای دستهبندی به دنبال الگوریتمی با دقت کم و دارای کمپلکسیتهای متفاوت، مانند Tree Decision است. به عنوان مثال در Adaboost با استفاده از Decision Trees در هر مرحله یکDecision Tree ساخته میشود که بهترین دستهبندی را برای دادههای سخت و گیجکننده (misclassified) مرحله قبل پیدا میکند و سپس وزن دادههای سخت و گیجکننده در مرحله بعدی تقویت میشود.
اما Logistic Regression بهصورت مستقیم با استفاده از اعمال وزنهای متفاوت برای ویژگیها دستهبندی را انجام میدهد و در عین حال دارای پیچیدگی بالایی نیست. بنابراین زمانی که الگوریتم Adaboost در تقویت Logistic Regression استفاده میشود، یک الگوریتم پیچیدهتر مانند SVM یا Decision Trees به عنوان Base learner باید استفاده شود تا بهطور کلی عملکرد بهتری داشته باشد.
اعتبارسنجی متقابل (Cross-validation)
اعتبارسنجی متقابل یک روش ارزیابی عملکرد مدلهای یادگیری ماشین است که در آن دادهها به چند بخش تقسیم میشوند. سپس مدل با استفاده از یک بخش از دادهها به عنوان داده آموزش و باقیمانده به عنوان داده ارزیابی، آموزش داده میشود. سپس مدل با استفاده از داده تست، ارزیابی شده و عملکرد آن محاسبه میشود. این فرآیند به تعداد بخشهای مختلف تکرار میشود تا عملکرد مدل با استفاده از تمامی دادهها به دست آید. از این روش برای تشخیص اعمال بیش از حد یادگیری به صورت اطمینانبخش استفاده میشود.
F1-score یکی از روشهای معمول برای ارزیابی عملکرد الگوریتمهای یادگیری ماشین است که بر اساس دو معیار دقت و بازخوانی (precision و recall) محاسبه میشود.
𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 ⋅ 𝑅𝑒𝑐𝑎𝑙𝑙
𝐹1 = 2 ∙ 𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 + 𝑅𝑒𝑐𝑎𝑙𝑙
F1-score چندین مزیت دارد. زمانی که با دیتاست نامتوازن نظیر این دیتاست سر و کار داریم، این امتیاز بهتر از دقت (accuracy) است، زیرا به هر دو دقت (precision) و بازخوانی (recall) توجه دارد. همچنین F1-score به تعداد موارد منفی حساسیت کمتری دارد و در نتیجه در این سناریوها قابل اطمینانتر است. به علاوه، F1-score یک معیار تکی است که برای ارزیابی مدلهای طبقهبندی محبوب است و بهراحتی قابل فهم و تفسیر است.
اما F1-score دارای برخی محدودیتها هم هست. این معیار True Negativeها را در نظر نمیگیرد که در مواردی که نمونههای منفی بیشتر اهمیت دارند، ضروری است. همچنین فرض میکند که دقت و بازخوانی به یک اندازه مهم هستند که همیشه صحیح نیست. به علاوه، امتیاز F1 در مسائل چندکلاسی باید برای هر کلاس به صورت جداگانه محاسبه شود که ممکن است زمانبر باشد.
در Cross Validation نیز این معیار برای ارزیابی عملکرد مدلهای یادگیری اعمال میشود. برای محاسبه F1-score مدلها از دستور cross_val_score استفاده میکنیم که به عنوان مثال برای مدل MLP نوشته شده است:
# Evaluate MLP using cross-validation
mlp_scores = cross_val_score(mlp, X, y, cv=10, scoring='f1')
print("Multi-Layer ANN (MLP) F1 Score, Mean: %0.4f, Max: %0.4f"
% ( mlp_scores.mean(), mlp_scores.max()))
Cross-validation یک روش ارزیابی عملکرد مدل است که با استفاده از دادههای موجود آنها را به چند بخش تقسیم میکند و برای هر بخش، مدل را با استفاده از دادههای دیگر آموزش میدهد و سپس عملکرد مدل را بر اساس دادههای تست بخش مربوطه ارزیابی میکند. این روش یک روش ارزیابی مدل مؤثر است زیرا این اجازه را میدهد که میزان دقت و قابلیت اعتماد مدل را با دادههای مختلف ارزیابی کنیم.
نتیجهگیری
در این مطالعه هدف ما ارزیابی دقت روشهای یادگیری ماشین در پیشبینی ریزش مشتریان در صنعت مخابرات بود که چالش قابل توجهی برای شرکتهایی است که در بازارهای با رقابت شدید فعالیت میکنند. آزمایشات ما نشان داد که مدل SVM-rbf نسبت به سایر مدلها عملکرد بهتری داشت و MLPو Boosted DT با فاصله کمی در رتبههای بعدی قرار گرفتند. همچنین، نشان داده شد که پیشپردازش دادهها و مهندسی ویژگیها نقش حیاتی در بهبود عملکرد مدلها بازی میکنند.
با این حال، هر مدل نقاط قوت و ضعف خود را داشت که در بخشهای قبلی بهطور مفصل در این باره بحث شد.
F1-Score
|
Not-Boosted |
Boosted |
Multi-Layer Artificial Neural Networks (MLP) |
87.86 |
- |
Decision Trees (DT) |
81.51 |
87.32 |
Support Vector Machines (SVM) |
88.01 |
76.55 |
Gaussian Naïve Bayes (NB) |
55.51 |
- |
Logistic Regression (LR) |
58.41 |
- |
جدول یک - مقایسه نتایج نهایی
یافتههای ما اهمیت قابل توجهی دارد، زیرا به کسبوکارها دیدگاههای ارزشمندی درباره پتانسیل روشهای یادگیری ماشین در پیشبینی ریزش مشتریان ارائه میدهد. این میتواند به شرکتها در توسعه استراتژیهای بهتر برای حفظ مشتریان و افزایش درآمد کمک کند.
توصیه میشود که تحقیقات آتی بر رفع محدودیتهای مطالعه ما تمرکز کنند، نظیر استفاده از یک دیتاست واحد و تعداد محدود الگوریتمها. یکی از گزینهها برای پژوهشهای آینده، بررسی تأثیر استفاده از اطلاعات زمینهای همچون دادههای دموگرافیکی یا الگوهای رفتاری مشتریان در مدلهای یادگیری ماشین برای پیشبینی ریزش مشتری است. این اقدام ممکن است دقت مدلها را بهبود بخشد و به شرکتها راهکارهای هدفمندتری برای حفظ مشتریانشان پیشنهاد کند.
یکی دیگر از حوزههایی که در تحقیقات آینده میتوان به آن پرداخت، کاربرد تکنیکهای یادگیری عمیق مانند شبکههای عصبی convolutional و شبکههای عصبی recurrent برای پیشبینی ریزش مشتریان است. این تکنیکها در حوزههای دیگر یادگیری ماشین به موفقیت رسیدهاند و میتوانند دقت مدلهای پیشبینی چرخش مشتری را بهبود بخشند.
به علاوه میتوان از دیگر تکنیکهای ensemble مانند bagging یا stacking برای بهبود عملکرد مدلها استفاده کرد. همچنین تأثیر معیارهای ارزیابی مختلف نظیر MSE ،AUC ،Accuracy و غیره بر عملکرد مدلها نیز میتواند مورد بررسی قرار گیرد.
در نهایت، استفاده از یادگیری ماشین برای پیشبینی ریزش مشتریان میتواند به صنایع دیگری در خارج از بخش مخابرات تعمیم یابد. این شامل صنایع مالی، بهداشت و درمان و تجارت الکترونیک است که نگهداری مشتریان در آنها همچنان یک نگرانی جدی است.
نویسندگان
عارف برهان (rf.borhani@gmail.com)
احسان رزاقیزاده (ehsanrazaghizade22@gmail.com)
منابع
- Radosavljevik, D., van der Putten, P., & Larsen, K. K. (2010). The impact of experimental setup in prepaid churn prediction for mobile telecommunications: What to predict, for whom and does the customer experience matter?. Trans. Mach. Learn. Data Min., 3(2), 80-99.
- Gürsoy, U. Ş. (2010). Customer churn analysis in telecommunication sector. İstanbul Üniversitesi İşletme Fakültesi Dergisi, 39(1), 35-49.
- Tsiptsis, K. K., & Chorianopoulos, A. (2011). Data mining techniques in CRM: inside customer segmentation. John Wiley & Sons.
- Quinlan, J. R. (2014). C4. 5: programs for machine learning. Elsevier.
- Freund, Y., & Schapire, R. E. (1995). A desicion-theoretic generalization of on-line learning and an application to boosting. In Computational Learning Theory: Second European Conference, EuroCOLT'95 Barcelona, Spain, March 13–15, 1995 Proceedings 2 (pp. 23-37). Springer Berlin Heidelberg.
- Schapire, R. E., & Freund, Y. (2013). Boosting: Foundations and algorithms. Kybernetes, 42(1), 164-.661
- Schapire, R. E. (1999, July). A brief introduction to boosting. In Ijcai (Vol. 99, pp. 1401-1406)
- Jafari-Marandi, R., Denton, J., Idris, A., Smith, B. K., & Keramati, A. (2020). Optimum profit-driven churn decision making: innovative artificial neural networks in telecom industry. Neural Computing and Applications, 32, 1492914962.
Keramati, A., Jafari-Marandi, R., Aliannejadi, M., Ahmadian, I., Mozaffari, M., & Abbasi, U. (2014). Improved churn prediction in telecommunication industry using data mining techniques. Applied Soft Computing, 24, 9941012.
- Keramati, A., & Ardabili, S. M. (2011). Churn analysis for an Iranian mobile operator. Telecommunications Policy, 35(4), 344-356.
- Qureshi, S. A., Rehman, A. S., Qamar, A. M., Kamal, A., & Rehman, A. (2013, September). Telecommunication subscribers' churn prediction model using machine learning. In Eighth international conference on digital information management (ICDIM 2013) (pp. 131-136). IEEE.
- Kim, K., Jun, C. H., & Lee, J. (2014). Improved churn prediction in telecommunication industry by analyzing a large network. Expert Systems with Applications, 41(15), 6575-.4856
- Kirui, C., Hong, L., Cheruiyot, W., & Kirui, H. (2013). Predicting customer churn in mobile telephony industry using probabilistic classifiers in data mining. International Journal of Computer Science Issues (IJCSI), 10(2 Part 1), .561
در دنیای کسبوکار امروز، تحصیلات دانشگاهی برای حفظ ارزش شما بهعنوان نیروی کار بااستعداد و کارآمد کافی نیستند. برای اینکه مزیت رقابتی شخصی خود را حفظ کنید، باید بر آموزش مستمر و مادامالعمر خود سرمایهگذاری کنید. خانواده بزرگ مجتمع فنی تهران هرساله به هزاران نفر کمک میکند تا در مسیر شغلی خود پیشرفت کنند.
اگر شاغل هستید و وقت ندارید در دورههای آموزشی حضوری شرکت کنید، مجتمع فنی تهران گزینههایی عالی برای آموزش مجازی، آنلاین، آفلاین و ترکیبی ارائه میدهد. با شرکت در دورههای کوتاهمدت مجتمع فنی تهران و دریافت مدارک معتبر و بینالمللی میتوانید با اعتماد به نفس مسیر ترقی را طی کنید و در سازمان خود به مهرهای ارزشمند تبدیل شوید.