Lọc cộng tác bằng phương pháp học bán giám sát

96 9 0
Lọc cộng tác bằng phương pháp học bán giám sát

Đ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

BỘ GIÁO DỤC VÀ ĐÀO TẠO VIỆN ĐẠI HỌC MỞ HÀ NỘI LUẬN VĂN THẠC SĨ LỌC CỘNG TÁC BẰNG PHƯƠNG PHÁP HỌC BÁN GIÁM SÁT NGUYÊN HỮU HẢI CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN MÃ SỐ: 60480201 HƯỚNG DẪN KHOA HỌC: TS.NGUYỄN DUY PHƯƠNG Hà Nội - 2015 LỜI CAM ĐOAN Em xin cam đoan cơng trình nghiên cứu thân, xuất phát từ yêu cầu phát sinh cơng việc để hình thành hướng nghiên cứu Các kết trình bày luận văn thu thập trình nghiên cứu trung thực chưa công bố công trình khác Hà Nội, 11 tháng 11 năm 2015Tác giả luận văn Nguyễn Hữu Hải LỜI CẢM ƠN Thực luận văn thạc sỹ thử thách với em, địi hỏi phải tập trung kiên trì nghiên cứu vấn đề liên quan Em thực hạnh phúc với kết đạt đề tài nghiên cứu Những kết đạt khơng nỗ lực cá nhân, mà cịn có hỗ trợ giúp đỡ giáo viên hướng dẫn, nhà trường, đồng nghiệp, bạn bè gia đình Em muốn bày tỏ tình cảm chân thành em đến với họ Trước tiên, em xin bày tỏ biết ơn sâu sắc đến giáo viên hướng dẫn TS Nguyễn Duy Phương tận tình dẫn phương pháp nghiên cứu st q trình thực luận văn Em xin trân trọng cảm ơn thầy nhiều hướng dẫn bảo nhiệt tình, nghiêm túc khoa học Em xin trân trọng cảm ơn Khoa đào tạo sau đại học, Trung tâm đạo tào trực tuyến Elearning, Phòng đào tạo, Ban giám hiệu Viện Đại Học Mở Hà Nội tạo điều kiện thuận lợi cho em suốt trình thực luận án Em xin cảm ơn tập thể Lãnh đạo Viện Đại Học Mở Hà Nội, cán bộ, giảng viên Trung tâm đào tạo trực tuyến Elearning – Viện Đại Học Mở Hà Nội cổ vũ động viên em trình nghiên cứu Em cảm ơn tất người bạn em, người chia sẻ cổ vũ em lúc khó khăn em ln ghi nhớ điều Cuối cùng, em xin bày tỏ lịng biết ơn vơ hạn cha mẹ gia đình bên cạnh ủng hộ, giúp đỡ em MỤC LỤC PHẦN MỞ ĐẦU 1 Tính cấp thiết đề tài Mục tiêu luận văn Các đóng góp luận văn Bố cục luận văn CHƯƠNG : HỌC KHÔNG GIÁM SÁT CHO HỆ TƯ VẤN 1.1 Phát biểu toán tư vấn 1.1.1 Giới thiệu hệ tư vấn 1.1.2 Bài toán tư vấn 1.2 Phân loại hệ tư vấn 1.2.1 Phương pháp tư vấn dựa nội dung (Content-based) 10 1.2.2 Phương pháp lọc cộng tác (Collaborative Filtering) 16 1.2.3 Phương pháp lai (Hybrid) 17 1.3 Phương pháp học không giám sát UserBased 20 1.3.1 Phương pháp học có giám sát không giám sát 20 1.3.2.Phương pháp UserBased 21 1.4 Phương pháp học không giám sát ItemBased 27 1.4.1 Ý tưởng phương pháp ItemBased 27 1.4.2 Quy trình thực phương pháp ItemBased 28 1.4.3 Ví dụ minh họa 31 1.5 Hạn chế phương pháp học không giám sát 32 1.6 Kết luận chương 32 CHƯƠNG : HỌC BÁN GIÁM SÁT CHO HỆ TƯ VẤN 34 2.1 Giới thiệu học bán giám sát 34 2.1.1 Lịch sử phát triển sơ lược học bán giám sát 34 2.1.2 Khái niệm phương pháp học bán giám sát 35 2.1.3 Một số phương pháp học bán giám sát điển hình 37 2.2 Các vấn đề phương pháp lọc cộng tác 39 2.2.1 Hạn chế phương pháp UserBased ItemBased 41 2.2.2 Khắc phục hạn chế phương pháp lọc cộng tác 42 2.3 Bán giám sát tập láng giềng người dùng 43 2.4 Bán giám sát tập láng giềng sản phẩm 46 2.5 Thuật toán bán Semi-Learning-UserBased 49 2.6 Thuật toán bán Semi-Learning-ItemBased 53 2.7 Kết luận chương 57 CHƯƠNG 3: THỬ NGHIỆM VÀ ĐÁNH GIÁ 59 3.1 Dữ liệu thử nghiệm 59 3.2 Phương pháp thử nghiệm 60 3.3 Kết thử nghiệm phương pháp Semi-Learning-UserBased 61 3.4 Kết thử nghiệm phương pháp Semi-Learning-ItemBased 63 3.5 Kết luận 66 3.5.1 So sánh phương pháp 66 3.5.2 Kết luận 68 KẾT LUẬN 69 TÀI LIỆU THAM KHẢO 71 PHỤ LỤC TRIỂN KHAI CÀI ĐẶT CHƯƠNG TRÌNH 73 DANH MỤC CÁC CHỮ VIẾT TẮT Viết Tắt Tiếng Anh Tiếng Việt CF Collaborative Filtering Lọc cộng tác IF Information Filtering Lọc thông tin K-NN K Neareast Neighbor K người láng giềng gần KPC KNN Pearson Correlation Phương pháp K người láng giềng gần dựa độ tương quan Pearson LL Lazy Learning Học lười MFB Memory-Based Filtering Lọc dựa vào nhớ ML Machine Learning Học máy RS Recommender System Hệ thống tư vấn RecSys ACM Recommender Systems SIGIR ACM SIGIR Special Group On Information Retrieval SIGMOD ACM’s Special Interest Group on Management Of Data UMAP User Modeling, Adaptation and Personalization DANH MỤC CÁC HÌNH Hình 1.1 ví dụ phương pháp tư vấn dựa nội dung 11 Hình 1.2 Các bước thực tư vấn dựa nội dung 12 Hình 1.3 Ví dụ lọc cộng tác người dùng 22 Hình 1.4 Các bước thực lọc cộng tác người dùng 23 Hình 1.5 Ví dụ lọc cộng tác mục 28 Hình 1.6 Các bước thực lọc cộng tác mục 29 Hình 2.1 Phương pháp học bán giám sát Self-training 38 Hình 2.2 Phương pháp học bán giám sát Co-training 39 Hình 2.3 Thuật tốn Semi-Learning-UserBased 50 Hình 2.4 Thuật tốn Semi-Learning-ItemBased 54 Hình 3.1 Cài đặt phương pháp UserBased 75 Hình 3.2 Cài đặt phương pháp ItemBased 77 Hình 3.3 Cài đặt thuật tốn Semi-Learning-UserBased 82 Hình 3.4 Cài đặt thuật toán bán Semi-Learning-ItemBased 88 DANH MỤC CÁC BẢNG Bảng 1.1 Xếp hạng người dùng với phim Bảng 1.2 Danh sách phim thể loại 14 Bảng 1.3 Mức độ yêu thích người dùng với thể loại 14 Bảng 1.4 Mức độ yêu thích người dùng với phim 15 Bảng 1.5 Phân loại phương pháp lai 17 Bảng 1.6 Phương pháp lai trọng số 18 Bảng 1.7 Phương pháp lai hỗn hợp 19 Bảng 1.8.Tính độ tương đồng hai người sử dụng 26 Bảng 1.9.Tính độ tương đồng hai mục 31 Bảng 2.1 Ma trận đánh giá lọc cộng tác 40 Bảng 2.2 Ma trận đánh ước lượng theo người dùng 45 Bảng 2.3 Ma trận đánh ước lượng theo sản phẩm 48 Bảng 3.1 Giá trị MAE tập ml-100K 61 Bảng 3.2 Giá trị MAE tập ml-1M 62 Bảng 3.3 Giá trị MAE tập ml-10M 63 Bảng 3.4 Giá trị MAE tập ml-100K 64 Bảng 3.5 Giá trị MAE tập ml-1M 65 Bảng 3.6 Giá trị MAE tập ml-10M 65 Bảng 3.7 Giá trị MAE tập ml-100K 66 Bảng 3.8 Giá trị MAE tập ml-1M 67 Bảng 3.9 Giá trị MAE tập ml-10M 67 PHẦN MỞ ĐẦU 1.Tính cấp thiết đề tài Với gia tăng chưa thấy lượng thông tin Internet làm cho vấn đề tải thông tin trở nên trầm trọng người dùng dịch vụ trực tuyến Ví dụ ta muốn mua máy tính tìm từ khóa “computer” Amazone, ta nhận 11 triệu sản phẩm khác Điều khiến người dùng gặp nhiều khó khăn thực giao dịch thương mại điện tử Chính vậy, việc xây dựng công cụ trợ giúp người dùng lựa chọn thông tin phù hợp cần thiết cho người dùng nhà cung cấp thông tin Hệ tư vấn (recommendation system) đời hướng đến việc giảm tải thông tin cho người dùng cách đưa gợi ý thông tin phù hợp gỡ bỏ thông tin không phù hợp cho người dùng Đối với người dùng, hệ tư vấn tự động trợ giúp lựa chọn thông tin phù hợp vô số thông tin không phù hợp Đối với nhà cung cấp thông tin, hệ tư vấn không trợ giúp việc xác định loại thông tin cần cung cấp cho người dùng đơn lẻ mà cịn nhân tố nâng cao hiệu chất lượng dịch vụ cung cấp thông tin Hiện tại, nhiều hệ thống thương mại điện tử gặt hái thành công to lớn dựa vào hệ tư vấn, ví dụ Amazon, E-Bay, Netflix… Hệ tư vấn tiếp cận dựa hai kỹ thuật học máy: học không giám sát (unsupervised learning) học bán giám sát(supervised learning) Mỗi phương pháp khai thác khía cạnh riêng mơ hình huấn luyện mơ hình dự đốn Trong trình nghiên cứu triển khai ứng dụng, bên cạnh vấn đề chung toán tư vấn sản phẩm tính thưa thớt liệu huấn luyện, xử lý người dùng mới, hàng hóa u cầu áp dụng kỹ thuật học máy khác để nâng cao kết dự đoán cho lọc cộng tác trọng quan tâm nghiên cứu Mặc dù có nhiều nghiên cứu nhắm tới nội dung này, vấn đề nghiên cứu mở, có tính thời thu hút qua tâm cộng đồng nghiên cứu Đề tài “Lọc cộng tác phương pháp học bán giám sát” thực khuôn khổ luận văn thạc sĩ chuyên ngành công nghệ thông tin theo mục tiêu, đối tượng phương pháp nghiên cứu cụ thể sau Mục tiêu luận văn Mục tiêu luận văn nghiên cứu phương pháp học bán giám sát cho hệ tư vấn cách xây dựng hai thủ tục: giám sát phần tập láng giềng người dùng giám sát phần tập láng giềng sản phẩm Tiến hành thử nghiệm đánh giá kết liệu thực cộng đồng nghiên cứu cơng bố Các đóng góp luận văn Đóng góp luận văn đề xuất phương pháp học chuyển giao cho lọc cộng tác cách thiết lập hai chế học: học từ người dùng đến sản phẩm học từ sản phẩm đến người dùng Học theo người dùng phát tập nhãn phân loại tin cậy chuyển giao cho trình học theo sản phẩm Ngược lại, học theo sản phẩm suy luận tập số nhãn phân loại chắn chuyển giao cho trình học theo người dùng Hai trình học tương tác chuyển giao nhãn phân loại chắn cho làm tăng kết tư vấn hạn chế ảnh hưởng vấn đề liệu thưa lọc cộng tác Bố cục luận văn Nội dung luận văn trình bày Chương Trong đó: Chương 1.Trình bày kiến thức hệ tư vấn, phương pháp học có giám sát, khơng giám sát trình thuật tốn thuật tốn K-NN TOP-N Sau áp dụng thuật tốn K-NN dựa người dùng thuật toán TOP-N dựa item vào phương pháp học khơng giám sát Chương 2.Trình bày phương pháp học bán giám sát đề xuất phương pháp đồng huấn luyện sử dụng thuật toán Semi-Learning-UserBased Semi-LearningItemBased cách thiết lập hai chế học: học từ người dùng đến sản phẩm double mae = 0; // biến lưu giá trị user int userbase = -1; // duyệt từ đầu đến hết tập test for (int j = 0; j < vitri.size(); j++) { // System.out.println("nguoi dung thu " + (j + 1)); int user = vitri.get(j)[0] - 1; int item = vitri.get(j)[1] - 1; int rate = vitri.get(j)[2]; // đoạn xử lý việc tính tương quan cho người dùng với người dùng lại // user ví dụ dự đốn xong cho user chuyển sang dự đốn cho user tính lại tương quan cho user với user lại if (user != userbase) { // gán lại user userbase = user; //lưu lại giá trị tương quan người dùng userbase với người dùng lại // tuong_quan(userbase, arr) lớp Prediction_Cs để tính độ tương quan cho // người dùng userbase với người dùng lại c.value = c.tuong_quan(userbase, arr); } // lưu giá trị dự đoán vào ma trận arr1 arr1.get(user)[item] = c.result(user, item, arr); // giá trị dự đoán khác (tức dự đốn được) // để tính vào giá trị mae if (arr1.get(user)[item] != 0) { 74 // mae=mae+|giá trị dự đoán -giá trị thực tê| mae = mae + Math.abs(arr1.get(user)[item] - rate); // tăng biến đếm số lượng dự đoán lên 1; totalsize++; //System.out.println("san pham " + value[0] + " - " + value[1] + " - " + value[2]); } } System.out.println(); System.out.println("tu van theo user-base"); // in giá trị mae System.out.println("sai so " + (double) mae / totalsize); } } Hình 3.1.Cài đặt phương pháp UserBased 1.2 Cài đặt phương pháp ItemBased public class TestItemBased { // giá trị k láng giềng gần public int kitem; public void optimize() { Prediction_Item c = new Prediction_Item(); c.k_item = kitem; Read100KBase r = new read_data.Read100KBase(); // đọc ma trận đánh giá từ tập base 75 ArrayList arr = r.docfile1(); // đọc ma trận đánh giá từ tập base ArrayList arr1 = r.docfile1(); double[] value; read_data.Read100kTest rk = new Read100kTest(); // dọc file test ArrayList vitri = rk.docFile(); // biến đổi tập test dạng // hàng sản phẩm, giá trị hàng người dùng đánh giá sản phẩm ArrayList vitri1 = rk.item100K(vitri); // duyệt arrayList vừa biến đổi tập test for (int j = 0; j < vitri1.size(); j++) { // hàng item int item = j; // sản phẩm có người dùng đánh giá tính tương quan cho sản phẩm với sản phẩm lại if (vitri1.get(j).size() != 0) { c.value = c.tuong_quan(item, arr); } // duyệt người dùng sản phẩm for (int i = 0; i < vitri1.get(j).size(); i++) { // System.out.println("nguoi dung thu " + (j + 1)); int user = vitri1.get(j).get(i); // đưa dự đoán arr1.get(user)[item] = c.result(user, item, arr); // System.out.println(user + " : " + item + " - " + arr1.get(user)[item]); } 76 } System.out.println(); System.out.println("tu van theo item-base"); //System.out.println(vitri.size()); // tính mae theo lớp MAE package read_data System.out.println("sai so " + new read_data.MAE().caculater(vitri, arr1)); } } Hình 3.2.Cài đặt phương pháp ItemBased 1.3 Cài đặt thuật toán Semi-Learning-UserBased public class TestSemiLearningUserBased { // số đánh giá chung tối thiểu hai người dùng int Ucommon; // số đánh giá chung tối thiểu hai sản phẩm int Itcommon; // độ tương quan mà hai người dùng , sản phẩm phải lớn double limUs, limIt; // hàm copy giá trị dự đoán vào ma trận đánh giá ban đầu sau bước chuyển giao public void copy(ArrayList index, ArrayList after) { for (int i = 0; i < index.size(); i++) { int user = (int) index.get(i)[0]; int item = (int) index.get(i)[1]; double rate = index.get(i)[2]; 77 after.get(user)[item] = rate; } } public void optimize() { Read100KBase xl = new Read100KBase(); // đọc ma trận đánh giá từ tập base để huấn luyện ArrayList arr = xl.docfile1(); // đọc ma trận đánh giá từ tập base ArrayList arr1 = xl.docfile1(); PreProcess_Cs pr = new PreProcess_Cs(); // gán số lương đánh giá chung tối thiểu pr.Prcommon = Itcommon; // gán độ tương quan hai người dùng phải lớn pr.lim = limUs; Prediction_Cs prs = new Prediction_Cs(); System.out.println(pr.Prcommon + " - " + pr.lim); Preprocess_Item pri = new Preprocess_Item(); pri.Urcommon = Ucommon; pri.lim = limIt; System.out.println(pri.Urcommon + " - " + pri.lim); Precidiction_Item pcd = new Precidiction_Item(); // doc du lieu test read_data.Read100kTest test = new Read100kTest(); // đọc liệu từ tập test ArrayList input = test.docFile(); // biến đổi tập test dạng môi hàng người dùng, phần tử sản phẩm mà người dùng đánh giá 78 ArrayList vitri = test.user100K(input); // biến đổi tập test dạng // hàng sản phẩm, giá trị hàng người dùng đánh giá sản phẩm ArrayList vitri1 = test.item100K(input); // biến đếm số lượng đánh giá dự đoán sau vòng lặp // sau vong lặp mà dem=0 dừng lại khơng có đánh giá dự đốn int dem; // đếm số vịng lặp int count = 0; // lưu giá trị đánh giá dự đoán để copy vào ma trận gốc ArrayList index; double[] value; System.out.println("start"); { dem = 0; // theo nguoi dung System.out.println("theo nguoi dung"); index = new ArrayList(); // tính tốn tập láng giềng cho tất người dùng prs.value = pr.neiborhood(arr); //duyệt người dùng for (int j = 0; j < vitri.size(); j++) { int user = j; // duyệt sản phẩm người dùng j đánh giá for (int i = 0; i < vitri.get(j).size(); i++) { int item = vitri.get(j).get(i); // if (arr1.get(user)[item] == 0) { 79 // đưa dự đoán arr1.get(user)[item] = prs.result(user, item, arr); // dự đoán khác if (arr1.get(user)[item] != 0) { // xoa vitri1 (san pham,nguoi dung) value = new double[]{ user, item, arr1.get(user)[item] }; // System.out.println(user + "-" + item + " : " + value[2]); // lưu vào arrayList index index.add(value); if (vitri1.get(item).remove((Integer) user)) { }; // xoa vitri (nguoi dung,san pham) // xóa vị trí dự đoán dược arrayList vitri vitri.get(j).remove(i); // giảm số duyệt xuống i = i - 1; dem++; } // } } } // sau bước học theo người dùng vị trí dự đốn xóa hai arrayList vitri vitri1 80 // theo sản phẩm // thưc copy vị trí dự đốn vào ma trận gốc arr copy(index, arr); System.out.println(" - du doan theo san pham -"); // khởi tạo lại arrayList index để lưu giá trị dự đoán index = new ArrayList(); //tính giá trị hàng xóm cho tất sản phẩm pcd.value = pri.neiborhood(arr); // duyệt sản phẩm for (int j = 0; j < vitri1.size(); j++) { int item = j; // duyệt người dùng for (int i = 0; i < vitri1.get(j).size(); i++) { int user = vitri1.get(j).get(i); // if (arr1.get(user)[item] == 0) { // đưa dự đoán arr1.get(user)[item] = pcd.result(user, item, arr); if (arr1.get(user)[item] != 0) { // xoa vitri (nguoi dung,san pham) value = new double[]{ user, item, arr1.get(user)[item] }; // System.out.println(user + "-" + item + " : " + value[2]); // lưu lại giá trị dự đoán index.add(value); 81 if (vitri.get(user).remove((Integer) item)) { }; // xoa vitri1 (san pham,nguoi dung) vitri1.get(j).remove(i); i = i - 1; // tăng biến đếm lên dem++; } // } } } copy(index, arr); count++; System.out.println(count); } while (dem != 0); System.out.println("theo user-cotrainning"); read_data.MAE ma = new MAE(); // tính mae System.out.println("MAE " + ma.caculater(input, arr)); } } Hình 3.3.Cài đặt thuật toán Semi-Learning-UserBased 1.4 Cài đặt thuật toán bán Semi-Learning-ItemBased public class Test SemiLearningItemBased { // số đánh giá chung tối thiểu hai người dùng 82 int Ucommon; // số đánh giá chung tối thiểu hai sản phẩm int Itcommon; // độ tương quan mà hai người dùng , sản phẩm phải lớn double limUs, limIt; // hàm copy giá trị dự đoán vào ma trận đánh giá ban đầu sau bước chuyển giao public void copy(ArrayList index, ArrayList after) { for (int i = 0; i < index.size(); i++) { int user = (int) index.get(i)[0]; int item = (int) index.get(i)[1]; double rate = index.get(i)[2]; after.get(user)[item] = rate; } } public void optimize() { Read100KBase xl = new Read100KBase(); // đọc ma trận đánh giá từ tập base để huấn luyện ArrayList arr = xl.docfile1(); // đọc ma trận đánh giá từ tập base ArrayList arr1 = xl.docfile1(); PreProcess_Cs pr = new PreProcess_Cs(); Prediction_Cs prs = new Prediction_Cs(); // gán số lương đánh giá chung tối thiểu pr.Prcommon = Itcommon; // gán độ tương quan hai người dùng phải lớn 83 pr.lim = limUs; Preprocess_Item pri = new Preprocess_Item(); Precidiction_Item pcd = new Precidiction_Item(); pri.Urcommon = Ucommon; pri.lim = limIt; // doc du lieu test read_data.Read100kTest test = new Read100kTest(); // đọc liệu từ tập test ArrayList input = test.docFile(); // biến đổi tập test dạng môi hàng người dùng, phần tử sản phẩm mà người dùng đánh giá ArrayList vitri = test.user100K(input); // biến đổi tập test dạng // hàng sản phẩm, giá trị hàng người dùng đánh giá sản phẩm ArrayList vitri1 = test.item100K(input); // biến đếm số lượng đánh giá dự đốn sau vịng lặp // sau vong lặp mà dem=0 dừng lại khơng có đánh giá dự đốn int dem; // đếm số vòng lặp int count = 0; // lưu giá trị đánh giá dự đoán để copy vào ma trận gốc ArrayList index; double[] value; System.out.println("start"); { dem = 0; 84 System.out.println(" - du doan theo san pham -"); index = new ArrayList(); // tính tốn tập láng giềng cho tất sản phẩm pcd.value = pri.neiborhood(arr); //duyệt sản phẩm for (int j = 0; j < vitri1.size(); j++) { int item = j; // duyệt người dùng đánh giá sản phẩm j for (int i = 0; i < vitri1.get(j).size(); i++) { int user = vitri1.get(j).get(i); // if (arr1.get(user)[item] == 0) { // đưa dự đoán arr1.get(user)[item] = pcd.result(user, item, arr); // dự đoán khác if (arr1.get(user)[item] != 0) { value = new double[]{ user, item, arr1.get(user)[item] }; // System.out.println(user + "-" + item + " : " + value[2]); // lưu vào arrayList index index.add(value); // xóa vị trí dự đốn dược arrayList vitri if (vitri.get(user).remove((Integer) item)) { }; // xóa vị trí dự đốn dược arrayList vitri1 85 vitri1.get(j).remove(i); // giảm số duyệt xuống i = i - 1; dem++; } // } } } // sau bước học theo sản phẩm vị trí dựu đốn xóa hai arrayList vitri vitri1 // theo nguoi dung System.out.println("theo user"); // thưc copy vị trí dự đốn vào ma trận gốc arr copy(index, arr); // khởi tạo lại arrayList index để lưu giá trị dự đốn index = new ArrayList(); //tính giá trị hàng xóm cho tất người dùng prs.value = pr.neiborhood(arr); // duyệt người dùng for (int j = 0; j < vitri.size(); j++) { int user = j; // duyệt sản phẩm for (int i = 0; i < vitri.get(j).size(); i++) { int item = vitri.get(j).get(i); // if (arr1.get(user)[item] == 0) { // đưa dự đoán arr1.get(user)[item] = prs.result(user, item, arr); 86 if (arr1.get(user)[item] != 0) { // xoa vitri1 (san pham,nguoi dung) value = new double[]{ user, item, arr1.get(user)[item] }; // lưu lại giá trị dự đoán index.add(value); if (vitri1.get(item).remove((Integer) user)) { }; // xoa vitri (nguoi dung,san pham) vitri.get(j).remove(i); i = i - 1; // tăng biến đếm lên dem++; } //} } } copy(index, arr); count++; System.out.println(count); } while (dem != 0); System.out.println("theo item-cotrainning"); // tính mae 87 System.out.println("sai so " + (double) new read_data.MAE().caculater(input, arr)); } } Hình 3.4.Cài đặt thuật toán bán Semi-Learning-ItemBased 88 ... dùng 1.3 Phương pháp học khơng giám sátUserBased 1.3.1 Phương pháp học có giám sát khơng giám sát 1.3.1.1 Phương pháp học có giám sát Học giám sát (supervised learning) phương pháp học máy xây... pháp học bán giám sát Co-training 2.2 Các vấn đề phương pháp lọc cộng tác Trong phương pháp học khơng giám sát đề cập chương em sử dụng phương pháp lọc cộng tác Phương pháp lọc cộng tác điển... sơ lược học bán giám sát 34 2.1.2 Khái niệm phương pháp học bán giám sát 35 2.1.3 Một số phương pháp học bán giám sát điển hình 37 2.2 Các vấn đề phương pháp lọc cộng tác

Ngày đăng: 08/02/2021, 21:26

Tài liệu cùng người dùng

Tài liệu liên quan