Nghiên cứu này phát triên một mô hình dự đoán tý lệ rời bỏ churn sử dụng kỹ thuật hoc tập tập hợp ensemble learning với 15 thuộc tính liên quan đến khách hàng.. Bộ dữ liệu chứa thông tin
Trang 1DE TÀI NHẬP MÔN TRÍ TUỆ NHÂN TẠO
NHÓM 7 Build a Churn Prediction Model using Esemble Learning
Developed by:
Nhom 7 — team members:
‹ Phạm Tiến Phúc Hưng
° _ Nguyễn Quốc Bình
° Bun Minh Duc
° Nguyễn Thành Thắng
° Dương Đức Phúc
° _ Hoàng Trọng Quyền
¢ Tran Tiến Dat Lecturer: MSc Hé Nhut Minh
Trang 2TABLE OF CONTENTS
1.1 Overview of the project
1.2 Objectives and goals
1.3 Background and context
1.3.1 Learning Models
1.3.2 Dataset Description
2 TECHNOLOGY REQUIREMENTS
2.1 Hardware Cent
2.2 Software _
3.1 Model Selection _
3.2 EfficientNet-B0 Architecture Overview _ _
3.2.1 The EfficientNet-B0 network _ _
4.4 Transfer Learning Approach _
5.2 Data Preprocessing
5.3 Dataset Splitting
5.4 Model Training (Computing on Colab)
5.5 Push Data and Model to DBES - Databrick _
5.5.1 Cluster Creation _
5.5.2 Running Code and Tasks
5.6 Test and Evaluate Model _
5.6.1 Test Model _
5.6.2 Evaluate Model _
19
5.7 Deploy Model (via application)
Page 2/27
Trang 36 IMPLEMENTATION 19
6.3 Any challenges faced during implementation and how they were addressed .s sss000 22
7.1 DETAILS ABOUT THE TESTING PROCESS 22
7.3 Any issues encountered during testing and their resolution 24
8.1 Instructions on how to install and run the software 25
Page 3/27
Trang 4Nghiên cứu này phát triên một mô hình dự đoán tý lệ rời bỏ (churn) sử dụng kỹ thuật hoc tập tập hợp (ensemble learning) với 15 thuộc tính liên quan đến khách hàng Bộ dữ liệu chứa thông tin về định danh khách hàng, nhân khâu học, thông tin đăng ký, thói quen xem và các tương tác với dịch vụ hỗ trợ Bằng cách áp dụng các phương pháp học tập tiên tiến, chúng tôi đã cải thiện độ chính xác trong việc xác định khách hàng có nguy cơ rời bỏ Mô hình này giúp doanh nghiệp triển khai các chiến lược giữ chân hiệu qua, nang cao sy trung thanh va giam ty 1é roi bo | RODUCTION
Mô hình dự đoán tỷ lệ rời bo (churn prediction) được phát triển nhằm giải quyết thách thức trong việc giữ chân khách hàng, điều này rất quan trọng cho sự bên vững và phát triên của doanh nghiệp Tỷ lệ rời bỏ cao không chỉ ảnh hưởng đến doanh thu mà còn gây ra khó khăn trong việc phát triển thương hiệu Dự án này tập trung vào việc sử dụng các kỹ thuật học tập tập hợp (ensemble learning) đề phân tích hành vi khách
hàng dựa trên một bộ dữ liệu đa dạng, bao gồm các thuộc tính như thông tin cả nhân, thỏi quen sử dụng dịch vụ, và mức độ tương tác với dịch vụ hỗ trợ
kở ject a Building a Churn Predicti:
Dự án sử dụng thuật toán học máy đề nâng cao độ
chính xác trong việc xác định khách hàng có nguy cơ
rời bỏ Điều này giúp doanh nghiệp triển khai các
chiến lược giữ chân khách hàng hiệu quả hơn So với
các phương pháp truyền thống như khảo sát và phân
tích đữ liệu thủ công, mô hình này tiết kiệm thời gian,
tài nguyên và tăng cường khả năng phản ứng nhanh
với các dấu hiệu rời bỏ
Page 4/27
Trang 51.2 OBJECTIVES AND GOALS
Dự án này sử dụng phương pháp ensemble, bao gồm bagging và boosting, đề cải thiện độ chính xác trong việc dự đoán khách hàng có nguy cơ rời bỏ Mục tiêu là xác định xem khách hàng của công ty viễn thông nào đó có gia hạn đăng ký dịch vụ một năm hay không từ đó giúp công ty phát triển các chiến lược giữ
chân hiệu quả hơn
Customer Churn
Cy ProjectPro
1.3 DATASET DESCRIPTION
1.3.1 N6 Of: dung vP cQu trRe
Dataset "data_regression.csv" chita thong tin vé mét céng ty cung cap dịch vụ phát video trực tuyến, nơi họ muốn dự đoán liệu khách hàng có rời bỏ dịch vụ (churn) hay không Tập đữ liệu này bao gồm các thông tin liên quan đến hồ sơ của khách hàng và thói quen sử dụng dịch vụ
1.3.2 Da Oc diWm cXa dYulié O
Tập dữ liệu có 16 cột với các thong tin về nhân khâu học, hành vi sử đụng và trạng thái rời bỏ dịch vụ
của khách hàng Mối hàng đại diện cho một khách hàng cụ thể:
1 year: Năm ghi nhận đữ liệu
customer_id: Mã số nhận diện khách hàng (mỗi khách hàng có một mã duy nhất)
phone no: Số điện thoại của khách hàng
gender: Giới tính của khách hàng (Male/Female)
ch agc: Tuôi của khách hàng
no_of days_subseribed: Số ngày khách hàng đã đăng ký sử dụng dịch vụ
multi_screen: Khách hàng có sử dụng dịch vụ trên nhiều màn hình (Yes/No)
mail_subscribed: Khach hang có đăng ký nhận email thông bao (Yes/No)
9 wcekly miỉns _watched: Số phút trung bình khách hàng xem nội dung trong một tuần
10 minimum_daily_mins: S6 phut ít nhất mà khách hàng xem nội dung trong một ngày
11 maximum_daily_mins: Số phút tối đa mà khách hàng xem nội dung trong một ngày
Trang 612 weekly max_night mỉns: Số phút tối đa khách hàng xem nội dung vào ban đêm trong một tuần
13 videos_watched: Số video mà khách hàng đã xem
14 maximum_days_inactfive: Số ngày tối đa mà khách hàng không sử dụng dịch vụ
15 customer_support_calls: Số lần khách hàng gọi hỗ trợ khách hàng
16 churn: Biến mục tiêu, biểu thị liệu khách hàng có rời bỏ dịch vụ hay không (0 - Không rời bỏ, | -
Rời bỏ)
1.3.3 Da Oc diWm cXa d Yulié O
Tập dữ liệu bao gồm khoảng 2000 hPng (đại diện cho 2000 khách hàng) và 16 cột Các cột cung cấp thông tin chỉ tiết về hành vi và các yếu tô có thê ảnh hưởng đến quyết định rời bỏ của khách hàng, từ đó
hỗ trợ trong việc dự đoán và phân tích
1.3.4 Kích thước cXa dY liêO
Với 2000 hPng, tập dữ liệu cung cấp một lượng thông tin đủ lớn đề xây dựng và thử nghiệm các mô hình học máy nhằm dự đoán khả năng rời bỏ của khách hàng Mặc dù đây là một tập dữ liệu vừa phải về kích thước, nhưng nó bao gồm nhiều yếu tố quan trọng liên quan đến hành vi khách hàng, từ đó có thê phát
triển các mô hình dự đoán có độ chính xác cao
Figure 1: Data regression 1.4 TECH TASK
Trong quá trinh xay dung va phat trién m6 hinh dy doan, nhom em sit dung cac công cụ và thư viện từ Python dé hé tro phân tích đữ liệu, xử lý dữ liệu và xây đựng mô hình học máy Các thành phần kỹ thuật chính bao gồm:
e Ngon ngyY lập trình:
o Python: Ngôn ngữ lập trình chính được sử dụng do khả năng mạnh mẽ trong việc phân
tích đữ liệu và hỗ trợ cho các thư viện học máy
Trang 7e Các thư viện:
o_ NumPy: Thư viện xử lý mảng đa chiều, giúp thao tác nhanh chóng và hiệu quả với đữ liệu
số
o_ pandas: Công cụ chính đê xử lý và thao tác đữ liệu dạng bảng (DataFrame), hỗ trợ đọc,
lọc và biến đôi đữ liệu
o_ mafplotlib: Thư viện trực quan hóa đữ liệu, giúp tạo các biểu đồ và đồ thị đề hiểu rõ hơn
về xu hướng và phân phối dữ liệu
o_ sklearn (Scikif-learn): Thư viện học máy với các công cụ đê phân chia dữ liệu, xây dựng
và đánh giá mô hình, bao gồm các mô hình hồi quy và phân loại
o pickle: Duge str dung dé luu trữ và tải lại các mô hình đã huấn luyện hoặc các đối tượng Python khác
o_ imblearn: Bộ mở rộng của Scikit-learn dé xử lý dữ liệu mất cân bang (imbalanced data),
hỗ trợ các kỹ thuật như SMOTE (Synthetic Minority Over-sampling Technique) dé cai thiện hiệu suất của mô hình trong các trường hợp dữ liệu lệch
o lime: Céng cu giai thich két quả mô hình học máy( Local Interpretable Model-agnostic Explanations), giúp làm sáng tỏ các quyết định của mô hình, đặc biệt quan trọng khi xử lý các mô hình "hộp đen" như Random Forest hoặc Gradient Boosting )
1.5 LEARNING MODEL
1.5.1 Mô hình đơn lẻ
1.5.1.1 Mô hinh Logistic
Mô hình hồi quy logistic la mét kỹ thuật học máy được sử dụng dé dự đoán khả năng xảy
ra của một biến nhị phân (binary), tức là biến mục tiêu chỉ có hai trạng thái (ví dụ như
"có/không", "đúng/sai", "churn/không churn") Mặc dù có tên gọi là "hồi quy", mô hình này chủ yếu được sử dụng cho các bài toán phân loại
Mục tiêu chính của hồi quy logistic là dự đoán xác suất xảy ra của một biến phụ thuộc nhị phân Ví dụ, trong bài toán churn, mô hình dự đoán xác suât khách hàng có khả năng rời bỏ dịch
vụ (churn = 1) hay không (churn = 0)
Trang 8Logistics Model woo rv ots
def prepare_model_smote(df,class_col,cols_to_exclude):
#Synthetic Minority Oversampling Technique Generates new instances from existing minority cases that you supply as input
from sklearn.model_selection import train_test_split
from imblearn.over_sampling import SMOTE
cols=df.select_dtypes(include=np.number).columns.tolist()
X=df[cols
y=df[class_col]
global X_train, X_test, y_train, y_test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random state=0)
sm = SMOTE(random_state=0, sampling_strategy=1.0)
X_train, y_train = sm.fit_resample(X_train, y_train)
def run_model(X_train,X_test,y_train,y_test):
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_auc_score,classification_report
global logreg #Defines the Logistic model as a global model that can be used outside of this function
##Fitting the Logistic regression
logreg = LogisticRegression(random_state = 13)
logreg.fit(X_train, y_train)
##Predicting y values
global y_pred #Defines the Y_Pred as a global variable that can be used outside of this function
y_pred = logreg.predict(X_test)
logit_roc_auc = roc_auc_score(y_test, logreg.predict(X_test))
print(classification_report(y_test, y_pred))
print("The area under the curve is: %0.2f"%logit_roc_auc)
df = df.dropna() # cleaning up nuLl values
prepare_model_smote(df,class_col = ‘churn',cols_to_exclude=[ 'customer_id',*phone_no', 'year"])
# run the Logistics regression model and evaluate the results
* 'Tiên xử lí dữ liệu
df = df.dropna() # cLeaning up nuLL vaLues
« - Mục đích: Loại bỏ tây cả các hàng có giá trị thiêu (null) trong DataFrame df
e Ly do: Cac gia trị thiêu có thê gây ra lôi hoặc làm giảm hiệu suât của mô hình Việc loại bỏ chúng giúp
đảm bảo dữ liệu sạch và sẵn sàng cho việc huân luyên mô hình
* Hàm prepare model_smote
Import thư viện:
from sklearn.model_selection import train_test_split
import numpy as np
from imblearn.over_sampling import SMOTE
« train_test_split tir skleam.model_selection: Chia dit ligu thành tập huấn luyện và kiểm tra
« - SMOTE từ immblearn.over_sampling: Kỹ thuật tăng cường dữ liệu cho lớp thiêu sô
- Chọn các cột số:
cols=df.select_dtypes (inc1ude=np number) co1umns to1ist()
° Lấy danh sách từ các cột trong DataFrame
Trang 9- Tach bién độc lập (X)
X = X[X.columns.difference([class_co1]) ]
X = X[X.columns.difference(cols_to_exclude) ]
e Lay cac cét so, loại bỏ cột muc tiéu class_col va cac cot can loai tir cols_to_exclude (vi du:
‘customer_id', 'phone_no’, 'year')
- Tach bién muc tiéu (y)
y=df[class_co1l]
- Chia dữ liệu
global X_train, X test, y_train, y test
X train, X test, y_train, y_test = train test_split(X, y, test size=9.3, random_state=0)
« _ Chia dữ liệu thành 70% huấn luyện và 30% kiểm tra _
e Sử dụngrandom_state=0 đề đảm bảo khả năng tái lập kết quả
- Áp dụng SMOTE
sm = SMOTE(random_state=8, sampling _strategy=1.0)
X_train, y_train = sm.fit_resample(X_train, y_train)
« sampling strategy=1.0: Can bang ty 1é gitta cac lớp (cả lớp đa số và lớp thiêu số đều có số lượng bằng
« _ ft resample tạo ra các mầu nhân tạo cho lớp thiêu số đề cân băng dữ liệu
* Hàm run_ model
- Import thư viện
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_auc_score,classification_report
¢ LogisticRegression từ sklearn.linear model: Mô hình hồi quy logistic
e roc_auc_ score, classification_report tir sklearn.metrics: Cac chi so danh gia m6 hinh
- Dinh nghia M6 hinh Logistic Regression
logreg = LogisticRegression(random_state = 13)
logreg.fit(X train, y train)
¢ Khdi tao m6 hinh voi random _state=13 dé dam bao tinh tai lap
e Huan luyén m6 hinh trén tap dir ligu huan luyén (X_train, y_train)
- Dy doan va danh gia
y_pred = logreg.predict(X_test)
logit_roc_auc = roc_auc_score(y_test, logreg.predict(X_test) )
¢ Du doan gia trị y cho tập kiém tra (X_test)
e« - Tính toán điểm ROC AUC đề đánh gia kha năng phân biệt giữa các lớp
- In kết quả
Trang 10print(”The area under the curve is: %@.2f"%logit_roc_auc)
« In báo cáo phân loại bao gom precision, recall, fl-score cho từng lớp
e Indiém ROC AUC
* Chay quy trinh
prepare_model_smote(df,class_col = 'churn',cols_to_exclude=[ 'customer_id' ; 'phone_no', ‘year'])
# run the Logistics regression model and evaluate the results
run_model(X_train,X_test,y_train,y_test)
° Xóa Giá Trị Thiếu: Đã thực hiện ở đầu ; ;
¢ Chuan Bi Dir Ligu voi SMOTE: Goi ham prepare_model_smote dé chuan bi dit ligu cân băng
e Chay M6 Hinh va Danh Gia: Goi ham run_model dé huan luyén và đánh giá mô hình
Ket qua dau ra
precision recall fl-score support
The area under the curve is: 9.66
- Precision, Recall, F1-Score:
¢ Precision (Dé Chinh Xac): Ty 1é du doan dung trong téng s6 dir doan cho lép do
o Lép 0.0: 0.94 (Rat cao, nghia 1a hau hét cac dy doan Idp 0.0 déu chính xác)
o Lép 1.0: 0.19 (Rat thap, nghia 1a nhiéu dy doan lớp 1.0 không chính xác)
e Recall (D6 Nhay): Ty lé cac mẫu thực sự thuộc lớp đó được mô hình phát hiện
e_ Lớp 0.0: 0.65 (65% các mẫu lớp 0.0 được phát hiện)
e_ Lớp L0: 0.67 (67% các mẫu lớp 1.0 được phát hiện)
« Fl-Score: Trung bình điều hòa giữa precision va recall
o Lép 0.0: 0.77
o Lép 1.0: 0.29
- Accuracy (D6 Chinh Xac Tong Thé): 0.65
« _ Tỷ lệ chính xác tông thể của mô hình trên toản bộ dữ liệu kiểm tra
- Macro Avg (Trung Bình Cộng Đồng):
« _ Trung bình của các chỉ số (precision, recall, fl-score) của từng lớp mà không tinh trọng số
- Weighted Avg (Trung Bình Có Trọng Số):
« _ Trung bình các chỉ số của từng lớp, có trọng số theo số lượng mẫu trong từng lớp