1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ án môn học dữ liệu lớn sử dụng pyspark Để phân khúc khách hàng dựa trên k means

29 2 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Đồ Án Môn Học Dữ Liệu Lớn Sử Dụng Pyspark Để Phân Khúc Khách Hàng Dựa Trên K-Means
Tác giả Nguyễn Hoàng Phúc, Nguyễn Ngọc Nam
Người hướng dẫn ThS. Hồ Khôi
Trường học Trường Đại Học Nguyễn Tất Thành
Chuyên ngành Dữ Liệu Lớn
Thể loại Đồ án
Năm xuất bản 2023
Thành phố Tp HCM
Định dạng
Số trang 29
Dung lượng 2,56 MB

Nội dung

Giới thiệu bài toán Phân khúc khách hảng là một trong những chiến lược quan trọng của các công ty khi mà họ sẽ phân nhóm khách hàng của mình và có các kế hoạch quảng cáo, chăm sóc khách

Trang 1

TRUONG DAI HOC NGUYEN TAT THANH KHOA CONG NGHE THONG TIN

NGUYEN TAT THANH

DO AN MON HOC DU LIEU LON

SU DUNG PYSPARK DE PHAN KHUC KHACH HANG DUA

TREN K-MEANS

Sinh viên thực hiện: NGUYÊN HOÀNG PHÚC

Trang 2

LOI NOI DAU

Trang 3

LOI CAM ON

Trước tiên với tình cảm sâu sắc và chân thành nhất, cho phép em được bày tỏ lòng biết ơn đến tất cả các cá nhân và tổ chức đã tạo điều kiện hỗ trợ, giúp đỡ em trong suốt quá trình học tập và nghiên cứu đề tài này Trong suốt thời gian học tập vừa qua, em đã nhận được rất nhiều sự quan tâm, giúp đỡ của quý Thầy Cô và bạn

bè Với lòng biết ơn sâu sắc, em xin gửi đến quý Thầy Cô ở Khoa CNTT đặc biệt là Thầy Hồ Khôi đã truyền đạt vốn kiến thức quý báu cho chúng em trong suốt thời gian học tập tại trường Nhờ có những lời hướng dẫn, dạy bảo của các thầy cô nên

đề tài nghiên cứu của em mới có thể hoàn thiện tốt đẹp Một lần nữa, em xin chân thành cảm ơn thầy Khôi — người đã trực tiếp giúp đỡ, quan tâm, hướng dẫn em hoản thành tốt bài báo cáo này trong thời gian qua Bước đầu đi vào thực tế của em còn

hạn chế và còn nhiều bỡ ngỡ nên không tránh khỏi những thiếu sót trong quá trình

làm đồ án, em rất mong nhận được những ý kiến đóng góp quý báu của Thầy để kiến thức của em được hoàn thiện hơn đồng thời có điều kiện bô sung, nâng cao ý thie cua minh Em xin chan thành cảm ơn!

Sinh viên thực hiện NGUYÊN HOÀNG PHÚC

NGUYÊN NGỌC NAM

Trang 4

BM-ChT-

PHIEU CHAM THI

Môn thi: Công nghệ khoa học đữ liệu

Lớp học phần: 20DTHID

Nhóm sinh viên thực hiện :

1.Nguyễn Hoàng Phúc Tham gia đóng góp: 30%

2.Nguyễn Ngọc Nam Tham gia đóng góp: 70%

Dé tai tiéu luan/bao cao cua sinh vién :

Phan danh gia cua giang vién (can cir trén thang rubrics cua môn học):

