Sau khi thực hiện lấy dữ liệu chia sẻ từ web site của GroupLens, chúng tơi đã tìm hiểu và phân tích dữ liệu và xây dựng chương trình giả lập dựa vào tập dữ liệu cĩ được. Các tập dữ liệu chia sẻ của MovieLens bao gồm:
u.data: File dữ liệu chứa tồn bộ dữ liệu của 100035 đánh giá của 943 khách hàng cho 1682 sản phẩm đưa ra. Mỗi khách hàng cĩ số lượng đánh giá ít nhất 20 sản phẩm. Các khách hàng và các sản phẩm được đánh số bắt đầu từ 1 và được đánh số hồn tồn ngẫu nhiên với các thơng tin về khách hàng bao gồm mã khách hàng (UserID), mã sản phẩm (ItemID) và giá trị đánh giá của khách hàng về sản phẩm (Rating - nhận các giá trị trong tập {1,2,3,4,5}). Tập dữ liệu u.data được đưa vào bảng rating_table cơ sở dữ liệu MySQL với cấu trúc như sau: Tên Trƣờng Mơ tả Kiểu dữ liệu Câu lệnh thực hiện
UserID Mã khách hàng int(10) CREATE TABLE `rating_table` ( `UserID` int(10) NOT NULL DEFAULT '0',
`ItemID` int(10) NOT NULL DEFAULT '0',
`Rating` int(2) NOT NULL DEFAULT '0',
ItemID Mã sản phẩm int(10)
Rating Đánh giá của khách hàng đối với sản phẩm
(`UserID`,`ItemID`), KEY `ItemID` (`ItemID`,`UserID`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; Hình 18. Cấu trúc bảng Rating
u.item: File dữ liệu chứa tồn bộ thơng tin về các sản phẩm mà cụ thể là thơng tin về thuộc tính của các bộ phim (Movie). Các thuộc tính của mỗi bộ phim bao gồm: Movie id | movie title | release date | unknown | Action | Adventure | Animation |Children's | Comedy | Crime | Documentary | Drama | Fantasy | Film-Noir | Horror | Musical | Mystery | Romance | Sci-Fi |Thriller | War | Western. Đối với 19 thuộc tính sau cùng, mỗi bộ phim được nhận giá trị bằng 1 hoặc 0 nếu bộ phim (MovieID) thuộc tính đĩ hoặc khơng tương ứng. Mỗi bộ phim cĩ thể đồng thời cĩ một hoặc nhiều thuộc tính. Tập dữ liệu
u.item được đưa vào bảng item trong cơ sở dữ liệu MySQL với cấu trúc như sau: Tên Trƣờng Mơ tả Kiểu dữ liệu Câu lệnh thực hiện
ItemID Mã sản phẩm int(10) CREATE TABLE `item` (
`itemid` int(10) NOT NULL DEFAULT '0',
`title` varchar(255) DEFAULT NULL,
`release_date` varchar(50) DEFAULT NULL,
`f1` int(1) DEFAULT NULL, `f2` int(1) DEFAULT NULL, `f3` int(1) DEFAULT NULL, `f4` int(1) DEFAULT NULL, `f5` int(1) DEFAULT NULL, `f6` int(1) DEFAULT NULL, `f7` int(1) DEFAULT NULL, `f8` int(1) DEFAULT NULL, `f9` int(1) DEFAULT NULL, `f10` int(1) DEFAULT NULL, `f11` int(1) DEFAULT NULL, `f12` int(1) DEFAULT NULL, `f13` int(1) DEFAULT NULL, title Tên phim varchar(255)
release_date Ngày phát hành date f1 unknown int(1) f2 Action int(1) f3 Adventure int(1) f4 Animation int(1) f5 Children's int(1) f6 Comedy int(1) f7 Crime int(1) f8 Documentary int(1) f9 Drama int(1) f10 Fantasy int(1) f11 Film-Noir int(1) f12 Horror int(1) f13 Musical int(1) f14 Mystery int(1) f15 Romance int(1)
f16 Sci-Fi int(1) `f14` int(1) DEFAULT NULL, `f15` int(1) DEFAULT NULL, `f16` int(1) DEFAULT NULL, `f17` int(1) DEFAULT NULL, `f18` int(1) DEFAULT NULL, `f19` int(1) DEFAULT NULL, PRIMARY KEY (`itemid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; f17 Thriller int(1) f18 War int(1) f19 Western int(1) Hình 19. Cấu trúc bảng Item
u.user: File dữ liệu chứa tồn bộ thơng tin về khách hàng cụ thể. Các thuộc tính của mỗi khách hàng bao gồm về mã khách hàng (UserID), độ tuổi khách hàng, Giới tính, nghề nghiệp.Tập dữ liệu u.user được đưa vào bảng user_file
trong cơ sở dữ liệu MySQL với cấu trúc như sau:
Tên Trƣờng
Mơ tả Kiểu dữ liệu
Câu lệnh thực hiện
ItemID Mã sản phẩm int(10) CREATE TABLE `user_file` (
`user_id` int(10) unsigned NOT NULL DEFAULT '0',
`age` int(3) DEFAULT NULL, `gender` char(1) DEFAULT NULL, `occupation` varchar(255) DEFAULT NULL, `f1` int(1) DEFAULT '0', `f2` int(1) DEFAULT '0', `f3` int(1) DEFAULT '0', `f4` int(1) DEFAULT '0', `f5` int(1) DEFAULT '0', `f6` int(1) DEFAULT '0', `f7` int(1) DEFAULT '0', `f8` int(1) DEFAULT '0', `f9` int(1) DEFAULT '0', `f10` int(1) DEFAULT '0', `f11` int(1) DEFAULT '0', `f12` int(1) DEFAULT '0', `f13` int(1) DEFAULT '0', `f14` int(1) DEFAULT '0', `f15` int(1) DEFAULT '0', Age Tuổi khác hàng int(3) Gender Giới tính char(1) Occupation Nghề nghiệp varchar(255)
f1 Male int(1) f2 Female int(1) f3 10-24 tuổi int(1) f4 25-44 tuổi int(1) f5 >44 tuổi int(1) f6 technician int(1) f7 other int(1) f8 writer int(1) f9 executive int(1) f10 administrator int(1) f11 student int(1) f12 lawyer int(1) f13 scientist int(1) f14 librarian int(1) f15 homemaker int(1)
f17 salesman int(1) `f16` int(1) DEFAULT '0', `f17` int(1) DEFAULT '0', `f18` int(1) DEFAULT '0', `f19` int(1) DEFAULT '0', PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
f18 doctor int(1)
f19 retired int(1)
Hình 20. Cấu trúc bảng User
u.base và u.test : Tập dữ liệu đào tạo và tập dữ liệu kiểm tra được chia ngẫu nhiên từ tập dữ liệu u.data theo tỉ lệ 80% (Cho tập dữ liệu đào tạo) và 20% (Cho tập dữ liệu kiểm tra). Các tập dữ liệu u.base được đưa vào các bảng dữ liệu ubase tương ứng trong cơ sở dữ liệu MySQL với cấu trúc giống như cấu trúc của bảng rating_table (lưu trữ dữ liệu của tập dữ liệu u.data). Các tập dữ liệu u.test được đưa vào bảng dữ liệu utest tương ứng trong cơ sở dữ liệu MySQL với cùng cấu trúc như sau:
Tên Trƣờng
Mơ tả Kiểu dữ liệu
Câu lệnh thực hiện
UserID Mã khách hàng int(10) CREATE TABLE `u1test` ( `UserID` int(10) NOT NULL DEFAULT '0', `ItemID` int(10) NOT NULL DEFAULT '0', `Rating` int(2) DEFAULT '0',
`CBRat` int(2) DEFAULT NULL,
`CBScore` double DEFAULT NULL,
`CFRat` int(2) DEFAULT '0', `CFScore` double DEFAULT NULL, PRIMARY KEY (`UserID`,`ItemID`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; ItemID Mã sản phẩm int(10)
Rating Đánh giá của khách hàng đối với sản phẩm
int(2) CBRat Kết quả dự đốn đánh giá khách
hàng đối với sản phẩm của chương trình theo phương pháp tư vấn dựa nội dung.
int(2)
CBScore Điểm đánh giá lớn nhất tương ứng của chương trình theo phương pháp tư vấn dựa nội dung.
double
CFRat Kết quả dự đốn đánh giá khách hàng đối với sản phẩm của chương trình theo phương pháp tư vấn dựa cộng tác.
int(2)
CFScore Điểm đánh giá lớn nhất tương ứng của chương trình theo phương pháp tư vấn dựa cộng tác.
double