MỤC LỤC
Trong trường hợp này, ta có thể chọn số lượng cụm là 10, tương ứng với số lượng lớp trong tập dữ liệu MNIST. --- Clustering (phân cụm) làmộtkỹthuậttronglĩnhvựchọc không giám sát, được sử dụng đểphânloạicácđiểmdữliệuthànhcácnhóm(cụm)dựatrêncácđặctrưng tươngtựcủachúng.Mụctiêucủaphâncụmlàtìm ra các nhóm dữ liệu khác nhau và đồngnhấtbêntrongmỗinhóm,đồngthờigiữchosựkhácbiệtgiữacácnhóm. Bước 2.1 (CODE):Phân loại các điểm dữ liệu thành các cụm khác nhau trong không gian 2 chiều, rồi hiển thị kết quả.
Ta sẽ áp dụng phương phápSpectral Clusteringđể phân loại các điểm dữ liệu thành các cụm khác nhau trong không gian 2 chiều (sau khi đã giảm từ 784 xuống còn 2 chiều bằng PCA), và cuối cùng là hiển thị kết quả phân cụm bằngđồ thị scatter plot. Giải thích:(trục x,y và điểm màu sắc thì tương tự như của biểu đồ ở bước 1.3) Nhận xét:Dựa trênbiểu đồ phân tán 2D của Clustering of MNIST Training Data, ta cú thể nhận thấy rằng cỏc điểm dữ liệu đó được phõn tỏch rừ ràng thành cỏc nhúm tương ứng với những số trong bộ dữ liệu MNIST. Điều này cho thấy rằng phương pháp PCA đã giảm chiều dữ liệu một cách hiệu quả và giữ lại thông tin quan trọng để phân biệt các số trong bộ dữ liệu MNIST.
Mô hình này cũng cho ta thấy rằng bộ dữ liệu MNIST có sự phân bố đều trên không gian 2 chiều => bộ dữ liệu MNIST là một bộ dữ liệu đa dạng và đủ để đào tạo các mô hình học máy phân loại các số trong hình ảnh. Đầu ra của tầng Convolution đưa qua hàm kích hoạt ReLU để giữ lại các giá trị không âm và đưa giá trị âm về 0. Tầng Max Pooling giúp giảm kích thước của feature maps bằng cách chọn giá trị lớn nhất trong một vùng quét kích thước 2x2 và bỏ qua các giá trị khác.
Các feature maps sau khi được Flatten và đưa qua các tầng Convolution và Max Pooling tiếp theo được truyền qua một tầng fully connected với 128 units để tính toán và trích xuất các đặc trưng phức tạp hơn. Đầu ra của tầng Fully connected trước đó được truyền qua một tầng fully connected với 10 units để tính toán xác suất của các lớp đầu ra. Hàm softmax được sử dụng để chuyển đổi các giá trị đầu ra thành xác suất tương ứng với từng lớp.
Quá trình huấn luyện mô hình bắt đầu bằng việc tải dữ liệu từ các tập tin gzip chứa dữ liệu ảnh và nhãn của tập huấn luyện và tập kiểm tra. Dữ liệu ảnh được đọc và chuyển đổi thành mảng numpy, sau đó được chuẩn hóa bằng cách chia cho 255 để đưa giá trị các pixel về khoảng từ 0 đến 1. Mô hình bao gồm ba lớp tích chập, mỗi lớp được theo sau bởi một lớp max pooling, và hai lớp kết nối đầy đủ.
Mô hình được biên dịch với tối ưu hóa Adam và hàm mất mát categorical crossentropy thưa, và được huấn luyện trong 5 epoch trên tập huấn luyện, với việc đánh giá trên tập kiểm tra sau mỗi epoch. Trong quá trình huấn luyện, mô hình được đào tạo trên tập huấn luyện với các lô kích thước 32, và các giá trị đánh giá được tính toán trên tập kiểm tra sau mỗi epoch.
Mô hình SVM có thể được sử dụng để phân loại hình ảnh vào nhiều lớp khác nhau, ví dụ như phân loại các loài động vật, phân loại các loại trái cây hoặc phân loại các loại xe hơi. Tùy thuộc vào số lượng lớp cần phân loại, mô hình có thể được huấn luyện để sử dụng các thuật toán tối ưu hóa khác nhau, chẳng hạn như one-vs-all hoặc one-vs-one. Phương pháp sử dụng trong bài toán này là Multi-Classes Support Vector Machine (SVM), một phương pháp học máy phổ biến được sử dụng để phân loại dữ liệu.
Trong bài toán này, nhóm em sử dụng SVM để phân loại các hình ảnh chữ số viết tay thành các lớp tương ứng với các chữ số từ 0 đến 9. Sau khi mô hình SVM đã được huấn luyện trên tập dữ liệu training, chúng ta sử dụng tập dữ liệu validation để đánh giá hiệu quả của mô hình. Để đánh giá hiệu quả, chúng ta sử dụng độ chính xác (accuracy) - tức là tỉ lệ số hình ảnh được phân loại đúng trên tổng số hình ảnh trong tập dữ liệu validation.
Mô hình SVM có nhiều ưu điểm, bao gồm: độ chính xác cao, khả năng xử lý dữ liệu lớn, khả năng xử lý dữ liệu phi tuyến và khả năng xử lý dữ liệu high-dimensional. Tuy nhiên, SVM cũng có nhược điểm, bao gồm khả năng overfitting, đặc biệt khi số lượng điểm dữ liệu quá lớn, và khả năng tính toán phức tạp hơn so với một số phương pháp khác. Chúng ta sử dụng tập dữ liệu huấn luyện để huấn luyện mô hình Multi-Classes Support Vector Machine và sử dụng tập dữ liệu kiểm tra để đánh giá hiệu quả của mô hình.
Sau khi huấn luyện và kiểm tra mô hình với tập dữ liệu, chúng ta thu được độ chính xác của mô hình đạt khoảng 94.04%, cho thấy mô hình SVM đã cho kết quả khá tốt trong việc phân loại các hình ảnh chữ số viết tay. Sau đó, chúng ta đã sử dụng danh sách các vector hỗ trợ support vectors để vẽ các vectơ này trên các ảnh tương ứng bằng cách sử dụng phương thức plot(). Sau khi hiển thị các vector hỗ trợ, chúng ta đã sử dụng ma trận trọng số svm.coef_ của mô hình SVM để hiển thị các trọng số của mô hình dưới dạng các ảnh 28x28.
Sau đó, chúng ta đã sử dụng phương pháp transpose() để chuyển đổi thứ tự các chiều của mảng trọng số để phù hợp với định dạng của ảnh. Cuối cùng, chúng ta đã sử dụng phương thức predict() để dự đoán nhãn cho tập dữ liệu validation và tính toán độ chính xác của mô hình bằng cách sử dụng hàm accuracy_score(). Để đạt được kết quả tốt hơn, chúng ta có thể sử dụng các kernel function khác nhau (như polynomial hoặc RBF), tinh chỉnh các tham số của mô hình và sử dụng các kỹ thuật regularization và cross-validation để tránh overfitting.