Tiéu chi (theo Đánh giá của GV Điểm tối | Điểm đạt

Trang 6

LLL Dax la nh 16

a Data Analysis Expressions 0 cccccccccceseceseesseeseeceenscensestsessessseenssees 16

b Tầm quan trọng của DAX trong Power BU cccccccscccccseceeseseesesessesees 17

c Yếu tô cơ bản của DAX 2s 21 2212211221211211271222211222212 xe 17

d _ So sánh: DAX (Power BỊ) và HÀM (Excel) 52 5c s22 czx rrrrre 17

0a 18

b Val trÒ CỦa F€ĐOY 2 1201201221111 1111 1121211011 1111111 1011121111111 1 11 xkg 18

c Các bước xây dựng TepOF( 2 2211211121121 111111111 111211 re 18 Chương2 Phân tích độ tuôi các nhà vô địch boxing hạng nặng khi họ lần đầu lấy đai của WBC & WBO à tt n1 gn 1121112111 n trường 19

IV TBIT) 0ï 84: sEđaIiaaiiiađẳđđẳẳđáẳẳảẳááiảÝảỶắảÝ 31

Trang 7

DANH MỤC HÌNH

Hình L6 Chỉnh sửa và kết opp dit An h S 6

(08/0/71 nh 7

(80m 9/, 7.1.2 07 e 7

Finh 1.9 Privot COMMAS nen e 8

(00/06 85h ee ọ (0n 1 na sen e 10

(808/61 n 6 8m e 10

Hình 1 13 Các công thúc truy VẤN Ì 222k il Hinh 1.14 Cde cong thite try van 20 ccc ccc 0 2222k il Hinh 1.15 Bang dashboard chin loc ccccccccccccccccccescescescsssssessessessesesssesessesssssesseseesessessneseeees 13 8/008 ốn ng nốố ố.ee 14

r0 7 na an na ốố ốố.ốe 14

(08.1 .09 a nan na e 17

Hình 2.1 Chia hạng cân Quyên Anh nghiệp đự à c HH1 2121212221221 2ï Hình 2.2 Chia hạng cân Quyền Anh chuyên nghiệp à c2 22 Hirth 820.18 1 -00800NậậT/ 24

0500 4,16 24

Flinh 2.5 Die liu AG that thai Lice 25

00000928, 8, 088 25

00771.010.807 e 26

FTirnh 2.8 Xt li Ait EU 0085 26 Finn 2.9 Xt li Ait HEU 3 cocci cece cect eneectesenesesesesecseaeacenessenesssnesusesesseaeeeseaeeacensensesnesnees 27 Eira 2.10 Xt li dit QU Aces cece ete netesteneeesesnensecnsensssessstessnesueesceeesensseaeeseneeeeeeeeeeees 27 ETirnh 2.11 Xte li dit QU Sec cec ec cceeecceeccteeete sete sete sncnccnsnsesassessstessiesusescnesseneseaeeseneeeeeeeesees 28 Eira 2.12 Xt li it QUO cece cece enennetesnesesesesnensensesensesessseessnesuseseneeseeessaeesaneeeeseseesees 28

ETinh 2.14 Muhammad Aliciccccccccccccccceccecetestenssnsesensnsenssessnessnssueeceaeesenessenesienesueesenansenaseeas 29

Vi

Trang 8

ki HIEU CAC CUM TU VIET TAT

WBO (Tô chức Quyên Anh Thê gid1) A r À K ore

International Boxing Federation IBF (Liên đoàn Quyền Anh Quốc Tế)

vn

Trang 9

CHUONG 1 YEU CAU BAI TOAN

1.1 Giới thiệu bài toán

Phân khúc khách hảng là một trong những chiến lược quan trọng của các công

ty khi mà họ sẽ phân nhóm khách hàng của mình và có các kế hoạch quảng cáo, chăm sóc khách hàng phù hợp với từng nhóm đối tượng mua hàng

Giả sử bạn ghé vào cửa hàng quần áo X vào mỗi địp đầu tháng, có thé ban được xếp vào nhóm những người tiêu tiền đầu tháng, nghèo cuối tháng, hay lương được trả vào cuối tháng, thích mua sắm hàng tháng, thích mua quân âu Khi đó, công ty X sẽ có những quảng cáo với mác "Chỉ dành riêng cho bạn" hay "Duy nhất trong ngày hôm nay" và những quảng cáo này sẽ xuất hiện cho những người cùng nhóm với bạn, xuât hiện vào đầu tháng, các mặt hàng sale chủ yêu là quân au,

1.2 Mục đích bài toán

Dựa vào dữ liệu khách hàng mua sản phẩm mà phân loại họ theo các nhóm

khác nhau Từ đó tìm ra tính đặc trưng mua hàng của mỗi nhóm khách hàng như

mua vào thời gian nào, mặt hàng thường mua để có các biện pháp thu hút các nhóm khách hàng tiềm năng và cải thiện phục vụ các nhóm khác

1.3 Phương pháp làm bài toán

Nhắc đến phân cụm, ta sẽ nghĩ ngay đến K-means Và trong bài nay, ta sẽ áp dụng K-means cùng với PySpark trên nền tang Google Colad đề giải quyết bài toán Giải quyết bài toán chia làm các bước lớn như sau :

e© Phân tích dữ liệu

© Tiền xử lí đữ liệu

© Chuẩn hóa đữ liệu

¢ Machine learning

Trang 10

1.4 Sơ lược về thuật toán và công cụ thực hiện

a.Spark là gì ? Spark la mét framework xtr ly phan tan va tinh toan lớn được phát triển trên nén tang Apache Hadoop

Spark được thiết kế để hoạt động cùng với Hadoop và sử dụng Hadoop Distributed File System (HDFS) để lưu trữ dữ liệu Nó cũng tích hợp với Hadoop YARN để quản lý tài nguyên và phân phối các tác vụ tính toán trên các nodes trong cụm Hadoop

Spark được thiết kế để giải quyết các hạn chế của MapReduce vả cung cấp một cách tiếp cận hiệu quả hơn đề xử lý các tác vụ phức tạp

b.PySpark ? PySpark là một giao diện cho Apache Spark bằng Python Với PySpark, bạn

có thể viết các lệnh giống "sự lai ghép" giữa Python và SQL để truy vấn và phân tích dữ liệu trong môi trường xử lý phân tán

Spark hỗ trợ thư viện cho một vài ngôn ngữ lập trình như R, Scala, Java, Python Với việc dùng Python để viết mã lệnh và chạy trên Google Colad nên thực

x

Att

hành với PySpark cho tiện, bởi nó cũng đã được tích hợp trên "Gu gồ" rồi

c Thuật toán K-means K-means là một thuật toán phân cụm đơn giản thuộc loại học không giám sát(tức là đữ liệu không có nhãn) và được sử dụng đề giải quyết bài toán phân cụm

Ý tưởng của thuật toán phân cụm k-means la phan chia 1 bộ dữ liệu thành các cụm khác nhau Trong đó số lượng cụm được cho trước là k Công việc phân cụm được xác lập dựa trên nguyên lý: Các điểm dữ liệu trong cùng 1 cụm thì phải có cùng 1

số tính chất nhất định Tức là giữa các điểm trong cùng 1 cụm phải có sự liên quan lẫn nhau Đối với máy tính thì các điểm trong 1 cụm đó sẽ là các điểm dữ liệu gần nhau

Thuật toán phân cụm k-means thường được sử dụng trong các ứng dụng cỗ máy tìm kiếm, phân đoạn khách hàng, thống kê dữ liệu,

Trang 11

CHUONG 2 GIAI QUYET BAI TOAN

2.1 Sơ lược về bộ dữ liệu

A B c D E F 6 H woiceNo StockCode Description Quantity InvoiceDate UnitPrice CustomerID Country

536365 85123A WHITE HANGING H 6 01/12/2010 8:26 2.55 17850 United Kingdom

536365 71053 WHITE METAL LAN” 6 01/12/2010 8:26 3.39 17850 United Kingdom

536365 84406B CREAM CUPID HEAI 8 01/12/2010 8:26 2.75 17850 United Kingdom

536365 84029G KNITTED UNION FL 6 01/12/2010 8:26 3.39 17850 United Kingdom

536365 84029E RED WOOLLY HOTT 6 01/12/2010 8:26 3.39 17850 United Kingdom

536365 22752 SET 7 BABUSHKA N 2 01/12/2010 8:26 7.65 17850 United Kingdom

536365 21730 GLASS STAR FROST 6 01/12/2010 8:26 4.25 17850 United Kingdom

536266 22633 HAND WARMER US 6 01/12/2010 8:28 1.85 17850 United Kingdom

536366 22632 HAND WARMER RE 6 01/12/2010 8:28 1.85 17850 United Kingdom

536267 84879 ASSORTED COLOUF 32 01/12/2010 8:34 1.69 13047 United Kingdom

538367 22745 POPPY'S PLAYHOUS 6 01/12/2010 8:34 2.1 13047 United Kingdom

536367 22748 POPPY'S PLAYHOUS 6 01/12/2010 8:34 2.1 13047 United Kingdom

536367 22749 FELTCRAFT PRINCE 8 01/12/2010 8:34 3.75 13047 United Kingdom

536367 22310 IVORY KNITTED MU 6 01/12/2010 8:34 1.65 13047 United Kingdom

536367 84969 BOX OF 6 ASSORTE 6 01/12/2010 8:34 4.25 13047 United Kingdom

536367 22623 BOX OF VINTAGE JI 3 01/12/2010 8:34 4.95 13047 United Kingdom

536367 22622 BOX OF VINTAGE A 2 01/12/2010 8:34 3.95 13047 United Kingdom

536367 21754 HOME BUILDING BL 3 01/12/2010 8:34 5.95 13047 United Kingdom

536367 21755 LOVE BUILDING BLC 3 01/12/2010 8:34 5.95 13047 United Kingdom

536367 21777 RECIPE BOX WITH " 4 01/12/2010 8:34 7.95 13047 United Kingdom

536367 48187 DOORMAT NEW ER 4 01/12/2010 8:34 7.95 13047 United Kingdom

536368 22960 JAM MAKING SET V 6 01/12/2010 8:34 4.25 13047 United Kingdom

536368 22913 RED COAT RACK PA 3 01/12/2010 8:34 4.95 13047 United Kingdom

536368 22912 YELLOW COAT RAC 3 01/12/2010 8:34 4.95 13047 United Kingdom

536368 22914 BLUE COAT RACK P 3 01/12/2010 8:34 4.95 13047 United Kingdom

536369 21756 BATH BUILDING BLC 3 01/12/2010 8:35 5.95 13047 United Kingdom

536370 22728 ALARM CLOCK BAK 24 01/12/2010 8:45 3.75 12583 France

536370 22727 ALARM CLOCK BAK 24 01/12/2010 8:45 3.75 12583 France

536370 22726 ALARM CLOCK BAK 12 01/12/2010 8:45 3.75 12583 France

536370 21724 PANDA AND BUNN 12 01/12/2010 8:45 0.85 12583 France

536370 21883 STARS GIFT TAPE 24 01/12/2010 8:45 0.65 12583 France

536370 10002 INFLATABLE POLIT! 4ã 01/12/2010 8:45 0.85 12583 France

536370 21791 VINTAGE HEADS Ar 24 01/12/2010 8:45 1.25 12583 France

536370 21035 SET/2 RED RETROSE 18 01/12/2010 8:45 2.95 12583 France

536370 22326 ROUND SNACK BO) 24 01/12/2010 8:45 2.95 12583 France

536370 22629 SPACEBOY LUNCH E 24 01/12/2010 8:45 1.95 12583 France

536370 22659 LUNCH BOX I LOVE 24 01/12/2010 8:45 1.95 12583 France

536370 22631 CIRCUS PARADE LU 24 01/12/2010 8:45 1.95 12583 France

Hinh 1 Sơ lược đữ liệu Tập đữ liệu trên bao gồm các đơn đặt hàng được thực hiện ở các quốc gia khác nhau từ tháng 12 năm 2010 đến tháng 12 năm 2011 Trong đó:

® InvoiceNo: ID của đơn hàng, nếu ID bắt đầu bằng chữ "c" thế hiện đơn hàng đó bị hủy (Cancel)

¢ StockCode: Ma san pham

¢ Description: Tén san pham

¢ Quantity: S6 lvong san pham trén don dat hang

¢ InvoiceDate: Ngay va g10 khi đơn hàng được tạo

¢ UnitPrice: Giá sản phẩm trên mỗi don vi, tinh bang pound

® CustomerID: ID của khách hàng

Trang 12

© Country: Quốc gia nơi khách hàng cư trú

df = pd.DataFrame(pd.read_csv

df head

Hình 2 Chuyên định dạng file đữ liệu bằng Python

Dé bat dau các thao tác dữ liệu với PySpark, chúng ta cần khởi tạo session với SparkSession Nó xây dựng một khung dữ liệu trong PysPark để chúng ta có thể sử dụng các chức năng của PysPark lên dữ liệu của mình

Hình 3 Khoi tao session voi SparkSession

Đọc dữ liệu trong file CSV vita convert bang PySpark

Hinh 4 Doc dit liéu CSV

Ngoài ra, còn có một số câu lệnh truy vấn khác như:

e© Đếm số lượng dòng của dữ liệu: df.count()

e - Đếm số lượng khách hàng: df.select('CustomerID').distinct().count()

® - Ngày có đơn hàng gần nhất: dfselect(max("date")).show()

e - Ngày đầu tiên có đơn hàng: d£select(min("date")).show()

Trang 13

2.3 Tiền xử lí dữ liệu

Có thể thấy trong file đữ liệu có tới 7 trường dữ liệu, không phải trường đữ liệu nào cùng có ích cho phân cụm, thậm chí còn có trường dữ liệu không dùng được

REM (bao gồm Recency (Tần suất mua hang gan day), Frequency (Tan suat mua hang), va Monetary (Giá trị đặt hàng)) là một phương pháp phân tích khách hàng được sử dụng rộng rãi trong lĩnh vực tiếp thị để đánh giá giá trị của khách

hàng dựa trên hành vi mua hang cua ho

¢ Recency: do thoi diém mà khách hàng đã mua hàng lần cuối Khách hàng mới mua hang gan đây được xem là có giá trị cao hơn so với khách hàng mua hàng lâu đến không mua hàng nữa

e Frequency: đo tần suất mà khách hàng mua hàng trong một khoảng thời gian nhất định Khách hàng mua hàng thường xuyên được xem là có giá trị hơn so với những khách hàng mua hảng ít lần

® Monetary: do giá trị đặt hàng của khách hàng Khách hàng đặt hang có gia tri cao hơn được xem là có giá trị cao hơn so với những khách hàng đặt hàng có giá trị thấp

a Recency Mục tiêu là tính toán ra một giá trị đại diện cho việc thời điểm khách hàng mua lần cuối so với 1 mốc 0 nhất định (ở đây ta chọn mốc 0 là thời gian đầu tiên có đơn hàng đã tính ra bên trên) Sau đó lấy thời gian gần nhất khách hàng đặt đơn trừ

đi mốc thời pian đó, ta sẽ có 1 giá trị dai dién cho Recency Gia tn nay cang lớn

chứng tỏ khách hảng cảng mua gần đây Việc tính toán này sẽ thông qua 1 số bước

Trang 14

© Lấy giá trị thời gian mua của từng đơn hàng trừ đi om_ date, ta sẽ biết đơn hàng đo được đặt cách mốc thời gian 0 là bao nhiêu (theo đơn vị timestamp), giá trị sẽ được lưu tại cột 'recency!

„withColumn

Hình 6 Tìm gid tri c6t recency

® Moi khach hang c6 thé mua nhieu lân vào nhieu moc thời gian khác

nhau, chúng ta chỉ quan tâm lân cuôi cùng họ mua, vì vậy cân xử lý lại cột recency'

Hình 8 Tỉnh tần suất khách hàng mua món hàng nào đó

Lúc này frequency dataframe của ta chỉ có 2 cột đứng riêng lẻ, chúng ta sẽ nối

nó vào dataframe đang làm việc đề thông nhất, cũng như kiểm tra lại xem mình truy

Ngày đăng: 14/12/2024, 22:43

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w