2.5. HỆ TƯ VẤN CHO HỌC SINH THI TỐT NGHIỆP THPT
2.5.3. Quá trình phân lớp, tư vấn
Hình 2.4. Lưu đồ dự báo và tư vấn học sinh
Hình 2.4 mơ tả quá trình phân lớp và dự báo cho mẫu dữ liệu X dựa trên cụm chiến thắng là phân lớp k-NN, đồng thời tư vấn cho học sinh. Bắt đầu từ mẫu dữ liệu X và tập trọng số W = {Wi, i = 1..k}, cụm chiến thắng được lựa
chọn bằng độ đo tốt nhất trên giá trị tổng hợp của hàm sigmoid. Trên cơ sở các láng giềng gần nhất, quá trình phân lớp cho mẫu dữ liệu X được thực hiện và chọn ra mẫu lớp cĩ tần suất xuất hiện nhiều nhất cũng như độ tương đồng tốt nhất đối với mẫu dữ liệu X để làm cơ sở cho quá trình tư vấn cho học sinh.
2.6. TỔNG KẾT CHƯƠNG
Trong chương này, một kiến trúc hệ phân loại và tư vấn cho học sinh được thiết kế phù hợp mẫu dữ liệu đầu vào là thơng tin điểm trung bình của học
Begin Dữ liệu X Tập trọng số W Thực hiện phân lớp k-NN Tính cụm chiến thằng Winner K-means Winner End Lớp tốt nhất BestClass
sinh THPT. Các thành phần của hệ tư vấn đã được phân tích và đưa ra các thuật tốn tương ứng phù hợp với dữ liệu đầu vào. Thuật tốn K-means được áp dụng nhằm phân cụm các mẫu dữ liệu X để làm đầu vào cho mạng SOM. Quá trình huấn luyện của mạng SOM đã được mơ tả dựa trên các thuật tốn và ví dụ cụ thể. Kết quả quá trình huấn luyện này là một véc-tơ trọng số để làm cơ sở chọn cụm chiến thắng cho một mẫu dữ liệu mới để từ đĩ phân lớp và tư vấn cho học sinh. Việc phân lớp này được thực hiện dựa trên thuật tốn k-NN để từ đĩ chọn một mẫu lớp tốt nhất dựa trên độ tương đồng và tần suất xuất hiện. Trên các thành phần cơ sở đã được xây dựng, các quá trình thực thi xây dựng hệ tư vấn này đã được thiết kế làm tiền đề cho quá trình thực nghiệm đối với các bộ cơ sở dữ liệu lớn. Trong chương tiếp theo, các thành phần của hệ tư vấn này được cụ thể hĩa trên các ngơn ngữ lập trình để từ đĩ xây dựng thực nghiệm và đánh giá hiệu suất của hệ dự báo và tư vấn cho học sinh chọn tổ hợp mơn thi tốt nghiệp THPT Quốc gia.
Chương 3. THỰC NGHIỆM
3.1. GIỚI THIỆU
Trên cơ sở lý thuyết đã được đề xuất tại chương 2, chương này trình bày một hệ thống thực nghiệm nhằm dự báo về năng lực học sinh cũng như tư vấn chọn tổ hợp mơn KHTN và KHXH. Vì vậy, các thuật tốn tại chương 2 lần lượt được mã hĩa trên một ngơn ngữ lập trình cụ thể và thực thi trên các bộ dữ liệu khác nhau để đánh giá tính khả thi và hiệu suất của hệ tư vấn này.
Một hệ thống tư vấn cho học sinh được xây dựng bao gồm hai chương trình khác nhau là: (1) chương trình tạo dữ liệu và huấn luyện được thực thi trên hệ thống máy server nhằm tạo ra dữ liệu cho người dùng và độc lập bởi người dùng, nghĩa là thực thi pha chuẩn bị dữ liệu cho người dùng; (2) chương trình phân loại và tư vấn cho người dùng được thực thi trên máy client trên cơ sở dữ liệu đã được tạo ra từ hệ thống server. Pha thực thi từ phía người dùng được kết nối đến server và thực hiện chọn cụm chiến thắng, sau đĩ phân loại bằng phương pháp k-NN nhằm đưa ra dự báo ứng với mỗi bộ dữ liệu học sinh. Dữ liệu được chia ra thành hai phần gồm dữ liệu huấn luyện (training) và dữ liệu kiểm thử (testing) nhằm đánh giá độ chính xác cũng như hiệu suất của hệ thống. Đối với dữ liệu huấn luyện, hệ thống thực hiện phân cụm và tạo ra các trọng số cụm để kết nối các cụm láng giềng và tạo ra một mạng SOM cho quá trình phân lớp k-NN. Đối với dữ liệu kiểm thử, hệ thống sẽ kiểm tra từng bộ dữ liệu giữa đầu ra của kết quả dự đốn và kết quả thực tế trên cơ sở tìm kiếm cụm chiến thắng trên SOM và phân lớp k-NN. Từ đĩ, độ chính xác của quá trình dự đốn và khuyến nghị cho người dùng được kết xuất.
Các số liệu về hiệu suất của hệ thống được đo đạc trực tiếp trong quá trình thực thi chương trình đồng thời được tổng hợp nhằm đánh giá kết quả về độ chính xác về dự đốn năng lực học sinh, dự báo điểm các mơn thi tổ hợp và kiến nghị chọn mơn thi tổ hợp cho học sinh.
3.2. MƠ HÌNH THỰC NGHIỆM
Hình 3.1. Mơ hình thực nghiệm hệ thống dự báo
Kiến trúc hệ thống dự báo và tư vấn cho học sinh được mơ tả tại hình 3.1 bao gồm hai giai đoạn: (1) giai đoạn tạo cụm và mạng SOM được thực hiện từ phía server với đầu vào là dữ liệu huấn luyện chiếm 70% tổng số dữ liệu. Kết quả của giai đoạn này là một danh sách các cụm và các nhĩm cụm láng giềng dưới dạng mạng SOM mà mỗi nhĩm cụm được liên kết qua trọng số của cụm, với trọng số của cụm được tổng hợp từ các mẫu dữ liệu cĩ cùng nhãn học lực của học sinh mà xuất hiện nhiều nhất trong cụm đĩ; (2) giai đoạn dự báo được thực hiện từ phía người dùng với đầu vào là dữ liệu do người dùng cung cấp để từ đĩ chọn cụm chiến thắng trong mạng SOM, sau đĩ thực hiện phân lớp k-NN nhằm đưa ra kết quả dự báo và tư vấn cho học sinh.
CSDL HocSinh (huấn luyện) Cluster1 Cluster2 … … Clusterk RootCluster Clustering Huấn luyện Hệ thống phía Server Hệ thống phía người dùng CSDL HocSinh (kiểm thử) Chọn cụm chiến thắng Phân lớp k-NN Kết quả dự báo Tổ hợp mơn Năng lực
3.3. XÂY DỰNG HỆ THỐNG 3.3.1. Thiết kế sơ đồ lớp
class RootCluster
List <CenterWeight> ListCW List <string> ListFile
contructor get/set method has-a
class HocSinhCluster
CenterWeight CW
List <HocSinh> DSHocSinh contructor
get/set method
abstractclass ClusterMethod
int ToInt32 (string str) double ToDecimal (string str) string Vector2String (Vector) vector String2Vector (string str)
double EuclideDistance (Vector1, Vector2) … is-a class Clustering HocSinh Cluster HSc K_MeanClustering() SaveCluster GetCenter() has-a class SOM-kNN HocSinh Cluster HSc SOM() kNN has-a class CenterWeight List <double> Center List <double> Weight contructor get/set method has- a class HocSinh string MasoHocSinh List <double>Diem List <string>MonHoc double khtn double khxh string HocLuc string DanhHieu contructor get/set method has-a
Trong sơ đồ lớp được mơ tả tại hình 3.2 được thiết kế bao gồm 7 lớp, trong đĩ lớp đầu tiên là lớp trừu tượng ClusterMethod được dùng để chứa tất cả các thao tác chung trong quá trình xử lý các cụm dữ liệu và lớp này khơng tạo đối tượng để thực thi. Lớp tiếp theo là HocSinhCluster nhằm lưu trữ các cụm dữ liệu là
thơng tin của học sinh đồng thời lưu trữ trọng số cho mạng SOM và tâm cụm cho tồn bộ dữ liệu trong cụm đĩ. Lớp HocSinhCluster được kế thừa (is-a) trực tiếp từ lớp ClusterMethod nhằm sử dụng các hàm đã được thiết kế trước đĩ. Dựa trên lớp HocSinhCluster, lớp phân cụm dữ liệu Clustering và lớp SOM- kNN được thiết kế, cả hai lớp đều kế thừa (has-a) lớp HocSinhCluster, nghĩa là
hai lớp này đều cĩ các thuộc tính tham chiếu đến đối tượng của lớp
HocSinhCluster. Ngồi ra, lớp HocSinhCluster cĩ hai thuộc tính là tâm trọng
số (CenterWeight) và thuộc tính DanhSachHS lần lượt tham chiếu đến hai lớp
CenterWeight và HocSinh. Để quản lý các cụm đã được phân tách, một lớp RootCluster được thiết kế nhằm tăng tốc độ quá trình tìm kiếm cụm chiến thắng
cũng như liên kết đến cụm chiến thắng.
3.3.2. Cài đặt cấu trúc lớp
a. Lớp trừu tượng ClusterMethod
abstract classClusterMethod {
publicint ToInt32(string myStr){...} publicdouble ToDecimal(string myStr){...}
publicstring Vector2String(List<double> Vector){...}
publicList<double> String2Vector(string[] DigitString){...}
publicdouble EuclideDistance(List<double> V1, List<double> V2){...} ...
}
Lớp ClusterMethod được thiết kế nhằm đưa ra các phương thức chung
cho quá trình xử lý và thao tác trên các cụm dữ liệu cũng như các dữ liệu trực tiếp từ học sinh. Lớp này khơng tạo trực tiếp các đối tượng mà cung cấp các
chức năng cho các lớp được kế thừa đồng thời ẩn đi các thao tác xử lý cụ thể nếu một đối tượng được tạo ra từ một lớp được kế thừa.
b. Lớp HocSinhCluster classHocSinhCluster { CenterWeight CW; List<HocSinh> DSHocSinh; public HocSinhCluster(){...}
publicCenterWeight CWp {get; set;} publicList<HocSinh> DSHS {get; set;}
... }
Lớp HocSinhClusternhằm lưu trữ các cụm dữ liệu học sinh tương đồng nhau theo độ đo Euclide để từ đĩ thực hiện các thao tác xử lý dữ liệu trên cụm. Lớp này lưu trữ một danh sách học sinh với mỗi học sinh chứa các thuộc tính đã được quy định trong lớp HocSinhđồng thời lưu trữ tâm của cụm và trọng số đại diện để tìm kiếm trên mạng SOM.
c. Lớp Clustering classClustering { HocSinhCluster HSc; public K_MeanClustering(){...} public SaveCluster(){...} public GetCenter(){...} public GetWeight(){...} ... }
Lớp Clusteringnhằm thực hiện phân cụm dữ liệu huấn luyện dựa trên
thuật tốn K-Means, sau đĩ lưu trữ các cụm trên các tập tin nhằm thực hiện việc tìm kiếm cụm chiến thắng và phân loại dữ liệu.
d. Lớp SOM-kNN
{ HocSinhCluster HSc; public SOM(){...} public kNN(){...} ... }
Lớp SOM-kNN được thiết kế nhằm thực hiện quá trình huấn luyện tạo ra được mạng SOM, sau đĩ phân lớp để dự báo và khuyến nghị cho học sinh. e. Lớp HocSinh classHocSinh { string MasoHocSinh; List<double> Diem; List<string> MonHoc; double khtn; double khxh; string HocLuc; string DanhHieu; public HocSinh(){...}
publicstring MASOHS {get;set;} publicList<double> DIEM {get;set;} publicList<string> MONHOC {get;set;} publicdouble KHTN {get;set;}
publicdouble KHXH {get;set;} publicstring HOCLUC {get;set;} publicstring DANHHIEU {get;set;}
... }
Lớp HocSinh được thiết kế nhằm lưu trữ dữ liệu cho các đối tượng là học sinh bao gồm mã số học sinh, điểm, mơn học, học lực, danh hiệu… Các đối tượng học sinh này được gom cụm dựa trên thuật tốn K-Means đã được thiết kế trong lớp Clustering, sau đĩ đánh dấu láng giềng cũng như huấn luyện trọng số dựa trên các phương thức trong lớp SOM-kNN.
f. Lớp CenterWeight
{
List<double> Center; List<double> Weight; public CenterWeight(){...}
publicList<double> CENTER {get;set} publicList<double> WEIGHT {get;set}
... }
Lớp CenterWeight lưu trữ các đối tượng chứa dữ liệu là tâm của một cụm là trọng số kết nối giữa các cụm để làm cơ sở cho lớp HocSinhCluster.
g. Lớp RootCluster
Lớp RootClusterđược thiết kế nhằm quản lý và tra cứu nhanh các cụm
trong quá trình phân loại và tìm kiếm thơng tin.
classRootCluster {
List<CenterWeight> ListCW;
List<string> ListFilenameCluster; public RootCluster() {...}
publicList<CenterWeight> LISTCW {get;set} publicList<string> LISTFILE {get;set}
... }