Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 74 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
74
Dung lượng
10,23 MB
Nội dung
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM ĐỒ ÁN - SE122.L11 Đề tài: Tìm hiểu hệ thống gợi ý sản phẩm xây dựng ứng dụng minh hoạ Giáo Viên HD: ThS Trần Anh Dũng Thực Hiện: Nguyễn Phi Khang – 17520616 Nguyễn Quang Khang – 17520617 Tp HCM, 22/01/2021 LỜI CẢM ƠN Đầu tiên, với tất lịng biết ơn kính trọng, chúng em xin trân trọng cảm ơn quý thầy, cô khoa Công Nghệ Phần Mềm, thầy, cô công tác trường Đại học Công nghệ Thông tin – ĐHQG-HCM dùng tất tri thức tâm huyết để truyền đạt kiến thức, kinh nghiệm quý báu cho chúng em suốt trình học tập rèn luyện trường Đặc biệt, chúng em xin gửi lời tri ân chân thành sâu sắc đến Ths Trần Anh Dũng – người thầy hướng dẫn tận tâm, nhiệt tình hỗ trợ hết lịng giúp đỡ cho nhóm chúng em suốt q trình thực đồ án Những định hướng, bổ sung, góp ý thầy nguồn cảm hứng tảng sở góp phần giúp chúng em có nghiên cứu đắn, đạt kết tốt việc xây dựng, phát triển ứng dụng hồn thiện khóa luận tốt nghiệp Tiếp theo, chúng em xin phép gửi lời cảm ơn đặc biệt đến gia đình người thân Gia đình ln chỗ dựa tinh thần vững chắc, nguồn động lực lớn giúp chúng em vượt qua khó khăn, phấn đấu hồn thành tốt khóa luận Cuối cùng, nhóm chúng em xin gửi lời cảm ơn đến anh, chị bạn sinh viên trường Đại học Công nghệ Thơng tin nhiệt tình hỗ trợ, chia sẻ ý kiến, góp ý giúp chúng em suốt thời gian thực đồ án Một lần nữa, chúng em xin chân thành cảm ơn xin gửi lời chúc sức khỏe đến q thầy, TP Hồ Chí Minh, ngày 22 tháng 01 năm 2021 Nhóm tác giả NHẬN XÉT (của giảng viên hướng dẫn) ĐẠI HỌC QUỐC GIA TP HỒ CHÍ CỘNG HỒ XÃ HỘI CHỦ NGHĨA MINH VIỆT NAM TRƯỜNG ĐẠI HỌC Độc Lập – Tự Do – Hạnh Phúc CÔNG NGHỆ THÔNG TIN ĐỀ CƯƠNG CHI TIẾT Tên đề tài: Tìm hiểu hệ thống gợi ý sản phẩm xây dựng ứng dụng minh hoạ Cán hướng dẫn: ThS Trần Anh Dũng Thời gian thực hiện: Từ ngày 14/9/2020 - 02/01/2021 Sinh viên thực hiện: Nguyễn Phi Khang - 17520616 Nguyễn Quang Khang - 17520617 Nội dung đề tài:(Mô tả chi tiết mục tiêu, phạm vi, đối tượng, phương pháp thực hiện, kết mong đợi đề tài) Mục tiêu: - Thứ nghiên cứu công nghệ lập trình Java, MySql, lập trình ứng dụng với Flutter, hiểu Machine Learning thuật toán gợi ý sản phẩm cụ thể Content-based Collaborative Có thể áp - dụng ứng dụng minh hoạ đề tài tìm hiểu Thứ hai sử dụng thuật toán gợi ý sản phẩm để có khả ứng dụng vào thực tiễn, gợi ý cho người dùng sản phẩm tốt số sản phẩm phù hợp Nhóm hi vọng dựa tảng lý thuyết thầy cô truyền thụ lại, kết hợp với tìm hiểu cơng nghệ nhóm, Đồ án nhóm đạt mục đích mong đợi Đối tượng: Hướng đến người dùng sản phẩm Phương pháp thực hiện: làm việc với nhóm 02 thành viên, phân chia cơng việc phù hợp với lực kinh nghiệm người, thực đồ án theo lượng công việc thời gian lập kế hoạch chi tiết Các vấn đề liên quan đến đồ án trao đổi trực tiếp thành viên Kết mong đợi: - Đối với hệ thống gợi ý sản phẩm: Hiểu toán khuyến nghị Hiểu phương pháp khuyến nghị chính: Content-based Collaborative Hệ thống gợi ý sản phẩm gợi ý sản phẩm hiệu cho: người dùng (chưa có liệu rating) người dùng cũ (dựa - collaborative filtering) Đối với ứng dụng minh hoạ: Với khách hàng người dùng chưa đăng nhập, xem sản phẩm, tìm kiếm sản phẩm đăng ký tài khoản Với khách hàng người dùng đăng nhập thực chức đặt mua sản phẩm, xem sản phẩm, quản lý sản phẩm u thích, quản lý sản phẩm giỏ hàng, quản lý địa nhận hàng, chat với shop, xem tình trạng đơn hàng bình luận đánh giá sản phẩm sau mua hàng thành công Admin người quản trị thực chức quản lý sản phẩm, quản lý đơn hàng, quản lý danh mục sản phẩm, quản lý tài khoản - người dùng Các tiêu chí khác: Tính thẩm mỹ: Ứng dụng có giao diện đẹp, dễ sử dụng tâm lý thoải mái hút khách hàng sử dụng Đối với nhà quản trị cập nhật, thêm xóa sửa đổi thơng tin liên quan đến mặt hàng vấn đề khác Kế hoạch thực hiện: (Mô tả kế hoạch làm việc phân chia công việc thành viên tham gia) Với thời gian thực từ 21/09/2020 tới 02/01/2021 (15 tuần), nhóm chia thành sprint với giai đoạn cụ thể: STT Công việc Giai đoạn 1: Tìm hiểu kiến thức liên quan hệ thống gợi ý xây dựng ứng dụng minh hoạ Sprint 1: Tìm hiểu hệ thống gợi ý - Hệ thống gợi ý gì? 1.1 - Hệ thống gợi ý áp dụng cho việc gì? - Các thuật tốn áp dụng? Sprint 2: Tìm hiểu Machine Learning Thời gian thực Tuần (21/09/2020 – 08/11/2020) Tuần Tuần (21/09/2020 – 27/09/2020) Tuần - Machine Learning gì? 2.1 3.1 - Ngơn ngữ để viết Machine Learning? - Nhập môn Sprint 3: Tìm hiểu Backend - Thiết kế sở liệu - Xây dựng hình cần thiết - Fetch API từ backend Giai đoạn 2: Tìm hiểu sâu hệ thống gợi ý áp dụng vào ứng dụng Sprint 4: Nghiên cứu thực hệ thống gợi ý - Nghiên cứu phương pháp gợi ý sản phẩm 4.1 content-based, collaborative 4.2 5.1 5.2 (28/09/2020 - 11/10/2020) Tuần Frontend - Tìm hiểu Java, MySQL - Xây dựng API cần thiết cho sản phẩm - Tìm hiểu Flutter 3.2 Tuần – Tuần - Xây dựng code thử nghiệm đánh giá Sprint 5: Áp dụng hệ thống gợi ý vào ứng dụng - Tích hợp gợi ý sản phẩm cho người dùng Tuần - Tuần (12/10/2020 – 08/11/2020) tuần (09/11/2020 – 02/01/2021) Tuần Tuần – Tuần 11 (09/11/2020 - 29/11/2020) Tuần vào ứng dụng - Áp dụng gợi ý sản phẩm cho người dùng Tuần 12 – Tuần 13 collaborative filtering cho người (30/11/2020 – 20/12/2020) dùng cũ Tuần Sprint 6: Hoàn thiện sản phẩm Tuần 14 – Tuần 15 (21/12/2020 – 02/01/2021) Xác nhận CBHD TP HCM, ngày 16 tháng 09 năm (Ký tên ghi rõ họ tên) 2020 Sinh viên (Ký tên ghi rõ họ tên) MỤC LỤC CHƯƠNG TỔNG QUAN VỀ ĐỀ TÀI .10 1.1 NHU CẦU THỰC TẾ CỦA ĐỀ TÀI: 10 1.2 CÁC DỰ ÁN ĐỐI THỦ .10 1.2.1 Sapo 10 1.2.2 KiotViet 11 1.3 ĐỐI TƯỢNG NGHIÊN CỨU .12 1.4 PHẠM VI NGHIÊN CỨU 13 1.5 PHƯƠNG PHÁP NGHIÊN CỨU .13 CHƯƠNG CƠ SỞ LÝ THUYẾT 14 2.1 FLUTTER .14 2.1.1 Giới thiệu Flutter .14 2.2.2 Tại sử dụng Flutter? .15 2.3 JAVA SPRING 15 2.3.1 Giới thiệu Java Spring .15 2.3.2 Tại sử dụng Java Spring 16 2.3 HỆ QUAN ̉ TRỊ CSDL MYSQL 16 2.3.1 Giới thiệu MySQL 16 2.3.2 Tại sử dụng MySQL 17 2.4.1 Khái niệm Firebase .17 2.4.2 Chức Google Firebase 18 2.4.3 Lợi ích Google Firebase 18 CHƯƠNG PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 20 3.1 KIẾN TRÚC HỆ THỐNG 20 3.2 MƠ HÌNH PHÂN RÃ CHỨC NĂNG 21 3.3 MƠ HÌNH USECASE 21 3.3.1 Sơ đồ usecase 21 3.3.2 Danh sách Actor .22 3.3.3 Danh sách Use Case 23 3.3.4 Đặc tả Use Case 25 3.4 THIẾT KẾ DỮ LIỆU 31 3.4.1 Class Diagram 31 3.4.2 Mô tả chi tiết loại liệu mơ hình 32 CHƯƠNG HIỆN THỰC ỨNG DỤNG MUA SẮM THỜI TRANG .41 4.1 TỔNG QUAN VỀ ỨNG DỤNG ECOMMERCE 41 4.2 ĐẶC TẢ GIAO DIỆN CỦA ỨNG DỤNG 41 4.2.1 Quản lí đăng nhập 41 4.2.2 Giao diện trang chủ 43 4.2.3 Giao diện danh mục 44 4.2.4 Giao diện tìm kiếm 47 4.2.5 Giao diện giỏ hàng 48 4.2.6 Giao diện chat 49 4.2.7 Giao diện yêu thích 50 4.2.8 Giao diện thông tin Profile .51 4.2.9 Giao diện chi tiết sản phẩm 52 4.2.10 Giao diện lọc sản phẩm 53 CHƯƠNG 5: ÁP DỤNG RECOMMEND SYSTEM 55 5.1 MỘT SỐ ĐỊNH NGHĨA 55 5.1.1 Collaborative Filtering 55 5.1.2 Neighborhood-based Collaborative Filtering (NBCF) .55 5.1.3 Utility Matrix 55 5.1.4 Cosine Similarity 56 5.1.5 Root Mean Squared Error (RMSE) 57 5.2 PHƯƠNG PHAṔ THƯC ̣ HIÊN ̣ 58 5.2.1 Content-based Recommendation 58 5.2.2 Neighborhood-based Collaborative Filtering 62 5.3 ÁP DUN ̣ G VAO ̀ DỮ LIÊU ̣ MÂU ̃ VƠÍ PYTHON 68 5.3.1 Content-based Recommendation 68 5.3.2 Neighborhood-based Collaborative Filtering 71 5.4 ĐAN ́ H GIA.́ 73 5.4.1 So sánh thuật toán .73 5.4.2 Nhận xét 73 5.5 ÁP DUN ̣ G VƠÍ PROJECT .75 CHƯƠNG 6: KẾT LUẬN, HƯỚNG PHÁT TRIỂN 77 6.1 6.2 6.3 ƯU ĐIỂM .77 NHƯỢC ĐIỂM 77 HƯỚNG PHÁT TRIỂN .77 CHƯƠNG TỔNG QUAN VỀ ĐỀ TÀI 1.1 Nhu cầu thực tế đề tài: - Hiện nay, kinh tế đà phát triển mạnh, đời sống người dân từ mà lên, thói quen ăn mặc xu hướng thời gian ln vấn đề nóng hổi xã hội Các shop vừa nhỏ mọc lên nấm, dẫn đến việc cần thiết app thương mại điện tử hướng đến shop start-up, cần đà để phát triển Do chủ shop ln ln muốn tìm kiếm ứng dụng tạo khác biệt, tạo chất riêng shop để cạnh tranh giữ vị so với shop khác Tuy nhiên, vấn đề khó khăn nhà phát triển ứng dụng để tạo hài lòng với chủ shop Nhận thấy vấn đề này, nhóm định sâu vào E-commerce tạo khác biệt cho chủ shop vừa nhỏ shop chiếm tỉ lệ lớn ngành thời trang 1.2 Các dự án đối thủ 1.2.1 Sapo - Ưu điểm: + Hiện nay, nói ưu điểm lớn phần mềm Sapo ứng dụng cơng nghệ tốt vào việc hỗ trợ quản lý bán hàng đa kênh, đồng đơn hàng từ cách kênh khác website, facebook, sàn TMĐT + Phần mềm cịn có ưu điểm bật tích hợp đơn vị vận chuyển, đơn hàng sau tạo phần mềm xử lý chuyển đến đối tác vận chuyển, giúp chủ shop rút ngắn quy trình giao hàng nắm bắt xác trạng thái đơn hàng + Phần mềm Sapo tách biệt hình bán hàng cửa hàng bán online, giúp chun biệt hóa tính năng, thơng tin chun mơn bán hàng bên, dễ dàng báo cáo riêng biệt hóa đơn, doanh thu đo lường hiệu kênh online offline 10 f) Dự đốn (denormalized) ratings cịn thiếu - Chuẩn hố liệu: + Hàng cuối Hình a) giá trị trung bình ratings cho user Giá trị cao tương ứng với user dễ tính ngược lại Khi đó, tiếp tục trừ từ rating giá trị thay giá trị chưa biết 0, ta normalized utility matrix Hình b) Bạn thắc mắc bước chuẩn hoá lại quan trọng, câu trả lời đây: Việc trừ trung bình cộng cột khiến trong cột có giá trị dương âm Những giá trị dương tương ứng với việc user thích item, giá trị âm tương ứng với việc user khơng thích item Những giá trị tương ứng với việc chưa xác định liệu user có thích item hay khơng Về mặt kỹ thuật, số chiều utility matrix lớn với hàng triệu users items, lưu toàn giá trị ma trận khả cao không đủ nhớ Quan sát thấy số lượng ratings biết trước thường số nhỏ so với kích thước utility matrix, tốt lưu ma trận dạng sparse matrix, tức lưu giá trị khác khơng vị trí chúng Vì vậy, tốt hết, dấu ‘?’ nên thay giá trị ‘0’, tức chưa xác định liệu user có thích item hay khơng Việc khơng tối ưu nhớ mà việc tính tốn similarity matrix sau hiệu + Sau chuẩn hoá liệu trên, vài similiraty function thường sử dụng là: 60 - Cosine Similarity: + Đây hàm sử dụng nhiều nhất, quen thuộc với bạn Nếu bạn không nhớ cơng thức tính cos góc hai vector u1,u2 chương trình phổ thơng, cơng thức: + Trong u1,2 vectors tương ứng với users 1, chuẩn hoá + Có tin vui python có hàm hỗ trợ tính tốn hàm số cách hiệu + Độ similarity hai vector số đoạn [-1, 1] Giá trị thể hai vector hoàn toàn similar Hàm số cos góc nghĩa góc hai vector 0, tức vector tích số dương với vector lại Giá trị cos -1 thể hai vector hoàn toàn trái ngược Điều hợp lý , tức hành vi hai users hoàn toàn ngược thi similarity hai vector thấp + Ví dụ cosine_similarity users Hình b) cho Hình c) Similarity matrix S ma trận đối xứng cos hàm chẵn, user A giống user B điều ngược lại Các ô màu xanh đường chéo cos góc vector nó, tức cos(0)=1 Khi tính tốn bước sau, không cần quan tâm tới giá trị Tiếp tục quan sát vector hàng tương ứng với u0,u1,u2, thấy vài điều thú vị: u0 gần với u1 u5 (độ giống dương) users lại Việc similarity cao u0 u1 dễ hiểu hai có xu hướng quan tâm tới i0,i1,i2 items lại Việc u0 gần với u5 đầu vơ lý u5 đánh giá thấp items mà u0 đánh giá cao (Hình a)); nhiên nhìn vào ma trận utility chuẩn hố Hình b), ta thấy điều hợp lý Vì item mà hai users cung cấp thông tin i1 với giá trị tương ứng tích cực u1 gần với u0 xa users lại 61 u2 gần với u3,u4,u5,u6 xa users cịn lại + Từ similarity matrix này, phân nhóm users làm hai nhóm (u0,u1)(u0,u1) (u2,u3,u4,u5,u6)(u2,u3,u4,u5,u6) Vì ma trận SS nhỏ nên dễ dàng quan sát thấy điều này; số users lớn hơn, việc xác định mắt thường khơng khả thi Việc xây dựng thuật tốn phân nhóm users (users clustering) trình bày viết + Có ý quan trọng số lượng users lớn, ma trận SS lớn nhiều khả khơng có đủ nhớ để lưu trữ, lưu nửa số phần tử ma trận đối xứng Với trường hợp đó, user, cần tính lưu kết hàng similarity matrix, tương ứng với việc độ giống user users cịn lại - Rating Prediction: + Trong Collaborative Filtering, missing rating xác định dựa thông tin k neighbor users Tất nhiên, quan tâm tới users rated item xét Predicted rating thường xác định trung bình có trọng số ratings chuẩn hố Có điểm cần lưu ý, KNN, trọng số xác định dựa distance điểm, distance số khơng âm Trong đó, CF, trọng số xác định dựa similarity hai users, trọng số nhỏ Hình c) + Cơng thức phổ biến sử dụng để dự đoán rating u cho i là: (sự khác biết so với trung bình có trọng số mẫu số có sử dụng trị tuyệt đối để xử lý số âm) N(u,i) tập hợp k users neighborhood (tức có similarity cao nhất) u mà rated i 62 + Hình d) thể việc điền giá trị thiếu normalized utility matrix Các ô màu đỏ thể giá trị dương, tức items mà users quan tâm Ở đây, tơi lấy ngưỡng 0, hồn tồn chọn ngưỡng khác Một ví dụ việc tính normalized rating u1 cho i1 cho Hình e) với số nearest neighbors k=2 Các bước thực là: Xác định users rated i1, u0,u3,u5 Xác định similarities u1 với users ta nhận 0.83,−0.40,−0.23 Hai (k=2) giá trị lớn 0.83 −0.23 tương ứng với u0 u5 Xác định normalized ratings u0,u5 cho i1, ta thu hai giá trị 0.75 0.5 Dự đoán kết quả: + Việc quy đổi giá trị ratings chuẩn hố thang thực cách cộng cột ma trận Y với giá trị rating trung bình user tính Hình 2a) + Việc hệ thống định recommend items cho user xác định nhiều cách khác Có thể xếp unrated items theo thứ tự tự lớn đến bé predicted ratings, chọn items có normalized predicted ratings dương - tương ứng với việc user có nhiều khả thích 5.3 Áp dụng vào liệu mẫu với Python 5.3.1 Content-based Recommendation - Input: Dữ liệu detailedMovies MovieLen100k 63 - Tạo TF-IDF ứng với 19 số nhị phân sau dòng movie ứng với 19 feature thể loại phim #tfidf from sklearn.feature_extraction.text import TfidfTransformer transformer = TfidfTransformer(smooth_idf=True, norm ='l2') tfidf = transformer.fit_transform(X_train_counts.tolist()).toarray() - Tìm hệ số Ridge Regression cho user: from sklearn.linear_model import Ridge from sklearn import linear_model d = tfidf.shape[1] # data dimension W = np.zeros((d, n_users)) 64 b = np.zeros((1, n_users)) for n in range(n_users): ids, scores = get_items_rated_by_user(rate_train, n) clf = Ridge(alpha=0.01, fit_intercept = True) Xhat = tfidf[ids, :] clf.fit(Xhat, scores) W[:, n] = clf.coef_ b[0, n] = clf.intercept_ - Sau có hệ số Ridge, áp dụng cơng thức dự đốn ratings cho item # predicted scores Yhat = tfidf.dot(W) + b n = 10 np.set_printoptions(precision=2) # digits after ids, scores = get_items_rated_by_user(rate_test, n) Yhat[n, ids] print('Rated movies ids :', ids ) print('True ratings :', scores) print('Predicted ratings:', Yhat[ids, n]) 65 - Output: Rated movies ids: [ 37 109 110 226 424 557 722 724 731 739] True ratings: [3 4 3 4] Predicted ratings: [3.18 3.13 3.42 3.09 3.35 5.2 4.01 3.35 3.42 3.72] - Đánh giá thuật toán theo RMSE def evaluate(Yhat, rates, W, b): se = cnt = for n in xrange(n_users): ids, scores_truth = get_items_rated_by_user(rates, n) scores_pred = Yhat[ids, n] e = scores_truth - scores_pred se += (e*e).sum(axis = 0) cnt += e.size return sqrt(se/cnt) print 'RMSE for training:', evaluate(Yhat, rate_train, W, b) print 'RMSE for test :', evaluate(Yhat, rate_test, W, b) - Output: RMSE for training: 0.908980456283 RMSE for test : 1.27032827004 66 5.3.2 Neighborhood-based Collaborative Filtering 5.3.2.1 User-User Collaborative Filtering - Tương tự áp dụng RMSE với User-User Collaborative Filtering: rs = CF(rate_train, k = 30, uuCF = 1) rs.fit() n_tests = rate_test.shape[0] SE = # squared error for n in xrange(n_tests): pred = rs.pred(rate_test[n, 0], rate_test[n, 1], normalized = 0) SE += (pred - rate_test[n, 2])**2 RMSE = np.sqrt(SE/n_tests) print 'User-user CF, RMSE =', RMSE - Output: User-user CF, RMSE = 0.995198110088 5.3.2.2 Item-Item Collaborative Filtering - Tương tự áp dụng RMSE với Item-Item Collaborative Filtering: rs = CF(rate_train, k = 30, uuCF = 0) rs.fit() n_tests = rate_test.shape[0] SE = # squared error for n in xrange(n_tests): pred = rs.pred(rate_test[n, 0], rate_test[n, 1], normalized = 0) 67 SE += (pred - rate_test[n, 2])**2 RMSE = np.sqrt(SE/n_tests) print 'Item-item CF, RMSE =', RMSE - Output: Item-item CF, RMSE = 0.986791213271 5.4 Đánh giá 5.4.1 So sánh thuật toán - Trên liệu MoviesLens100K, liệu test từ ua.test RMSE Content-based User-user CF Item-item CF 1.270618 0.986791213271 0.995198110088 - Từ kết thực nghiệm cho thấy, Item-item CF có độ RMSE nhỏ nên độ lỗi nhỏ Vì nhóm định chọn Item-Item CF để áp dụng vào project 5.4.2 Nhận xét 5.4.2.1 Content-based Recommendation - Ưu điểm: + Không cần liệu user khác + Có thể gợi ý item mới, item khơng phổ biến dựa feature vector - Nhược điểm: + Khó để tìm feature cho item + Khơng gợi ý item ngồi user profile + Không khai thác liệu rating user khác 5.4.2.2 Neighborhood-based Collaborative Filtering (Item-item User-user) - Ưu điểm: + Đưa gợi ý xác sử dụng liệu rating từ nhiều user khác 68 Có thể hoạt động với nhiều loại item khác - Nhược điểm: + Khởi đầu lạnh (Cold Start): cần số lượng đủ user hệ thống để tìm gợi ý phù hợp + Ma trận thưa (Sparsity): Utility matrix (ma trận rating) thường thưa thớt dẫn đến khó khăn việc tìm users rate item + Không gợi ý item chưa có rating (item mới) + Có xu hướng gợi ý item phổ biến Một số hạn chế User-user CF: Trên thực tế, số lượng users lớn số lượng items nhiều Kéo theo Similarity matrix lớn với số phần tử phải lưu giữ nửa bình phương số lượng users (chú ý ma trận đối xứng) Việc này, đề cập trên, khiến cho việc lưu trữ ma trận nhiều trường hợp không khả thi Ma trận Utility Y thường sparse Với số lượng users lớn so với số lượng items, nhiều cột ma trận sparse, tức có vài phần tử khác Lý users thường lười rating Cũng việc này, user thay đổi rating rate thêm items, trung bình cộng ratings vector chuẩn hoá tương ứng với user thay đổi nhiều Kéo theo đó, việc tính tốn ma trận Similarity, vốn tốn nhiều nhớ thời gian, cần thực lại Ngược lại Item-item CF: Vì số lượng items thường nhỏ số lượng users, Similarity matrix trường hợp nhỏ nhiều, thuận lợi cho việc lưu trữ tính tốn bước sau Vì số lượng phần tử biết Utility matrix số hàng (items) số cột (users), nên trung bình, hàng ma trận có nhiều phần tử biết số phần tử biết cột Việc dễ hiểu item rated nhiều users Kéo theo đó, giá trị trung bình hàng bị thay đổi có thêm 69 vài ratings Như vậy, việc cập nhật ma trận Similarity Matrix thực thường xuyên 5.5 Áp dụng với project - Đối với user chưa có rating số lượng sản phẩm recommend không đủ 10 Hệ thống tự thêm vào list recommend theo top điểm WeightedRating tất sản phẩm - WeightRating sản phẩm tính với cơng thức sau: Trong đó, v- số lượt rating sản phẩm m- số phiếu tối thiểu cần thiết để liệt kê biểu đồ R- điểm rating trung binh sản phẩm C- rating trung bình tất sản phẩm Hiển thị Ecommerce-app - Đối với User mới, chưa rating, app chưa đăng nhập gợi ý sử dụng phương pháp Weight Rating 70 - Đối với User có lịch sử rating dựa vào thuật tốn để gợi ý 71 72 CHƯƠNG 6: KẾT LUẬN, HƯỚNG PHÁT TRIỂN 6.1 Ưu điểm - Hoàn thành yêu cầu đặt ban đầu, có đầy đủ tính cần thiết ứng dụng thương mại điện tử - Giao diện đơn giản, bố cục hợp lý, người dùng dễ dàng theo tác ứng dụng - Tốc độ phản hồi thao tác nhanh, tối ưu hóa suất người dùng - Sinh viên thực nắm cách thức làm ứng dụng bán hàng, hiểu biết ngôn ngữ Java, Spring Boot - Ứng dụng triển khai nghiệm thu thành công máy thật - Hồn thành việc áp dụng thuật tốn gợi ý Collaborative filtering vào ứng dụng Phục vụ việc gợi ý sản phẩm cho người dùng Gợi ý sản phẩm phù hợp dựa lịch sử đánh giá hộ để tăng tỉ lệ mua hàng, từ tăng doanh thu cho người bán 6.2 Nhược điểm - Cịn hạn chế số tính năng: + Chưa tích hợp toán trực tuyến + Tối ưu code chưa tốt nên tốc độ tương tác ứng dụng cịn chậm + Chưa phát triển tính xác thực qua email, số điện thoại - Hệ thống gợi ý chưa hiệu với trường hợp chưa có liệu, thời gian cập nhật lại liệu gợi ý chậm thời gian thực 6.3 Hướng phát triển - Xây dựng chứa cịn thiếu, hồn thiện chức có - Tích hợp tốn trực tuyến qua Bảo Kim, Ngân Lượng, Paypal - Tối ưu hóa code để tăng tốc độ tương tác - Tối ưu hóa CSDL hợp lý - Tối ưu hóa việc gợi ý - Thêm số gợi ý cho người dùng dựa trên: Quốc gia, thời tiết,… 73 TÀI LIỆU THAM KHẢOXD Friends, “History of MySQL.” http://databasefriends.blogspot.com/2014/02/history-of-mysql.html (accessed Aug 01, 2020) “Ngơn ngữ lập trình ứng dụng Java làm gì?,” 2018 https://devpro.edu.vn/ngon-ngu-lap-trinh-ung-dung-java-co-the-lam-duoc-nhung-gi “Machine Learning bản.” https://machinelearningcoban.com/ M J Pazzani and D Billsus, “Content-based recommendation systems,” in The adaptive web, Springer, 2007, pp 325–341 G Linden, B Smith, and J York, “Amazon com recommendations: Item-to-item collaborative filtering,” IEEE Internet Comput., vol 7, no 1, pp 76–80, 2003 “Dropwizard.” https://www.dropwizard.io/en/latest/ “Apache Spark.” http://spark.apache.org/ 74 ... Tìm hiểu kiến thức liên quan hệ thống gợi ý xây dựng ứng dụng minh hoạ Sprint 1: Tìm hiểu hệ thống gợi ý - Hệ thống gợi ý gì? 1.1 - Hệ thống gợi ý áp dụng cho việc gì? - Các thuật tốn áp dụng? ... 3: Tìm hiểu Backend - Thiết kế sở liệu - Xây dựng hình cần thiết - Fetch API từ backend Giai đoạn 2: Tìm hiểu sâu hệ thống gợi ý áp dụng vào ứng dụng Sprint 4: Nghiên cứu thực hệ thống gợi ý -... dụng thuật tốn gợi ý sản phẩm để có khả ứng dụng vào thực tiễn, gợi ý cho người dùng sản phẩm tốt số sản phẩm phù hợp Nhóm hi vọng dựa tảng lý thuyết thầy cô truyền thụ lại, kết hợp với tìm hiểu