Tóm tắt Luận văn Phân cụm học sinh nhờ mạng nơ ron nhân tạo
Bạn đang xem 20 trang mẫu của tài liệu "Tóm tắt Luận văn Phân cụm học sinh nhờ mạng nơ ron nhân tạo", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- tom_tat_luan_van_phan_cum_hoc_sinh_nho_mang_no_ron_nhan_tao.pdf
Nội dung text: Tóm tắt Luận văn Phân cụm học sinh nhờ mạng nơ ron nhân tạo
- 1 LỜI MỞ ĐẦU Phân cụm là một bài toán rất hay gặp trong thực tế. Phân các doanh nghiệp nhỏ và vừa trong một tỉnh thành các cụm để với mỗi cụm tỉnh có chính sách đầu tư, biện pháp hỗ trợ riêng, phù hợp. Phân cụm các khách hàng tham gia bảo hiểm y tế sẽ cho kết quả rất hữu ích. Từ thông tin về các cụm có thể phát hiện vùng có thể có dịch hoặc đặc điểm bệnh tật ở các vùng. Trong giáo dục. phân cụm các bài tập trong một cuốn sách để xem hệ thống bài tập trong cuốn sách đó có cân đối hay không; Phân cụm các cơ sở giáo dục để có chính sách đầu tư hay có sự chỉ đạo thích hợp với từng cụm; Phân cụm học sinh trong một lớp để với mỗi cụm thầy/cô có biện pháp giáo dục phù hợp Phân cụm là một bài toán khó, đã được nhiều nhà nghiên cứu quan tâm. Có nhiều phương pháp phân cụm. Tuy nhiên không có phương pháp nào thích hợp với mọi trường hợp. Mạng nơron nhân tạo là một mô hình tính toán mô phỏng hoạt động của não người. Mạng nơron có thể chấp nhận lỗi và có thể xấp sỉ một hàm bất kỳ với độ chính xác tùy ý. Nhờ những ưu điểm của mạng nơron nhân tạo, phân cụm dữ liệu bằng mạng nơron nhân tạo là một phương pháp phân cụm hữu hiệu được ứng dụng nhiều trong thực tế. Với mong muốn tìm ra tri thức, tìm ra những thông tin cần thiết trong cơ sở dữ liệu, nhằm nâng cao hiệu quả giáo dục, để cá biệt hóa trong dạy học, chia học sinh thành các cụm khác nhau với mỗi cụm có cách tổ chức dạy và học một cách phù hợp tôi chọn đề tài: “Phân cụm học sinh nhờ mạng nơ ron nhân tạo” nhằm nghiên cứu về mạng nơ ron nhân tạo, phân cụm dữ liệu nhờ mạng nơ ron nhân tạo và ứng dụng trong phân cụm học sinh, từ đó nâng cao hiệu quả giảng dạy nơi tôi công tác. Tôi sẽ tiếp tục nghiên cứu đề tài này trong tương lai. Với đề tài này, hướng phát triển của tôi là sẽ thiết kế ra phần mềm hướng đồ họa để giúp các học sinh trong quá trình lựa chọn ngành học của mình. Tức là phân học sinh thành các cụm (ví dụ như cụm Tự nhiên và cụm Xã hội), khi các em nhập điểm thực tế của mình vào thì chương trình sẽ đưa ra những thông tin giúp các em biết thuộc cụm nào, nên đi sâu theo chuyên ngành học nào. Mục đích nghiên cứu Nghiên cứu các phương pháp phân cụm và đặc biệt đi sâu vào phương pháp phân cụm bằng mạng nơron nhân tạo. Ứng dụng trong phân cụm học sinh nhờ mạng nơ ron nhân tạo. Đối tượng nghiên cứu - Các vấn đề liên quan đến khai phá dữ liệu - Các thuật toán phân cụm dữ liệu - Bài toán phân cụm. - Mạng noron nhân tạo và mạng kohonen - Phân cụm bằng mạng nơron nhân tạo. - Ứng dụng phân cụm học sinh trong một lớp, một khối lớp.
- 2 Giả thuyết khoa học Việc cá biệt hóa học sinh trong giảng dạy đang còn nhiều khó khăn. Nếu áp dụng phương pháp phân cụm bằng mạng nơron một cách hợp lý ta có thể phân cụm học sinh thành một số cụm thích hợp từ đó áp dụng phương pháp giảng dạy khác nhau cho từng cụm kết quả dạy và học sẽ được nâng lên. Nhiệm vụ nghiên cứu - Nghiên cứu về bài toán phân cụm. - Nghiên cứu về mạng nơ ron nhân tạo và phân cụm nhờ mạng nơ ron nhân tạo. - Ứng dụng phân cụm học sinh nhờ mạng nơ ron nhân tạo. - Căn cứ vào các kết quả đã đạt được, nêu ra một số hướng nghiên cứu tiếp theo. Phạm vi nghiên cứu Phân cụm học sinh trong một lớp, một khối lớp nhờ mạng nơron nhân tạo. Phương pháp nghiên cứu Nghiên cứu lý thuyết: Tìm hiểu về các thông tin về khai phá tri thức và phân cụm dữ liệu. Tham khảo tài liệu liên quan vấn đề này đồng thời tham khảo thuật toán liên quan phục vụ bài khóa luận. Tìm đọc tài liệu, đối chiếu, so sánh, rút trích, tổng hợp, phân tích, viết thành báo cáo luận văn. Nghiên cứu thử nghiệm: Phân cụm học sinh. Chạy thử, chỉnh sửa, và rút ra kết luận. Cấu trúc khóa luận Khóa luận gồm các phần như sau: Chương 1: Bài toán phân cụm Chương 2: Mạng nơ ron nhân tạo Chương 3. Phân cụm học sinh bằng mạng nơ ron nhân tạo Kết Luận Chương1: Bài toán phân cụm dữ liệu 1.1. Tổng quan bài toán phân cụm Phân loại là một trong những hành vi nguyên thủy nhất của con người nhằm nắm giữ lượng thông tin khổng lồ họ nhận được hằng ngày. Vì sự xử lý mọi thông tin như một thực thể đơn lẻ là không thể. Phân cụm dữ liệu nhằm mục đích chính là khai phá cấu trúc của mẫu dữ liệu để thành lập các nhóm dữ liệu từ tập dữ liệu lớn, theo đó cho phép người ta đi xâu vào phân tích và nghiên cứu cho từng cụm dữ liệu này nhằm khai phá và tìm kiếm các thông tin tiềm ẩn, hữu ích phục vụ cho ra quyết định. * Các đặc trưng cơ bản để phân cụm Chọn lựa đặc trưng: các đặc trưng phải được lựa chọn một cách hợp lí để có thể “mã hóa ” nhiều nhất thông tin liên quan đến công việc quan tâm. Mục
- 3 tiêu chính là giảm thiểu sự dư thừa thông tin giữa các đặc trưng. Các đặc trưng cần được xử lí trước khi dùng trong các bước sau. Chọn độ đo gần gũi: đây là một độ đo chỉ ra mức độ tương tự hay không tương tự giữa hai vector đặc trưng. Phải đảm bảo rằng tất cả các vector đặc trưng góp phần như nhau trong việc tính toán độ đo gần gũi và không có đặc trưng nào át đặc trưng nào. Điều này được đảm nhận bởi quá trình tiền xử lí. Tiêu chuẩn phân cụm: Điều này phụ thuộc vào sự giải thích của chuyên gia cho thuật ngữ “dễ nhận thấy” dựa vào loại của các cụm được chuyên gia cho rằng đang ẩn dấu dưới tập dữ liệu. Thuật toán phân loại: cần lựa chọn một sơ đồ thuật toán riêng biệt nhằm làm sáng tỏ cấu trúc của tập dữ liệu. Công nhận kết quả: khi đã có kết quả phân loại thì ta phải kiểm tra tính đúng đắn của nó. Điều này thường được thực hiện bởi việc dùng các kiểm định phù hợp. Giải thích kết quả: trong nhiều trường hợp, chuyên gia trong lĩnh vực ứng dụng phải kết hợp kết quả phân loại với bằng chứng thực nghiệm và phân tích để đưa ra các kết luận đúng đắn. Trong một số trường hợp nên có cả bước khuynh hướng phân cụm; trong bước này có các kiểm định khác nhau để chỉ ra một tập dữ liệu có hay không một cấu trúc phân cụm. Ví dụ như một tập dữ liệu của ta có thể hoàn toàn ngẫu nhiên vì vậy mọi cố gắng phâm cụm đều vô nghĩa. Giải thích kết quả Công nhận Knowledge kết quả Lựa chọn thuật toán phân cụm * * Final * * * Clusters * Lựa chọn * * * đặc trưng * * * Algorithm * results Data for process Dat a Hình 1. Các bước trong quá trình phân cụm
- 4 1.2. Các phương pháp phân cụm dữ liệu 1.2.1. Phân cụm phân hoạch Phương pháp phân hoạch: tạo một phân hoạch của cơ sơ dữ liệu D chứa n đối tượng thành tập gồm k cụm sao cho: Mỗi cụm chứa ít nhất là một đối tượng Mỗi đối tượng thuộc về đúng một cụm Cho k, tìm một phân hoạch có k cụm nhằm tối ưu tiêu chuẩn phân cụm được chọn. Tiêu chuẩn suy đoán chất lượng phân hoạch Tối ưu toàn cụm: liệt kê theo hướng vét cạn tất cả các phân hoạch. Các thuật toán của phương pháp: - Thuật toán k-means (MacQueen’ 67): mỗi cụm được đại diện bằng tâm của cụm (centroid). - Thuật toán k- medoids (Kuafman & Roosseew’87): mỗi cụm được đại diện bằng một trong các đối tượng của cụm (medoids) 1.2.1.1. Thuật toán gom cụm k- means Trọng tâm của một cụm là một véc tơ, trong đó giá trị của mỗi phần tử của nó là trung bình cộng của các thành phần tương ứng của các đối tượng vectơ dữ liệu trong cụm đang xét. Tham số đầu vào của thuật toán là số cụm k, và tham số đầu ra của thuật toán là các trọng tâm của các cụm dữ liệu. Độ đo khoảng cách D giữa các đối tượng dữ liệu thường được sử dụng dụng là khoảng cách Euclide, bởi vì đây là mô hình khoảng cách dễ để lấy đạo hàm và xác định các cực trị tối thiểu. Hàm tiêu chuẩn và độ đo khoảng cách có thể được xác định cụ thể hơn tuỳ vào ứng dụng hoặc các quan điểm của người dùng. Thuật toán k- means bao gồm các bước cơ bản: Đầu vào của thuật tóan: số k cụm k và cơ sơ dữ liệu Thuật toán gồm 4 bước: Phân hoạch đối tượng thành k tập con/ cụm khác rỗng. Tính các điểm hạt giống làm centroid (trung bình của các đối tượng của cụm) cho từng cụm trong cụm hiện hành. Gán từng đối tượng vào cụm có centroid gần nhất. Quay về bước 2 chấm dứt khi không còn phép gán mới. 1.2.1.5. Nhận xét chung về họ các thuật toán phân hoạch 1.2.2. Phân cụm phân cấp Phương pháp phân cấp: tạo phân cấp cụm chứ không phải là một phân hoạch đơn thuần các đối tượng Không cần dữ liệu nhập là số cụm k Dùng ma trận làm tiêu chuẩn gom cụm Có thể có điều kiện kết thúc (ví dụ số cụm) Cây các cụm: phân cấp cụm thường tạo cây các cụm hay còn được gọi là dendrogram Các lá của cây biểu diễn các đối tượng riêng lẻ
- 5 Các nút trong của cây biểu diễn các cụm Hai loại phương pháp tạo kiến trúc cụm: Gộp- agglomerative (từ dưới lên) Đưa từng đối tượng vào cluster riêng của nó Trộn ở mỗi bước hai cụm tương tự nhất cho đến khi chỉ còn một cụm hay thỏa điều kiện kết thúc Phân chia – divisive (từ trên xuống) Bắt đầu bằng một cụm lớn chứa tất cả các đối tượng Phân chia cụm phân biệt nhất thành các cụm nhỏ hơn và xử lý cho đến khi co n cụm hay thỏa điều kiện kết thúc Thường có 3 cách được dùng để định nghĩa khoảng cách giữa các cụm: Phương pháp liên kết đơn (láng giềng gần nhất): d(i, j) min x Ci,y Cj d(x, y) Phương pháp liên kết hoàn toàn (láng giềng xa nhất): d(i, j) max x Ci,y Cj d(x, y) Phương pháp liên kết trung bình (trung bình cặp nhóm không có trọng ): d(i, j) avgx Ci,y Cj d(x, y) 1.2.2.1 Thuật toán BIRCH 1.2.2.2 Thuật toán CURE 1.2.2.3. Thuật toán DBSCAN Thuật toán DBSCAN : DBSCAN khởi tạo điểm p tuỳ ý và lấy tất cả các điểm đến được mật độ từ p với Eps và MinPts. Nếu p là điểm nhân thì thủ tục trên tạo ra một cụm theo Eps và MinPts (Bổ đề 2), Nếu p là một điểm biên, không có điểm nào đến được mật độ từ p và DBSCAN sẽ đi thăm điểm tiếp theo của tập dữ liệu. Nếu chúng ta chọn sử dụng giá trị trị toàn cục Eps và MinPts, DBSCAN có thể hoà nhập hai cụm theo định nghĩa 5 thành một cụm nếu mật độ của hai cụm gần bằng nhau. Giả sử khoảng cách giữa hai tập dữ liệu S1 và S2 được định nghĩa là Dist (S1,S2) = min{dist(p,q)| p S1 và q S2}. 1.2.2.4. Thuật toán OPTICS 1.2.2.5. Thuật toán DENCLUE Hàm ảnh hưởng được định nghĩa như sau : Cho x,y là hai đối tượng trong không gian d chiều Fd, hàm ảnh hưởng của đối tượng y lên đối tượng y d x được xác định như sau : : F , y = (x). Hàm ảnh hưởng là f B Ro hàm tuỳ chọn, miễn là nó được xác định bởi khoảng cách d(x,y) của các đối tượng, thí dụ như khoảng cách Euclide.
- 6 1.2.3. Phân cụm dựa trên lưới Chủ yếu áp dụng cho lớp dữ liệu không gian cùng với các quan hệ, các thuộc tính, các hoạt động của chúng. Lượng hoá tập dữ liệu thành các ô (cell), các cell này tạo thành cấu trúc dữ liệu lưới, các thao tác phân cụm chỉ làm việc với các đối tượng trong từng cell này. 1.2.3.1. Thuật toán STING 1.2.3.2. Thuật toán CLIQUE 1.2.4. Phân cụm dựa trên mô hình Giả thiết: Tồn tại một số mô hình dữ liệu cho phân cụm. Phương pháp phân cụm dựa trên mô hình cố gắng khớp giữa dữ liệu với mô hình toán học dựa trên giả định dữ liệu được tạo ra bằng hỗn hợp phân phối xác suất cơ bản nhằm xác định mô hình tốt nhất phù hợp với dữ liệu. Thuật toán EM Thuật toán EM (Expectation -Maximization) được xem như là thuật toán dựa trên mô hình hoặc là mở rộng của thuật toán k-means. Thật vậy, EM gán các đối tượng cho các cụm dữ đã cho theo xác suất phân phối thành phần của đối tượng đó. Phân phối xác suất thường được sử dụng là phân phối xác suất Gaussian với mục đích là khám phá lặp các giá trị tốt cho các tham số của nó bằng hàm tiêu chuẩn là là,f logarit khả năng củ đoói tượng dữ liệu, dây là hàm tốt để mô hình xác suất cho các dối tượng dữ liệu. EM có khả năng khám phá ra nhiều hình dạng cụm khác nhau, tuy nhiên do thời gian lặp của thuật toán khá nhiều nhằm xác định các tham số tốt nên chi phí tính toán của thuật toán là khá cao: có thể nén,có thể sao lưu trong bộ nhớ và có thể hủy bỏ. Trong các của tiến nàym các đối tượng bị hủy bỏ khi biết chắc chắn được nhãn phân cụm của nó, chúng được nén khi không được loại bỏ và thuộc về một cụm quá lớn so với bộ nhớ và chúng sẽ được lưa giữ lại trong các trường hợp còn lại. 1.3. Kết luận: Nói tóm lại, do phân cụm dữ liệu (PCDL) là một ngành phát triển dựa trên sự kết hợp các khái niệm của nhiều ngành như : thống kê, nhận dạng mẫu, CSDL, học máy, nên có nhiều các phương pháp cũng như thuật toán PCDL. Bảng dữ liệu sau (bảng 1) cho ta thông tin tổng quan về các đặc tính của các phương pháp và thuật toán PCDL, nhằm làm căn cứ cho việc lựa chọn phương pháp khi phát triển các ứng dụng.
- 7 Cấu Xử lý Độ phức Tham số Thuật toán Thích hợp với trúc phần tử tạp tính vào cụm ngoại lai toán Phương pháp phân cụm phân hoạch Hình K-means Số các cụm Các cụm tách rời Không O(Ikn) cầu Các cụm tách rời, Hình PAM Số các cụm Không O(Ik(n-k)2) tập dữ liệu nhỏ cầu Tập dữ liệu tương Hình O(ks2+k(n- CLARA Số các cụm Không đối lớn cầu k)) Tập dữ liệu không Số các cụm, gian, chất lượng Hình CLARANS số tối đa các Không O(kn2) các cụm tốt hơn cầu láng giềng PAM và CLARA Phương pháp phân cụm phân cấp Yếu tố nhánh, Hình BIRCH Tập dữ liệu lớn Có O(n) đường kính cầu cụm Số các cụm, Tập dữ liệu trung CURE số cụm đại bình, hình dạng các Bất kỳ Có O(n2 log n) diện cụm bất kỳ Phương pháp phân cụm dựa trên mật độ Bán kính của cụm, số tối Các cụm có hình DBSCAN thiểu các đối dạng bất kỳ, tập dữ Bất kỳ Có O(n log n) tượng trong liệu lớn cụm Bán kính của Các cụm có hình các cụm, số DENCLUE dạng bất kỳ, tập dữ Bất kỳ Có O(n log n) tối thiểu các liệu lớn đối tượng Bán kính của các cụm Các cụm có hình (min, max), OPTICS dạng bất kỳ, tập dữ Bất kỳ Có O(n log n) số tối thiểu liệu lớn các đối tượng Các phương pháp phân cụm khác
- 8 Cấu Xử lý Độ phức Tham số Thuật toán Thích hợp với trúc phần tử tạp tính vào cụm ngoại lai toán Số các Cell Giới hạn trong mức đứng và thấp nhất, số Tập dữ liệu không STING các giới Có O(n) các đối gian lớn hạn tượng trong ngang Cell Số các Cell cho mỗi Các cụm có hình WaveCluster chiều, sóng, dạng bất kỳ, tập dữ Bất kỳ Có O(n) số ứng dụng liệu lớn biến đổi Kích thước của lưới, số Tập dữ liệu lớn đa CLIQUE tối thiểu các Bất lỳ Có O(n) chiều điểm trong mỗi lưới Các tham số Tập dữ liệu lớn với Hình Scalable EM Gauss, giới phân phối đồng Không O(n) cầu hạn hội tụ nhất xấp xỉ Bảng 1. So sánh các thuật toán phân cụm Chương 2: Mạng nơ ron nhân tạo 2.1. Mô hình nơ ron: 2.1.1. Nơ ron sinh học: Phần tử xử lý cơ bản của một mạng nơron sinh học là một nơron, phần tử này có thể chia làm bốn thành phần cơ bản như sau: dendrites, soma, axon, và synapses. Dendrites: là phần nhận tín hiệu đầu vào. Soma: là hạt nhân. Axon: là phần dẫn ra tín hiệu xử lý. Synapses: là đường tín hiệu điện hóa giao tiếp giữa các nơron. Kiến trúc cơ sở này của bộ não con người có một vài đặc tính chung. Một cách tổng quát, thì một nơron sinh học nhận đầu vào từ các nguồn khác nhau, kết hợp chúng tại với nhau, thực thi tổ hợp phi tuyến chúng để cho ra kết quả cuối cùng ở đầu ra. 2.1.2. Cấu trúc và mô hình của một nơron nhân tạo
- 9 Mô hình toán học của mạng nơron sinh học được đề xuất bởi McCulloch và Pitts, thường được gọi là nơron M-P, ngoài ra nó còn được gọi là phần tử xử lý và được ký hiệu là PE (Processing Element). Mô hình nơron có m đầu vào x1, x2, , xm, và một đầu ra yi như sau: Hình 12. Mô hình một nơron nhân tạo Giải thích các thành phần cơ bản: Tập các đầu vào: Là các tín hiệu vào của nơron, các tín hiệu này thường được đưa vào dưới dạng một vector m chiều. Tập các liên kết (các trọng số): Mỗi liên kết được thể hiện bởi một trọng số (thường được gọi là trọng số liên kết). Trọng số liên kết giữa tín hiệu vào thứ j cho nơron i thường được ký hiệu là wij. Thông thường các trọng số này được khởi tạo ngẫu nhiên ở thời điểm khởi tạo mạng và được cập nhật liên tục trong quá trình học mạng. Bộ tổng (Hàm tổng): Thường dùng để tính tổng của tích các đầu vào với trọng số liên kết của nó. Ngưỡng: Ngưỡng này thường được đưa vào như một thành phần của hàm truyền. Hàm truyền: Hàm này dùng để giới hạn phạm vi đầu ra của mỗi nơron. Nó nhận đầu vào là kết quả của hàm tổng và ngưỡng đã cho. Thông thường, phạm vi đầu ra của mỗi nơron được giới hạn trong đoạn [0,1] hoặc [-1,1]. Các hàm truyền rất đa dạng, có thể là các hàm tuyến tính hoặc phi tuyến. Việc lựa chọn hàm truyền tùy thuộc vào từng bài toán và kinh nghiệm của người thiết kế mạng. Đầu ra: Là tín hiệu đầu ra của một nơron, với mỗi nơron sẽ có tối đa một đầu ra. Về mặt toán học, cấu trúc của một nơron i được mô tả bằng cặp biểu thức sau: n yi f (neti i ) và neti wij x j j 1 trong đó: x1, x2, xm là các tín hiệu đầu vào, còn wi1, wi2, ,wim là các trọng số kết nối của nơron thứ i, neti là hàm tổng, f là hàm truyền, i là một ngưỡng, yi là tín hiệu đầu ra của nơron. 2.2. Mạng nơron 2.2.1. Mạng nơron sinh học
- 10 2.2.1.1. Khái niệm: Mạng nơron sinh học: là một mạng lưới (plexus) các nơron kết nối hoặc có liên quan về mặc chức năng trực thuộc hệ thần kinh ngoại biên (peripheral nerous system) hay hệ thần kinh trung ương (central nerous system). Trong ngành thần kinh học nó thường được dùng để chỉ một nhóm nơ-ron thuộc hệ thần kinh là đối tượng nghiên cứu khoa học nhất định. 2.2.2. Mạng nơron nhân tạo 2.2.2.1. Khái niệm: Mạng nơron nhân tạo- ANN (Artifical Neural Network) là một mô phỏng xử lý thông tin, được nghiên cứu ra từ hệ thống thần kinh của sinh vật, giống như bộ não để xử lý thông tin. Nó bao gồm một số lượng lớn các mối gắn kết cấp cao để xử lý các yếu tố làm việc trong mối liên hệ giải quyết vấn đề rõ ràng. ANNs giống như con người, được học bởi kinh nghiệm, lưu những kinh nghiệm hiều biết và sử dụng trong những tình huống phù hợp. 2.2.2.3. Cấu trúc mạng nơ-ron nhân tạo * Nút: Mỗi Neural (nút) là một đơn vị xử lý thông tin của mạng neural, là yếu tố cơ bản để cấu tạo nên mạng neural. wk1 wk2 ∑ F (.) wk3 Hình 17. Cấu trúc 1 nơ-ron xi: các tín hiệu input wkp: trọng số của từng input f(.): hàm hoạt động yk: kết xuất của Neural b: thông số ảnh hưởng đến ngưỡng ra của output Mạng nơron nhân tạo thường được cấu tạo thành các lớp gồm lớp vào (input layer) , lớp ra (output layer) và các lớp ẩn (hidden layer). Các nơron trong một lớp chỉ nối với các nơron lớp tiếp theo, không cho phép có các liên kết giữa các nơron trong cùng một lớp. 2.3. Thuật toán lan truyền ngược Các mạng nơron được huấn luyện bằng cách sử dụng thuật toán lan truyền ngược. Thuật toán lan truyền ngược là một dạng huấn luyện có giám sát. Mạng nơron được đưa vào dữ liệu huấn luyện cho cho ra kết quả, các kết quả này được so sánh với các kết quả được mong đợi. Sự khác nhau giữa các kết quả thực tế và các kết quả mong đợi sẽ có một mức sai số nào đó. Để giảm thiểu sai số này, người ta tiến hành sử dụng thuật toán lan truyền ngược để điều chỉnh các trọng số và độ lệch của mạng. Đây là cách mà sai số được giảm đáng
- 11 kể. Trong phần tiếp theo, chúng ta sẽ tìm hiều về mạng nơron Kohonen. Sự khác nhau quan trọng nhất giữa mạng nơron Kohonen và mạng nơron lan truyền ngược là phương thức huấn luyện. Phương thức lan truyền ngược sử dụng phương thức huấn luyện có giám sát. Còn mạng nơron Kohonen sử dụng phương thức huấn luyện không giám sát. 2.4. Mạng Kohonen và bài toán phân cụm Trong các kiểu khác nhau của mạng nơron, mạng nơron Kohonen giống với mạng nơron sinh học hơn cả về cấu tạo lẫn cơ chế học. Mạng nơron nhân tạo này lần đầu tiên được giới thiệu bởi Kohonen vào năm 1982, nó được biết đến như là ánh xạ đặc trưng tự tổ chức (SOM). Ánh xạ tự tổ chức của Kohonen còn được biết đến là một trong những mô hình khá đơn giản của mạng nơron, và người ta thường gọi đó là mạng nơron Kohonen. Mạng nơron Kohonen (hay nơron tự tổ chức) mô hình hóa cách hoạt động bộ não của con người, mặc dù nó khá đơn giản. Chúng ta có thể nhận được một số ý tưởng cách bộ não lưu trữ hình ảnh và cách nó nhận dạng các hình ảnh. 2.4.1. Cấu trúc mạng Kohonen Mạng nơron Kohonen chỉ bao gồm một lớp dữ liệu đầu vào và một lớp dữ liệu đầu ra của các nơron và nó không chứa lớp ẩn. Lớp dữ liệu đầu vào đối với mạng nơron Kohonen là các nơron đầu vào. Các nơron đầu vào này tạo thành mẫu dữ liệu đầu vào của mạng. Đối với mạng nơron Kohonen, ta nên chọn dữ liệu đầu vào chuẩn hóa trong khoảng giữa -1 và 1. Khi thực thi mẫu dữ liệu đầu vào, mạng sẽ tạo ra các nơron đầu ra. Lớp đầu ra của mạng nơron Kohonen rất khác với lớp đầu ra của mạng nơron truyền thẳng. Đối với mạng truyền thẳng, nếu chúng ta có một mạng nơron với 5 nơron đầu ra, chúng sẽ có thể cho kết quả bao gồm 5 giá trị. Còn trong mạng nơron Kohonen chỉ có một nơron đầu ra cho ra một giá trị. Giá trị duy nhất này có thể là đúng hoặc sai. Dữ liệu đầu ra từ mạng nơron Kohonen thường là các chỉ số của nơron 2.4.2. Huấn luyện mạng Kohonen Quá trình huấn luyện cho mạng nơron Kohonen là luyện cạnh tranh nên mỗi tập huấn luyện sẽ có một nơron thắng. Nơron thắng này sẽ có trọng số được điều chỉnh sao cho ngay lập tức nó sẽ tác động trở lại mạnh mẽ hơn trong dữ liệu đầu vào ở lần tiếp theo. Sự khác nhau giữa các nơron thắng sẽ dẫn tới sự khác nhau giữa các mẫu đầu vào tiếp theo. 2.5. Kết luận Mạng nơron Kohonen khác với mạng lan truyền ngược ở vài điểm. Mạng nơron Kohonen là luyện không giám sát. Điều này có nghĩa rằng, mạng nơron Kohonen được cho dữ liệu đầu vào nhưng không biết trước được “cái ra”. Sau đó, trong khi huấn luyện thì mạng nơron Kohonen bắt đầu vẽ lên bản đồ của mỗi nơron trong mẫu huấn luyện, mẫu này bao gồm các nơron đầu ra. Một mạng nơron Kohonen chỉ bao gồm hai lớp. Mạng được đưa vào một mẫu dữ liệu đầu vào và coi đây là lớp dữ liệu vào. Mẫu dữ liệu đầu vào này
- 12 phải được chuẩn hóa thành các giá trị nằm trong khoảng [-1,1]. Dữ liệu đầu ra từ mạng nơron này là nơron đầu ra thắng riêng lẻ. Các nơron đầu ra có thể được đưa lại vào trong các nhóm, tương ứng với các nhóm mà mạng nơron Kohonen đã phân loại đối với đầu vào. Sự huấn luyện một mạng nơron Kohonen khác đáng kể so với thuật toán lan truyền ngược đã được giới thiệu. Để huấn luyện một mạng nơron Kohonen, chúng ta phải đưa vào cho nó các phần tử huấn luyện và xem nơron đầu ra là nơron thắng. Để cho các nơron thắng thì các trọng số của nơron thắng này được sửa đổi sao cho nó sẽ hoạt động cao hơn trên mẫu. Cũng có trường hợp có thể có một hoặc vài nơron không bao giờ thắng. Như vậy, sẽ có các nơron có trọng số chết được đưa đến mạng nơron. Điều này sẽ gây cho mạng làm việc quá tải khi nhận dạng, và thường thất bại khi giá trị trên các nơron đầu ra ngang nhau. Chương 3: Phân cụm học sinh bằng mạng nơ ron nhân tạo 3.2. Các mẫu huấn luyện Để huấn luyện mạng nơron Kohonen thì các tập huấn luyện phải được cung cấp. Dữ liệu huấn luyện này sẽ được lưu trữ trong lớp TrainingSet, lớp này được thiết kế để nó là một lớp chứa đựng dữ liệu. Lớp TrainingSet quản lý hai biến mảng độ dài của đầu vào và đầu ra. Trong lớp TrainingSet, nó lưu trữ các biến và cách sử dụng chúng được tóm tắt như sau: • inputCount - Số lượng các phần tử đầu vào sẽ có cho từng mẫu huấn luyện. • outputCount - Số lượng các phần tử đầu ra sẽ có cho từng mẫu huấn luyện. • input[][] - Các mẫu đầu vào huấn luyện. • output[][] - Các mẫu đầu ra huấn luyện. • trainingSetCount - Số lượng mẫu huấn luyện. Do quá trình hoạt động của mạng nơron Kohonen là không có giám sát, chỉ có các phần tử dữ liệu đầu vào được cung cấp, nên đối tượng TrainingSet được xây dựng để huấn luyện cho ra dữ liệu đầu ra, nó sẽ được chuyển tới đối tượng KohonenNetwork để huấn luyện trong lần tiếp theo. 3.3. Một số mô đun chính 3.3.1. Lớp mạng cơ sở Bây giờ chúng ta sẽ xem xét lớp Network. Lớp này là lớp cơ sở cho lớp KohonenNetwork, nó là lớp cuối cùng cung cấp cho mạng nơron Kohonen. Việc tính toán chiều dài một vector là một phần quan trọng của mạng nơron Kohonen. Lớp Network chứa một phương thức để tính toán độ dài vector của vector đã cho, và nó được biểu diễn dưới dạng mảng. Phương thức này được chỉ ra trong danh sách 3.1.
- 13 Danh sách 3.1: Tính độ dài của một vector (Network.java) / * @Tham số v vector * @Kết quả trả về độ dài vector. */ static double vectorLength( double v[] ) { double rtn = 0.0 ; for ( int i=0;i 0 ) { rtn += vec1[v] * vec2[v]; v++; } return rtn; } Đầu tiên, các trọng số giữa nơron được khởi tạo với các giá trị ngẫu nhiên. Sau đó các giá trị ngẫu nhiên này được huấn luyện để cho ra các kết quả tốt hơn. Tại thời điểm bắt đầu của mỗi chu kỳ huấn luyện, các trọng số cũng được khởi tạo với các giá trị ngẫu nhiên. Lớp Network cung cấp một phương
- 14 thức để thực thi vấn đề này. Danh sách 3.3 chỉ ra phương thức để sinh các trọng số ngẫu nhiên. Danh sách 3.3: Khởi tạo các trọng số ngẫu nhiên (Network.java) / * @Tham số weight là một ma trận trọng số. */ void randomizeWeights( double weight[][] ) { double r ; int temp = (int)(3.464101615 / (2. * Math.random() )); for ( int y=0;y<weight.length;y++ ) { for ( int x=0;x<weight[0].length;x++ ) { r = (double) random.nextInt(Integer.MAX_VALUE) + (double) random.nextInt(Integer.MAX_VALUE) - (double) random.nextInt(Integer.MAX_VALUE) - (double) random.nextInt(Integer.MAX_VALUE) ; weight[y][x] = temp * r ; } } } } 3.3.2. Lớp KohonenNetwork Chúng ta sẽ xem xét lớp KohonenNetwork. Lớp này là lớp thực thi mạng nơron Kohonen. Lớp KohonenNetwork có một số tính chất được chỉ ra trong danh sách 2.10. Danh sách 3.4: Các tính chất của lớp KohonenNetwork public class KohonenNetwork extends Network { double outputWeights[][]; protected int learnMethod = 1; protected double learnRate = 0.5; protected double quitError = 0.1; protected int retries = 10000; protected double reduction = .99; protected NeuralReportable owner; public boolean halt = false; protected TrainingSet train; Các tính chất được mô tả như sau:
- 15 halt – Thiết lập này là xác thực hủy bỏ quá trình huấn luyện. learnMethod – Tỷ lệ học, đặt bằng 1. learnRate – Tỷ lệ học ban đầu. outputWeights[][] – Các trọng số của các nơron đầu ra dựa trên đầu vào. owner – Lớp owner, lớp này thực thi giao diện NeuralReportable. quitError – Khi tỷ lệ sai số đạt đến mức nhỏ hơn 10% thì dừng huấn luyện. reduction – Lượng giảm tỷ lệ học ban đầu (learnRate) bởi mỗi công đoạn. retries - Tổng số chu kỳ cho phép, nó đặt một mức trần (a ceiling) số lượng các chu kỳ huấn luyện có thể xảy ra. train – Tập huấn luyện. Để cho mạng nơron Kohonen hoạt động tốt, ta không chỉ chuẩn hóa vector đầu vào, mà ta còn phải chuẩn hóa cả ma trận trọng số. Danh sách 3.5 chỉ ra một phương thức để chuẩn hóa các dữ liệu đầu vào để đưa tới mạng nơron Kohonen, và danh sách 3.6 chỉ ra sự chuẩn hóa ma trận trọng số. Danh sách 3.5: Chuẩn hó dữ liệu đầu vào (KohonenNetwork.java) / * @Tham số input là mẫu dữ liệu vào * @Tham số normfac là nhân tố chuẩn hóa * @Tham số synth là giá trị đầu vào cuối cùng */ void normalizeInput( final double input[] , double normfac[] , double synth[] ) { double length, d ; length = vectorLength ( input ) ; // Điều chỉnh trong trường hợp độ dài quá nhỏ if ( length < 1.E-30 ) length = 1.E-30 ; normfac[0] = 1.0 / Math.sqrt ( length ) ; synth[0] = 0.0 ; } Danh sách 3.6: Chuẩn hóa trọng số (KohonenNetwork.java) / * @Tham số w là các trọng số đầu vào
- 16 */ void normalizeWeight( double w[] ) { int i ; double len ; len = vectorLength ( w ) ; // Điều chỉnh trong trường hợp độ dài quá nhỏ if ( len 1.0 )
- 17 output[i] = 1.0 ; if ( output[i] < 0.0 ) output[i] = 0.0 ; } } Vậy quá trình tính toán giá trị cho mỗi nơron đầu ra được tính toán bằng cách lấy tích vô hướng đã được chuẩn hóa của dữ liệu đầu vào và các trọng số. Do dữ liệu đầu ra cuối cùng có thể lớn hơn 1 hoặc nhỏ hơn 0, ta phải đưa nó về khoảng [0,1]. Để đưa dữ liệu đầu ra về khoảng [0,1] thì các kết quả nhỏ hơn 0 thì ta đưa nó về 0, và các kết quả lớn hơn 1 được đưa về 1. Dữ liệu đầu ra cuối cùng của mỗi nơron được lưu trữ trong mảng dữ liệu đầu ra. Chúng ta chỉ quan tâm đến nơron thắng vì chúng được đưa lại vào mẫu để huấn luyện. Danh sách 3.8 chỉ ra phương thức để đưa một mẫu dữ liệu đầu vào tới mạng Kohonen, và thu nhận nơron thắng. Phương thức này chính là phương thức dùng để phận loại mẫu trong mạng Kohonen. Phương thức này sẽ thường xuyên được sử dụng khi ta muốn đưa một mẫu tới một mạng nơron để phân loại. Còn phương thức “thử” mà chúng ta vừa xem xét ở trên chỉ được sử dụng trong khi huấn luyện mạng. Khi huấn luyện, chúng ta quan tâm đến dữ liệu đầu ra hiện tại của mỗi nơron. Trái lại, khi phân loại mẫu thì chúng ta chỉ quan tâm đến nơron thắng. Phương thức winner lặp qua mỗi nơron đầu ra và tính toán dữ liệu đầu ra cho mỗi nơron riêng biệt. Trong quá trình lặp này thì các chỉ số của nơron được lưu lại. Chỉ số này là của nơron có giá trị đầu ra cao nhất. Nơron có chỉ số cao nhất được gọi là nơron thắng. Nơron thắng này được trả về tập mẫu để tiếp tục tham gia vào quá trình huấn luyện. Bây giờ chúng ta bắt đầu xem xét quá trình huấn luyện. Phương thức training được chỉ ra trong danh sách 3.9. Danh sách 3.9: Huấn luyện mạng nơron (KohonenNetwork.java) / * @exception java.lang.RuntimeException */ public void learn () throws RuntimeException { int i, key, tset,iter,n_retry,nwts; int won[],winners ; double work[],correc[][],rate,best_err,dptr[]; double bigerr[] = new double[1] ; double bigcorr[] = new double[1];
- 18 KohonenNetwork bestnet; // Preserve best here totalError = 1.0 ; bestnet = new KohonenNetwork(inputNeuronCount,outputNeuronCount ,owner) ; won = new int[outputNeuronCount]; correc = new double[outputNeuronCount][inputNeuronCount+1]; if ( learnMethod==0 ) work = new double[inputNeuronCount+1]; else work = null ; rate = learnRate; initialize () ; best_err = 1.e30 ; // Vòng lặp chính: n_retry = 0 ; for ( iter=0 ; ; iter++ ) { evaluateErrors ( rate , learnMethod , won , bigerr , correc , work ) ; totalError = bigerr[0] ; if ( totalError < best_err ) { best_err = totalError ; copyWeights ( bestnet , this ) ; } winners = 0 ; for ( i=0;i<won.length;i++ ) if ( won[i]!=0 ) winners++; if ( bigerr[0] < quitError ) break ; if ( (winners < outputNeuronCount) && (winners < train.getTrainingSetCount()) ) { forceWin ( won ) ; continue ; } adjustWeights ( rate , learnMethod , won , bigcorr, correc ) ; owner.update(n_retry,totalError,best_err);
- 19 if ( halt ) { owner.update(n_retry,totalError,best_err); break; } Thread.yield(); if ( bigcorr[0] retries ) break ; initialize () ; iter = -1 ; rate = learnRate ; continue ; } if ( rate > 0.01 ) rate *= reduction ; } // Hoàn thành copyWeights( this , bestnet ) ; for ( i=0 ; i<outputNeuronCount ; i++ ) normalizeWeight ( outputWeights[i] ) ; halt = true; n_retry++; owner.update(n_retry,totalError,best_err); } Phương thức training bắt đầu bằng việc khởi tạo các ma trận trọng số với các giá trị ngẫu nhiên và điều chỉnh các giá trị trọng yếu khác. Khi khởi tạo xong, vòng lặp chính đưa các mẫu huấn luyện tới mạng nơron và tính toán các sai số dựa trên các kết quả thu được từ mạng nơron. Khi kết thúc vòng lặp chính, xác định được nơron thắng, và nó sẽ tiếp tục huấn luyện để thúc đẩy hợp nhất các khả năng của nó trong quá trình nhận dạng mẫu riêng biệt, đồng thời cho ra một ma trận trọng số tốt hơn. Điều này được xác định bằng cách tính toán sự cải tiến sai số giữa công đoạn hiện tại và công đoạn trước. Nếu sự cải tiến không đáng kể thì chu kỳ huấn luyện này coi như hoàn thành, và lại bắt đầu một chu kỳ mới. Vì chu kỳ huấn luyện cực nhanh nên chúng ta chỉ theo dõi chu kỳ có tỷ lệ sai số tốt nhất. Khi chúng ta tìm thấy một ma trận trọng số có sai số nằm dưới mức sai số cho phép, thì sự huấn luyện được hoàn thành. Ngược lại, thì chúng ta sẽ lấy ma trận tốt nhất đã được xác định ở chu kỳ trước. Bây giờ, chúng ta sẽ bắt đầu xem xét xem các sai số được ước lượng như thế nào. Danh sách 3.10 chỉ ra ước lượng các sai số.
- 20 Danh sách 3.10: Ước lượng các sai số (KohonenNetwork.java) / * Phương thức này dùng trong quá trình học. Nó dùng để ước lượng các trọng số dựa vào tập huấn luyện. * @Tham số rate là tỉ lệ học * @Tham số learn_method là dùng phương thức method(0=additive, 1=subtractive) * @Tham số won là quản lý số lần nơron thắng * @Tham số bigerr là trả về sai số * @Tham số correc là trả về mảng hiệu chỉnh * @Tham số work là phạm vi hoạt động * @exception java.lang.RuntimeException */ */ void evaluateErrors ( double rate , int learn_method , int won[], double bigerr[] , double correc[][] , double work[]) throws RuntimeException { int best, size,tset ; double dptr[], normfac[] = new double[1]; double synth[]=new double[1], cptr[], wptr[], length, diff ; // Hiệu chỉnh và đặt lại số lần thắng for ( int y=0;y<correc.length;y++ ) { for ( int x=0;x<correc[0].length;x++ ) { correc[y][x]=0; } } for ( int i=0;i<won.length;i++ ) won[i]=0; bigerr[0] = 0.0 ; // Lặp qua tất cả các tập huấn luyện để xác định giá trị hiệu chỉnh for ( tset=0 ; tset<train.getTrainingSetCount(); tset++ ) {
- 21 dptr = train.getInputSet(tset); best = winner ( dptr , normfac , synth ) ; won[best]++; wptr = outputWeights[best]; cptr = correc[best]; length = 0.0 ; for ( int i=0 ; i bigerr[0] ) bigerr[0] = length ; if ( learn_method==0 ) { normalizeWeight( work ) ; for ( int i=0 ; i<=inputNeuronCount ; i++ ) cptr[i] += work[i] - wptr[i] ; } } bigerr[0] = Math.sqrt ( bigerr[0] ) ; } Mạng được huấn luyện và tạo ra một mảng hiệu chỉnh chứa biến hiệu chỉnh được tạo bởi phương thức adjustWeights. Sau khi nhân tố hiệu chỉnh được tính toán, thì các trọng số phải được điều chỉnh. Danh sách 3.11 chỉ ra việc điều chỉnh các trọng số. Danh sách 3.11: Hiệu chỉnh các trọng số (KohonenNetwork.java) /
- 22 * Phương thức này được gọi vào cuối mỗi lần huấn luyện, và nó điều chỉnh các trọng số dựa vào lần thử trước. * @Tham số rate là tỉ lệ học * @Tham số learn_method sử dụng phương pháp method(0=additive, 1=subtractive) * @Tham số won quản lý số lần mỗi nơron thắng * @Tham số bigcorr dùng để quản lý sai số * @Tham số correc dùng để quản lý mảng hiệu chỉnh */ void adjustWeights ( double rate , int learn_method , int won[] , double bigcorr[], double correc[][] ) { double corr, cptr[], wptr[], length, f ; bigcorr[0] = 0.0 ; for ( int i=0 ; i bigcorr[0] ) bigcorr[0] = length ; } // Tính toán nhân tố hiệu chỉnh
- 23 bigcorr[0] = Math.sqrt ( bigcorr[0] ) / rate ; } 3.5. Kết quả chạy thử - Phân cụm được những học sinh muốn học một môn chuyên giống nhau - Phân cụm được những học sinh muốn theo học đội tuyển (tạo nguồn) - Phân cụm được những học sinh không theo môn chuyên văn hóa (theo hướng năng khiếu) - Phân cụm được những học sinh có cùng sở thích sinh hoạt câu lạc bộ ngoại khóa. - Phân cụm được những học sinh có/không khả năng theo đuổi học chuyên. - Phân cụm được những học sinh có khả năng về tư duy hoặc về ngôn ngữ. 3.6. Kết luận Trong chương này, chỉ ra một ứng dụng thực tế của mạng nơron Kohonen. Tiêu điểm của chương này là tạo ra một ứng dụng nhỏ đó là khả năng phân cụm học sinh dựa vào nhiều tiêu chí (ngoài điểm). Các dữ liệu (bảng tiêu chí tổng hợp) được người sử dụng đưa vào với các tiêu chí cụ thể dưới dạng các cột, các đối tượng ảnh hưởng bởi các tiêu chí là các hàng (tên học sinh và các thông tin cá nhân theo các tiêu chí). Để biểu diễn được tới mạng nơron, ta giảm bớt độ cồng kềnh này bằng cách sử dụng kỹ thuật cắt xén và tải mẫu, danh sách được chuyển sang một bảng thứ hai với độ cồng kềnh dữ liệu ít hơn. Khi bảng được đưa vào, nó phải được cắt xén để loại bỏ các dữ liệu lệch lạc (thiếu). Vì thế nó không phụ thuộc vào cỡ bảng. Sự tải mẫu là quá trình đưa bảng có độ phức tạp, cồng kềnh được chuyển đổi về bảng có độ phức tạp, cồng kềnh ít hơn. Mỗi tiêu chí trong bảng tải mẫu được ấn định cho một mầu trung bình của vùng tương ứng trong bảng ban đầu. Kết quả bảng tải mẫu sau đó được đưa tới tập huấn luyện hoặc tới quá trình nhớ của mạng nơron Kohonen. Mạng nơron Kohonen được sử dụng trong ví dụ này có số nơron đầu vào bằng số tiêu chí có được tải mẫu, và số nơron đầu ra bằng số học sinh mà ta tạo trong tập mẫu. KẾT LUẬN Tóm tắt các nội dung chính - Bài toán phân cụm và các phương pháp phân cụm - Lý thuyết về mạng nơ ron nhân tạo - Mạng Kohonen và bài toán phân cụm - Bài toán ứng dụng phân cụm học sinh Các kết quả đạt được của luận văn - Nắm được kiến thức cơ bản của bài toán phân cụm - Nắm được kiến thức cơ bản của mạng nơron nhân tạo và mạng nơron Kohonen.
- 24 - Nắm được quy trình chung trong việc xây dựng hệ thống phân cụm học sinh trong trường phổ thông (trường THPT Chuyên Hà Nội-Amsterdam). - Sử dụng phương pháp tính tích vô hướng hai vector để tìm nơron thắng. - Đưa ra phương pháp trích chọn đặc trưng cho phân cụm học sinh theo nhiều tiêu chí khác (ngoài tiêu chí về điểm). - Phát triển thành công phần mềm phân cụm học sinh (cụ thể là phân cụm học sinh thành các lớp để có định hướng đào tạo đúng và sát thực hơn). - Chương trình ứng dụng mới đang bước đầu thử nghiệm, và độ chính xác trên tập mẫu (150 mẫu) khoảng 80%. Hướng phát triển nghiên cứu Luận văn có thể phát triển cho phân cụm học sinh cho toàn trường (đặc biệt là trường Chuyên, trường có đặc thù riêng và nhiều hướng đào tạo); phân cụm dữ liệu trên mạng internet. Tuy nhiên để làm được điều này phải là cả một quá trình tìm hiểu và nghiên cứu lâu dài. Do thời gian có hạn nên luận văn mới chỉ trình bày ở mức độ đơn giản đó là phân cụm học sinh của một khối để lên lớp trên có những lớp có định hướng khác nhau. Tự đánh giá Mặc dù em đã cố gắng để hoàn thiện đề tài, nhưng chắc chắn không thể tránh được những thiếu sót, em rất mong nhận được sự chỉ bảo và giúp đỡ của các Thầy, Cô giáo cùng với sự góp ý kiến của những ai quan tâm. Tổng kết Khai khá dữ liệu là vấn đề rất cần thiết trong cuộc sống của chúng ta. Từ khai phá dữ liệu chúng ta có thể phát hiện ra tri thức. Đó là vấn đề cốt lõi của chúng ta. Có rất nhiều cách để con người khai phá được dữ liệu và một trong những cách đó là phân cụm dữ liệu. Có rất nhiều thuật toán phân cụm dữ liệu và trong đề tài này đã trình bày được một số thuật toán trong phân cụm dữ liệu. Đề tài tập trung vào ứng dụng của mạng nơ-ron để phân cụm trong thuật toán SOM. Do giới hạn về thời gian nên trong đề tài chưa được hoàn thiện. Đề tài chưa thực hiện được nguyện vọng của bản thân đó là phân cụm các đối tượng học sinh. Trong thời gian tới đây tôi sẽ tiếp tục nghiên cứu để hoàn thiện đề tài và ứng dụng vào thực tế. Trong thực tế lượng dữ liệu là rất lớn, để tìm ra được tri thức trong khối dữ liệu đó không phải là chuyện đơn giản. Vì thế với đề tài này hướng phát triển lên có thể là phân cụm dữ liệu trên mạng internet. Ta có thể phân cụm xem một tài liệu là thuộc về ngành khoa học nào để từ đó lưu trữ, tìm kiếm , phát hiện tri thức được dễ dàng hơn. Xin chân thành cảm ơn thầy giáo Nguyễn Tân Ân đã tận tình giúp đỡ em trong quá trình làm đề tài này.