Hệ thống được xây dựng nhằm đạt một số mục tiêu về mặt hiệu suất thực hiện cho các hệ thống e – learning:
Hạn chế việc quá tải thông tin: Khi có quá nh iều khóa học để lựa chọn, hê ̣ tư vấn có thể đoán những khóa học nào đáng quan tâm, có tầm quan tro ̣ng, và hấp dẫn và có khả năng được đăng ký cao nhất.
Cải tiến hiệu năng: Thậm chí trong những trường hợp mà sinh viên không có mô ̣t số lượng lớn các khóa học để lựa chọn, hê ̣ tư vấn có thể cải tiến hiệu năng của hệ thống bằng cách dự đoán các khóa học mà sinh viên quan tâm
Cải tiến tốc độ truy cập : Hệ tư vấn có thể đoán những khóa học nào mà sinh viên quan tâm nhất để tham gia vào khóa học đó, nó cho phép sinh viên tạo ra những khóa học có sẵn và có tính nổi bật này tới những sinh viên khác.
4.2. Thuâ ̣t toán tƣ vấn trong E-Recommender
E - Recommender sẽ đưa ra danh sách các khóa học mà một sinh viên có khả năng tham gia và tìm những mục đích thực tế trong khóa học đó. E- Recommender được
xây dựng dựa trên phần mềm mã nguồn mở CoFE (Collaborative Filtering Engine) [43]. Ở đây , chúng tôi cài đặt hai thuật toán, thuật toán lọc cộng tác đơn giản và lọc cộng tác dựa trên mô hình quan hệ xác suất.
4.2.1. Thuật toán lọc cộng tác đơn giản
4.2.1.1. Thuật toán tính toán độ tƣơng tự
Mô ̣t bước quan tro ̣ng trong các thuâ ̣t toán lo ̣c cô ̣ng tác dựa trên mô hình là tính toán độ tương tự giữa các khóa học và sau đó lựa chọn các khóa học có độ tương tự cao nhất. Ý tưởng chính trong việc tính toán độ tương tự giữa hai khóa học i và j là phải tách đươ ̣c những sinh viên đã đánh giá cho cả hai khóa ho ̣c và sau đó áp du ̣ng kỹ thuâ ̣t tính đô ̣ tương tự để quyết đi ̣nh đô ̣ tương tự s ij. Cách thức tính độ tương tự chúng tôi lựa cho ̣n là đô ̣ tương tự dựa trên tương quan (correlation).
Độ tương tự giữa hai khóa ho ̣c i và j được đo bằng cách tính tương quan Pearson-r corrij. Trướ c hết, chúng tôi phải cô lập những sinh viên đã đánh giá cả hai sản phẩm. Tâ ̣p những sinh viên đã đánh giá cả hai khóa ho ̣c i và j kí hiệu là U , khi đó đô ̣ tương tự tương quan được cho bởi công thức:
U u u j j U u ui i U u ui i u j j j i R R R R R R R R corr j i sim 2 , 2 , , , , ) ( ) ( ) )( ( ) , (
Trong đó, Ru,i là đánh giá của sinh viên u đối với khóa học i, Ri là đánh giá trung bình của khóa học i.
4.2.2. Thuật toán tính toán dự đoán
Bước quan tro ̣ng nhất trong các hê ̣ thống tư vấn dựa trên lo ̣c cô ̣ng tác là sinh ra các kết quả dưới dạng dự đoán . Sau khi, đã tách được tâ ̣p những khóa ho ̣c tương t ự nhất dựa trên đô ̣ đo tương quan, chúng ta sẽ tìm trong cá c đánh giá của sinh viên hiê ̣n tại và sử dụng kỹ thuâ ̣t sinh dự đoán dựa trên tro ̣ng số:
Kỹ thuật này sẽ tính toán dự đoán cho một khóa học i đối vớ i sinh viên u bằng cách tính tổng các đánh giá mà sinh viên đã đưa ra cho các khóa học tương tự với i . Mỗi đánh giá được gán cho tro ̣ng số chính bằng đô ̣ tương tự giữa s ij giữa hai khóa ho ̣c i và j. Mô ̣t cách hình thức, dự đoán được kí hiê ̣u Pu,i:
N ngtu khoahoctuo iN N ngtu khoahoctuo iN uN i u S R S P , , , , , , ) ( ) * (
Về cơ bản , thuâ ̣t toán nà y cố gắng tìm ra cách thức sinh viên hiê ̣n ta ̣i đánh giá các khóa học tương tự . Tổng có tro ̣ng số chia cho tổng số các đô ̣ tương tự để thu được dự đoán trong khoảng cho trước.
4.2.3. Xác định đánh giá trong hệ tƣ vấn
Lọc cộng tác là môi trường trong đó một cộng đồng người tụ lại để cùng chia sẻ gánh nặng chọn lọc thông tin. Ví dụ, mô ̣t hê ̣ thống ho ̣c trực tuyến với 50 khóa học. Bất kỳ sinh viên nào cũng không thể có thời gian học hết 50 khóa học đó, nhưng có mô ̣t nhóm 50 sinh viên , mỗi sinh viên của nhóm có thể ho ̣c mô ̣t khóa học và thẩm định chất lươ ̣ng của khóa học đó. Chúng tôi cho rằng sinh viên đánh giá khóa học có nghĩa là họ đưa cho chúng ta một đánh giá - Rating. Nếu đánh giá của sinh viên cho khóa học đó đủ cao thì khóa học đó sẽ được tư vấn có các sinh viên còn lại. Nếu lần lượt học từng khóa học , sinh viên sẽ mất nhiều thời gian để ho ̣c 50 khóa học đó và tìm những thứ bổ ích trong các môn đ ó. Trong thực tế, không mô ̣t sinh viên nào có thể có cùng những sở thích hay sự quan tâm của mình cho sinh viên khác . Ví dụ, chúng tôi kiểm tra sự đánh giá của mô ̣t sinh viên là A, và tìm ra 10 sinh viên khác trong nhóm có những đáng giá tương tự như sinh viên A, là những người cũng học khoảng 3 khóa học như A và có cùng đánh giá với A. Ví dụ Sinh viên A có thể tham gia đăng ký vào Bộ môn Công nghê ̣ phần mềm và rất quan tâm đến các khóa học trong đó , do vâ ̣y sinh viên A sẽ ho ̣c và đánh giá tốt các khóa học khác liên quan đến bộ môn đó. Sinh viên A có thể có sự tương tự với 10 sinh viên khác có cùng quan tâm tới các khóa học và đánh giá có chất lượng tốt các khóa học đó. Và chúng tôi gọi những sinh viên đó là “láng giềng” của sinh viên A . Khi chúng tôi đã xác nhâ ̣n được “ láng giềng” của sinh viên A, chúng tôi có thể xem xét các khóa học đã được đánh giá có chất lượng đó qua “láng giềng” của sinh viên A , mà sinh viên A chưa tham gia vào . Sau đó chúng tôi sẽ tư vấn những khóa học đó cho sinh viên A để có thể tham gia vào khóa học đó. Mô ̣t danh sách các khóa học như vâ ̣y được biết như là mô ̣t tâ ̣p các tư vấn.
4.2.4. Các phƣơng phá p thể hiê ̣n cho viê ̣c đánh giá
Hê ̣ tư vấn đưa ra các đánh giá như là đầu vào và sau đó đưa ra sự tư vấn và đoán trước ở kết quả, E-Recommedner có 3 phương pháp cho viê ̣c đánh giá.
Đánh giá dữ liê ̣u đa giá tri ̣: Mỗi mô ̣t đánh giá là mô ̣t số trong mô ̣t tỉ lê ̣ đã được đi ̣nh nghĩa trước . Mức thấp chỉ cho thấy là khóa học đó ít được quan tâm và sinh viên cảm thấy rằng khóa học đó không phù hợp . Còn ở mức cao chỉ cho thấy khóa học đó có giá trị cao và được quan tâm nhiều . Đánh giá đa giá tri ̣ đưa ra trong hê ̣ tư vân này có tỷ lê ̣ là từ 1 đến 5.
Dữ liêu nhi ̣ phân: Mỗi đánh giá sẽ là 0 hoă ̣c 1, ví dụ chúng tôi có thể đưa ra một
số các câu hỏi để hỏi sinh viên “Ba ̣n có muốn ho ̣c mô ̣n ho ̣c đó không ?” Trả lời. Có hoặc không? Nếu có thì đánh giá là 1, còn không thì đánh giá là 0.
Dữ liê ̣u đơn phân (Unary): Dữ liê ̣u này đòi hỏi phức ta ̣p . Nếu ba ̣n là mô ̣t quản
trị trong hệ học tập trực tuyến, bạn sẽ phải đưa ra các bản ghi liên quan đến sinh viên của ba ̣n . Và bạn biết chính xác rằng khóa học nào mà họ tham gia . Thực tết rằng mô ̣t sinh viên có thể tham gia vào mô ̣t khóa học được chỉ dẫn là có khả năng xẩy ra cao mà sinh viên tham gia và ho ̣c khóa học đó. Do đó chúng tôi sẽ phải có một sự đánh giá chắc chắn . Tuy nhiên, vì sinh viên không tham gia vào khóa học cụ thể nào , nên chúng tôi thực sự sự không thể hướng dẫn rằn g ho ̣ không thích khóa học đó. Do đó đây thực ra chỉ là mô ̣t giá tri ̣ đánh giá và dữ liê ̣u thì không phải là nhi ̣ phân.
Hiê ̣n ta ̣i E-Recommender được thiết kế và thử nghiê ̣m tốt nhất cho viê ̣c đánh giá dữ liê ̣u đa giá tri ̣. Tuy nhiên nó cũng có thể rất thành công với dữ liê ̣u nhi ̣ phân . Còn dữ liê ̣u đơn phân thì là vấn đề rất khó. E-Recommender sẽ chỉ làm việc với dữ liệu đơn phân nếu chúng ta chuyển dữ liê ̣u về da ̣ng nhi ̣ phân hoă ̣c dữ liê ̣u đánh giá đa giá tri ̣.
4.2.2. Thuật toán dựa trên mô hình quan hệ xác suất PopAlgorithm
4.2.2.1. Thiết lập các thuộc tính xác suất
Giữa Khoahoc và Bomon, chúng tôi thêm vào một thuộc tính quan hệ xác suất XSPT thể hiện xác suất một Khoahoc thuộc vào một bộ môn nào đó. Ví dụ, khóa học Nhập môn Công nghệ phần mềm có 80% kiến thức thuộc chuyên ngành CNPM và
20% kiến thức thuộc vào chuyên ngành Các hệ thống thông tin, xác suất thiết đặt cho môn học này tương ứng với các bộ môn CNPM và CHTTT là 0.8 và 0.2.
4.2.2.2. Xác định độ tƣơng tự giữa các khóa học
Độ tương tự giữa hai khóa học i và j được xác định bằng công thức sau: Si,j = 1 – (|P(i)-P(j)|)
4.2.2.3. Thuật toán tính toán dự đoán và lấy top – N tƣ vấn
Thuật toán sinh dự đoán và tư vấn cho sinh viên A
If (A là sinh viên mới) then Không thể sinh tư vấn Else
Lấy ra danh sách các khóa học A đã tham gia K(A)
Tính toán độ tương tự của các khóa học còn lại với từng khóa học kK(A)
Chọn N khóa học có độ tương tự cao nhất để tư vấn End if
4.3. Cài đặt thuâ ̣t toán
4.3.1. Thuật toán lọc cộng tác đơn giản CFAlgorithm
Mô ̣t trong nhữn bước đầu tiên để thực hiê ̣n mô ̣t thuâ ̣t toán trong E- Recommender là tạo ra một lớp mới để thực thi giao diện thuật toán CFAlgorithm . Giao diê ̣n này c ó 3 phương thức mà E-Recommender sử du ̣ng để đoán đánh giá hoă ̣c lấy các tư vấn. Những phương thức này là:
public interface CFAlgorithm {
public ItemPrediction predictRating(int SinhvienID, int MonhocID) throws CFNotImplementedException;
public ItemPrediction[] getRecommendations(int activeSinhvien, int n) throws SQLException, CFNotImplementedException;
public ItemPrediction[] getRecommendationsByType(int activeSinhvien,
int n,int Bomon) throws SQLException, CFNotImplementedException;
public void updateUser(int SinhvienID) throws CFNotImplementedException;
public long getAveragePredictionTime() throws CFNotImplementedException; public String toString();
}
Nếu thuâ ̣t toán không được thực hiê ̣n mô ̣t trong các phương thức trên trong giao diê ̣n , phương thức đó được trả về a CFNotImplementedException. Thuật đoán được thực hiê ̣n trong gói org.recommender.algorithms.
4.3.1.1. Dƣ̣ đoán mô ̣t Đánh giá
ItemPrediction predictRating(int SinhvienID, int MonhocID)
throws CFNotImplementedException;
Phương thức này trả về mô ̣t đối tượng chứa giá tri ̣ mà thuâ ̣t toán đoán trước mô ̣t sinh viên sẽ đánh giá mô ̣t khóa học. Sinh viên được xác đi ̣nh bằng SinhvienID , và khóa ho ̣c được xác đi ̣nh bằng MonhocID . Đó là những trường nhâ ̣n biết duy nhất cho sinh viên và khóa học trong hê ̣ tư vấn E-Recommender
Dữ liê ̣u đang thực hiê ̣n sẽ được giới ha ̣n bới giá tri ̣ đánh giá lớn nhất và nhỏ nhất (đươ ̣c xác đi ̣nh qua đối tượng RatingData ), và giá trị được đoán phải nằm trong khoảng này
Đánh giá được đoán trước được trả về theo SinhvienID và MonhocID trong mô ̣t đối tươ ̣ng ItemPrediction.
4.3.1.2. Lấy Top-N tƣ vấn
ItemPrediction[] getRecommendations(int activeSinhvien, int n)
Phương thức này trả về mô ̣t mảng các đối tượng ItemPrediction. Mảng sẽ đươ ̣c lưu trữ bằng cách xếp loa ̣i của khóa học. Nếu thuâ ̣t tón không đưa ra N tư vấn thì nó trả về một mạng có giá trị nhỏ hơn . Nếu thuâ ̣t toán có thể dự đoán đánh giá , mỗi đối tươ ̣ng ItemPrediction trong mảng sẽ có đáng giá đã được dự đoán cho viê ̣c tư vấn.
4.3.1.3. Lấy Top-N tƣ vấn theo Bộ môn
ItemPrediction[] getRecommendationsByType(int activeSinhvien, int n, int Bomon)
throws SQLException, CFNotImplementedException;
Phương thức này giống như phương thức getRecommendations(), Ngoại trừ nó sẽ có một b iến Integer go ̣i là BomonID. Trong Hệ tư vấn này , các khóa học được nhóm vào theo từng bộ môn . Giá trị trả về của phương thức này giống như của
getRecommendations()nhưng tất cả tư vấn phải là cùng Bô ̣ môn đã được đưa ra.
4.3.1.4. Cập nhâ ̣t sinh viên
void updateUser(int SinhvienID)
Hê ̣ tư vấn go ̣i phương thức này khi mô ̣t sinh viên được chỉnh sửa bằng cách thêm, xóa và chỉnh sửa một đánh giá.
4.3.1.5. Thờ i gian dƣ̣ đoán trung bình
long getAveragePredictionTime()
Phương thức này rất có ích để kiểm thử , nó trả về kết quả thời gian trung bình khi mô ̣t có mô ̣t dự đoán được ta ̣o ra . Điều này dễ dàng được thực hiê ̣n theo đoa ̣n code dưới đây:
public class YourAlgorithm implements CFAlgorithm {
private long NumPredictions = 0; private long Time = 0;
public ItemPrediction predictRating(int activeSinhvien, int Monhoc) throws CFNotImplementedException {
long startTime = System.currentTimeMillis(); ...
long stopTime = System.currentTimeMillis(); NumPredictions++;
Time += (stopTime - startTime); return predictedRating;
}
public long getAveragePredictionTime() throws CFNotImplementedException { return (Time / NumPredictions);
}
}
4.3.2. Thuật toán PopAlgorithm
# Comment
<name of option>=string
Cài đặt:
CFServer.alg.name=org.recommender.algorithms. PopAlgorithm
public class PopAlgorithm implements CFAlgorithm {
private RatingsData ratingsData; private long Time = 0;
private long NumPredictions = 0; public PopAlgorithm(RatingsData mgr)
public void updateUser(int SinhvienID) throws CFNotImplementedException public long getAveragePredictionTime() throws CFNotImplementedException public String toString()
public ItemPrediction[] getRecommendationsByType(int activeSinhvien,
int n,
int Bomon) throws CFNotImplementedException, SQLException
public ItemPrediction[] getRecommendations(int activeSinhvien, int n) throws SQLException, CFNotImplementedException
public ItemPrediction predictRating (int activeSinhvien, int Monhoc) throws CFNotImplementedException
}
4.4. Cấu trúc của hệ thống
Hê ̣ tư vấn được thực hiê ̣n trên hê ̣ điều hành Window XP, yêu cầu hê ̣ thống:
JDK 1.4.1 hoặc cao hơn
Cơ sở dữ liê ̣u MySQL Công cu ̣ phát triên là Ant
4.4.1. Mô hình thực thể liên kết trong E-Recommender
1 M M M Sinhvien SVID SVTen MucdoTM Khoahoc KHID KHTen Dokho Bomon BMID BMTen
Hình 4.1: Mô hình thực thể liên kết trong E-recommender
4.4.2. Cấu trúc cơ sở dữ liệu E-Recommender
Việc chuẩn hóa mô hình thực thể quan hệ cho các bảng sau: 1. Bảng khoahoc_table
Tên trƣờ ng Kiểu Ghi chú
KHID auto_increment Khóa chính
KHTen Varchar Tên khóa học
Dokho Varchar Cao, trung bình, thấp
2. Bảng sinhvien_table
Tên trƣờng Kiểu Ghi chú
SVID auto_increment Khóa chính
SVTen Varchar Tên của Sinh viên
MucdoTM Varchar Cao, trung bình, thấp
3. Bảng sinhvienInfo_table
Tên trƣờng Kiểu Ghi chú
SVID auto_increment Khóa chính
SoDanhGia Int Số lần đánh giá khóa học bởi sinh viên
4. Bảng Bomon_Table
Tên trƣờng Kiểu Ghi chú
BMID auto_increment Tên bộ môn, Khóa chính
BMTen Varchar Tên bô ̣ môn
5. Bảng Dangky_table
Tên trƣờng Kiểu Ghi chú
KHID Int Mã khóa học
Danhgia Double Giá trị trong khoảng 1-5
6. Bảng Monhoc_Bomon_Table
Tên trƣờng Kiểu Ghi chú
BMID Int Mã bô ̣ môn
KHID Int Mã khóa học
XSPT Boolean Xác suất môn học thuộc
vào bộ môn
4.5. Kết quả thực nghiệm
Trong phần này, chúng tôi sẽ trình bày nghiên cứu thực nghiệm đánh giá tính hiệu quả của khung tư vấn đã được đề xuất. Trong phần đầu của nghiên cứu, chúng tôi sẽ tìm hiểu khả năng khung dựa trên kỹ thuật lọc cộng tác có thể tự động phân tích các mẫu dữ liệu được sử dụng bởi nhiều phương pháp tư vấn khác nhau. Để minh họa sâu hơn những ưu điểm của khung tư vấn đã đề xuất, trong phần hai chúng tôi sẽ so sánh kết quả của khung mô hình quan hệ xác suất với các phương pháp lọc cộng tác hiện có bằng cách giới hạn đầu vào chỉ là bảng đăng ký mà thuật toán lọc cộng tác sử dụng.
4.5.1. Nguồn dữ liệu
Chúng tôi sử dụng dữ liệu để thử nghiệm từ [42]: Đó là một tập dữ liệu bao gồm 100.000 đánh giá cho 60 khóa học thuô ̣c vào 8 bô ̣ môn khác nhau và được thực