Trong đó, việc phân loại dữ liệu ảnh chữsố viết tay là một trong những bài toán cơ bản và quan trọng trong lĩnh vực trí tuệnhân tạo và máy học.Việc phân loại dữ liệu ảnh chữ số viết tay
Khái quát chung
1.1 Đặt vấn đề: Đề tài 6.Dựa vào tập dữ liệu ảnh chữ số viết tay (đã được giáo viên cung cấp trong phần thực hành) đặt trong các thư mục theo cấu trúc tương tự như trong bài thực hành đã có.
1) Thực hiện việc rút gọn số chiều dữ liệu, sau đó tham khảo để hiển thị trực quan các phân lớp dữ liệu dạng 3D hoặc 2D.
2) Thực hiện phân cụm(clustering)dữ liệu gốc bằng 01 thuật toán phân cụm Hiển thị trực quan và đánh dấu các cụm.
3) Xây dựng chương trình sử dụngmô hình CNNđể phân loại các hình ảnh Kiến trúc cụ thể như sau: Mạng gồm ít nhất 03 tầng tích chập hỗn hợpConvolution+ Activation ReLU+Max Pooling, 02 tầngfully connectedvới số units phù hợp và tầng quyết định cuối cùng sử dụngsoftmax Huấn luyện mô hình bằngtập dữ liệu trainingsau đó chạy kiểm tra với dữ liệu trongtập validation.
4) Xây dựng chương trình sử dụng mô hìnhMulti-Classes Support Vector Machine để phân loại các hình ảnh, huấn luyện mô hình bằng tập dữ liệu training sau đó chạy kiểm tra với dữ liệu trong tập validation.
5) So sánh độ chính xác (sử dụngaccuracy, confusion matrix, recallvàprecision) của các mô hình trong ý 4) và ý 3).
1.2 Tổng quan và tiền xử lý dữ liệu:
Ngôn ngữ lập trình:Python
Bộ Dữ liệu làm việc của Đề tài 6:là bộ dữ liệu MNIST, được sử dụng rộng rãi trong lĩnh vực học máy và nhận dạng chữ số viết tay Nó bao gồm 60000 ảnh training và
10000 ảnh test của các chữ số viết tay từ 0 đến 9, với mỗi ảnh có kích thước 28x28 pixel.
Cụ thể hơn, dữ liệu của Đề tài 6 này lấy từ:MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burges,các tệp tin được nén nên cần đoạn chương trình giải nén Dữ liệu được để trong 4 tệp (dạng gz) với thông tin như dưới đây:
● train-images-idx3-ubyte:training set images (dữ liệu ảnh train)
● train-labels-idx1-ubyte:training set labels (dữ liệu nhãn ứng với ảnh train)
● t10k-images-idx3-ubyte:test set images (dữ liệu ảnh test)
● t10k-labels-idx1-ubyte:test set labels (dữ liệu nhãn ứng với ảnh test) Chú ý dữ liệu ảnh các chữ số viết tay ở đây được lưu liên tiếp nhau và không theo định dạng ảnh.
Chuẩn bị dữ liệu: Để giải quyết được vấn đề được đặt ra ở đầu bài (đề tài 6), bằng ngôn ngữ lập trình Python, với bộ dữ liệu được đặt trong 4 tệp gz như trên, chúng ta cần tiền xử lý dữ liệu, với bước đầu là viết phần đọc dữ liệu từ các file nén, rồi thực hiện các yêu cầu trong đề bài một cách lần lượt Thông tin chung về dữ liệu:
● Số phân lớp: C = 10 (từ 0 đến 9);
● Số mẫu dữ liệu training: N = 5000.
BƯỚC ĐẦU TIÊN (CODE): thiết lập các đường dẫn đến tập dữ liệu huấn luyện và kiểm tra của bộ dữ liệu MNIST (cụ thể là 4 tệp gz). importos importnumpyasnp data_path = '/content/drive/MyDrive/MACHINE_LEARNING/PROJECT CUỐI KỲ_MACHINELEARNING/FINAL-TERM-PROJECT' train_images_path=os.path.join(data_path,'train-images-idx3-ubyte.gz') train_labels_path=os.path.join(data_path,'train-labels-idx1-ubyte.gz') test_images_path=os.path.join(data_path,'t10k-images-idx3-ubyte.gz') test_labels_path=os.path.join(data_path,'t10k-labels-idx1-ubyte.gz')
Nhận xét:Đoạn code trên thiết lập đường dẫn cho tập dữ liệu MNIST (gồm 4 file gz), bao gồm đường dẫn cho tập huấn luyện và tập kiểm tra, kết hợp tên file và đường dẫn cơ sở, đảm bảo tính di động và độc lập với hệ điều hành ⇒một bước quan trọng để tải và tiền xử lý dữ liệu MNIST
BƯỚC THỨ HAI (CODE): Xây dựng phương thức đọc dữ liệu từ tệp gzip, giải nén và đưa về định dạng là một dãy ảnh (một dãy ma trận nguyên)
(code ở BƯỚC THỨ HAI trong file FINAL-TERM-PROJECT-6-(END).ipynb) train_images, train_labels =get_mnist_data(train_images_path,train_labels_path, 5000,shuffle=True) test_images, test_labels = get_mnist_data(test_images_path, test_labels_path, 10000,_isse,shuffle=True) print(train_images.shape,train_labels.shape) print(test_images.shape,test_labels.shape)
Nhận xét:Kết quả này cho thấy kích thước của các ma trận ảnh và nhãn tương ứng với tập huấn luyện và tập kiểm tra Theo đó: train_imagescó kích thước (5000, 784), tức là tập huấn luyện có 5000 ảnh và mỗi ảnh được biểu diễn dưới dạng một vector đặc trưng có kích thước 784 (28x28). train_labelscó kích thước (5000,), tức là tập huấn luyện có 5000 nhãn tương ứng với
5000 ảnh đó. test_imagescó kích thước (10000, 784), tức là tập kiểm tra có 10000 ảnh và mỗi ảnh được biểu diễn dưới dạng một vector đặc trưng có kích thước 784 (28x28). test_labelscó kích thước (10000,), tức là tập kiểm tra có 10000 nhãn tương ứng với
Với kết quả này, ta có thể sử dụng các ma trận ảnh và nhãn tương ứng để huấn luyện và kiểm tra các mô hình học máy phân loại ảnh chữ số viết tay.
Thực hiện việc rút gọn số chiều dữ liệu, sau đó tham khảo để hiển thị trực quan các phân lớp dữ liệu dạng 3D hoặc 2D
dữ liệu, sau đó hiển thị trực quan các phân lớp dữ liệu ở dạng 3D hoặc 2D. Đầu tiên, ta cần chuẩn hóa dữ liệu để đảm bảo các giá trị của các thuộc tính trong khoảng giá trị tương đương Sau đó, ta áp dụng phương pháp PCA trên dữ liệu đã được chuẩn hóa để giảm số chiều dữ liệu xuống 2 hoặc 3 chiều.
Lưu ý:Khi chạy phân tích thành phần chính (PCA), việc chuẩn hóa dữ liệu là cực kỳ quan trọng Nguyên nhân là do PCA là phương pháp dựa trên độ lớn của các vectơ trong không gian đa chiều để tìm ra các hướng mới cho các trục tọa độ sao cho chúng ta có thể giảm số lượng chiều của dữ liệu Nếu các biến không được chuẩn hoá, một số biến có phạm vi giá trị lớn hơn có thể có ảnh hưởng lớn hơn đến kết quả PCA, trong khi một số biến có phạm vi giá trị nhỏ hơn có thể bị bỏ qua Việc này có thể dẫn đến các thành phần chính không phản ánh tốt sự biến động của các biến trong dữ liệu. -
PCA (Principal Component Analysis)làmộtphươngphápphântíchđabiếnđượcsử dụng để giảm chiều dữ liệuvàtríchxuấtcáctínhchấtquantrọngcủadữliệu.PCA được sử dụng rộng rãi trong nhiềulĩnhvực,nhưphântíchtínhiệu,nhậndạnghình ảnh,dữliệusinhhọc,dữliệutàichính,vànhiềulĩnhvựckhác.
Trong PCA, tatìmracácthànhphầnchínhcủadữliệubằngcáchtìmracáchướng trongkhônggiandữliệumàcóđộlớnphươngsailớnnhất Các thành phần chính này được sắp xếp theo độ lớn củaphươngsaitươngứng,vớithànhphầnchínhđầu tiêncóphươngsailớnnhất. ĐểthựchiệnPCA,tathườngđưadữliệuvềdạngmatrận,sauđótínhtoánmatrận hiệp phương sai (covariance matrix) của dữ liệu Sauđó,tatìmracácvectorriêng(eigenvectors) và giá trị riêng (eigenvalues) của matrậnhiệpphươngsai.Cácvector riêng này chính là các thành phần chính,vàgiátrịriêngtươngứnglàđộlớnphương lớn củagiátrịriêngtươngứng,vàsauđógiữlạichỉcácvectorriêngcóđộlớngiátrị riêngđángkểđểgiảmchiềudữliệu.KhisửdụngPCAđểgiảmchiềudữliệu,tagiữ lạichỉcácthànhphầnchínhcóđộlớnphương sai đáng kể, bỏ qua các thành phần chínhcóđộlớnphươngsaithấp.Bằngcáchnày,ta có thể giảm số chiều của dữ liệu, đồngthờigiữlạilượngthôngtinquantrọngnhấtcủadữliệu.
Ngoài ra, PCA cũng có thể được sử dụng đểbiếnđổidữliệusangkhônggianmới, trong đó các trục tương ứng với các thànhphầnchính.Điềunàycóthểgiúptáchbiệt các tính chất khác nhau của dữ liệu và tạoracácbiểuđồphântíchhoặchìnhảnhcó thể giúphiểurõhơnvềdữliệu.Tuynhiên,cầnlưuýrằngPCAchỉphùhợpchocác bộdữliệucótínhchấttuyếntínhvàcóphươngsaiđồngnhấttrêncácchiều
Bước 1.1 (CODE):Chuẩn hóa dữ liệu và Giảm chiều dữ liệu xuống còn 2 chiều. Sau đó hiển thị trực quan 2D
Ta sẽ thực hiện chuẩn hóa dữ liệu bằngphương pháp StandardScaler, sau đó giảm chiều dữ liệu của các ảnh trong bộ dữ liệu MNIST từ 784 chiều xuống còn 2 chiều bằngphương pháp PCA Cuối cùng là trực quan hóa bằngbiểu đồ phân tán 2D(code cụ thể ở bước 1.1 trong file FINAL-TERM-PROJECT-6-(END).ipynb gửi kèm)
● Chấm màu sắc:Được sử dụng để biểu thị nhãn lớp của từng điểm dữ liệu trong tập huấn luyện MNIST Ví dụ, nếu số 0 được gán màu đỏ, thì tất cả các điểm dữ liệu tương ứng với số 0 trên biểu đồ sẽ có màu đỏ.
● Trục x:Giá trị trên trục x của mỗi điểm dữ liệu trên biểu đồ tương ứng với giá trị của chiều thứ nhất (sau khi đã giảm chiều) của điểm dữ liệu tương ứng trong dữ liệu MNIST ban đầu.
● Trục y:Giá trị trên trục y của mỗi điểm dữ liệu trên biểu đồ tương ứng với giá trị của chiều thứ hai của điểm dữ liệu (sau khi giảm chiều) tương ứng trong dữ liệu MNIST ban đầu.
Nhận xét:Dựa trên biểu đồ phân tán 2D, ta có thể nhận thấy rằng các điểm dữ liệu mặc dù đã có sự phân biệt về màu sắc, nhưng chưa đượ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 Tóm lại là chưa thể hiện một cách rõ nét điều gì về bộ dữ liệu MNIST.
- PhươngphápStandardScalerlà một phươngphápchuẩnhóadữliệutrongkhoahọc dữ liệu vàhọcmáy.Khiápdụngphươngphápnày,cácgiátrịdữliệuđượcchuẩnhóa saochocótrungbìnhbằng0vàđộlệchchuẩnbằng1.Phươngphápnàylà phương phápchuẩnhóathườngđượcsửdụngnhấttrongcácbàitoánhọcmáy.
Thực hiện phân cụm (clustering) dữ liệu gốc bằng 01 thuật toán phân cụm Hiển thị trực quan và đánh dấu các cụm
dữ liệu gốc bằng 01 thuật toán phân cụm Hiển thị trực quan và đánh dấu các cụm để thực hiện phân cụm dữ liệu gốc của bộ dữ liệu MNIST, ta có thể sử dụng thuật toán Spectral Clustering kết hợp với PCA để giảm chiều dữ liệu xuống còn số chiều nhỏ hơn (bước giảm chiều bằng PCA đã được thực hiện ở phần trước), sau đó áp dụng Spectral Clustering để phân cụm dữ liệu Spectral Clustering sử dụng phân tích giá trị riêng để phân cụm dữ liệu 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.
SpectralClusteringlàmộtphươngphápphâncụmdữliệudựatrênphântích giá trị riêngcủamatrậntươngđồnghoặcmatrậnLaplacecủađồthịtươngđồng Phương phápnàyđượcđưaravàonăm2000bởi người sáng lập của Microsoft Research, JianboShivàJitendraMalik.((Dướiđâylàcácbướcthựchiện))
1 Xây dựng ma trận tương kề hoặc ma trậnLaplacecủađồthịtươngkềtừdữliệu banđầu.
1.2.TínhmatrậnLaplacian(cả2hình,hìnhthứ3làkếtquả(L)):
3 Giảm chiều dữ liệuxuốngmộtsốchiềunhỏhơnbằngcáchchọncácvectorriêng tươngứngvớicácgiátrịriênglớnnhất.
K-means là một thuậttoántronglĩnhvựcphâncụm(clustering),giúpphânloạicác điểm dữ liệu thành các cụm dựatrêncácđặctrưngtươngtựcủachúng.Thuậttoán này được sử dụngrộngrãitrongcáclĩnhvựcnhưxửlýảnh,phântíchdữliệu,khai phádữliệu,họcmáy,v.v.(Dướiđâylàcácbướcthựchiện)
3 Cập nhậtlạicácđiểmtrungtâmcủacáccụmbằngcáchtínhtrungbình(mean)các điểmdữliệutrongmỗicụm.
4 Lặp lại bước 2 và 3 chođếnkhikhôngcósựthayđổivềphânloạicủacácđiểmdữ liệuhoặcđạtđếnđiềukiệndừngđượcthiếtlậptrước.
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.(code cụ thể ở bước 2.1 trong file FINAL-TERM-PROJECT-6-(END).ipynb gửi kèm)
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 Các số giống nhau được gom lại gần nhau trên biểu đồ Đ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ệuMNIST 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.
Tầng 4: Fully connected với 128 units.
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.
Tầng 5: Fully connected với 10 units (số lượng lớp). Đầ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 Lớp với xác suất cao nhất sẽ được chọn là lớp dự đoán cho đầu vào.
3 Quá trình huấn luyện mô hình
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 CNN được định nghĩa sử dụng API Keras Sequential 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 đủ Lớp đầu ra sử dụng hàm kích hoạt softmax để đưa ra phân phối xác suất trên 10 lớp có thể có.
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.
Kết quả khi chạy một ví dụ sử dụng mô hình trên tập dữ liệu có sẵn và tập MNIST:
Phần V Xây dựng chương trình sử dụng mô hình Multi-Classes Support Vector Machine để phân loại các hình ảnh
Multi-Classes Support Vector Machine (SVM) là một mô hình học máy được sử dụng để phân loại dữ liệu vào nhiều lớp khác nhau Trong trường hợp phân loại hình ảnh, các lớp có thể là các đối tượng, động vật hoặc sự kiện khác nhau trong ảnh.
Mô hình SVM sử dụng một bộ dữ liệu đã được gán nhãn để học cách phân loại các ảnh Nó sử dụng các thuật toán tối ưu hóa để tạo ra một siêu mặt phẳng tối ưu để phân chia các lớp Khi một ảnh mới được đưa vào, mô hình sẽ sử dụng siêu mặt phẳng này để phân loại ảnh đó vào các lớp tương ứng.
Các đặc trưng của hình ảnh thường được trích xuất và biểu diễn dưới dạng vectơ, sau đó được sử dụng để huấn luyện mô hình SVM Thông thường, các thuật toán trích xuất đặc trưng như HOG (Histogram of Oriented Gradients) hoặc CNN(Convolutional Neural Network) được sử dụng để trích xuất đặc trưng từ hình ảnh.
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.
2 Mô hình SVM được sử dụng trong bài toán
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 SVM tìm ra một siêu mặt phẳng (hyperplane) phân chia các điểm dữ liệu thành các lớp khác nhau 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.
Mô hình SVM được xây dựng bằng cách tìm ra siêu mặt phẳng tốt nhất phân chia các điểm dữ liệu thành các lớp khác nhau Siêu mặt phẳng này được tìm bằng cách tối ưu hóa hàm mất mát và tìm ra các tham số tối ưu cho mô hình Các tham số này bao gồm hệ số bias và trọng số của các đặc trưng của dữ liệu.
Xây dựng chương trình sử dụng mô hình Multi-Classes Support
mô hình Multi-Classes Support Vector Machine để phân loại các hình ảnh
Multi-Classes Support Vector Machine (SVM) là một mô hình học máy được sử dụng để phân loại dữ liệu vào nhiều lớp khác nhau Trong trường hợp phân loại hình ảnh, các lớp có thể là các đối tượng, động vật hoặc sự kiện khác nhau trong ảnh.
Mô hình SVM sử dụng một bộ dữ liệu đã được gán nhãn để học cách phân loại các ảnh Nó sử dụng các thuật toán tối ưu hóa để tạo ra một siêu mặt phẳng tối ưu để phân chia các lớp Khi một ảnh mới được đưa vào, mô hình sẽ sử dụng siêu mặt phẳng này để phân loại ảnh đó vào các lớp tương ứng.
Các đặc trưng của hình ảnh thường được trích xuất và biểu diễn dưới dạng vectơ, sau đó được sử dụng để huấn luyện mô hình SVM Thông thường, các thuật toán trích xuất đặc trưng như HOG (Histogram of Oriented Gradients) hoặc CNN(Convolutional Neural Network) được sử dụng để trích xuất đặc trưng từ hình ảnh.
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.
2 Mô hình SVM được sử dụng trong bài toán
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 SVM tìm ra một siêu mặt phẳng (hyperplane) phân chia các điểm dữ liệu thành các lớp khác nhau 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.
Mô hình SVM được xây dựng bằng cách tìm ra siêu mặt phẳng tốt nhất phân chia các điểm dữ liệu thành các lớp khác nhau Siêu mặt phẳng này được tìm bằng cách tối ưu hóa hàm mất mát và tìm ra các tham số tối ưu cho mô hình Các tham số này bao gồm hệ số bias và trọng số của các đặc trưng của dữ liệu.
Trong bài toán phân loại ảnh chữ số viết tay, các hình ảnh được biểu diễn dưới dạng các điểm dữ liệu có kích thước 28x28 pixel Mỗi điểm dữ liệu tương ứng với một giá trị từ 0 đến 255, biểu thị mức độ sáng tối của pixel tương ứng trên hình ảnh Các điểm dữ liệu này được xử lý và chuẩn hóa để giảm thiểu ảnh hưởng của các sai số và đưa vào mô hình SVM để phân loại.
Trong mô hình SVM, chúng ta sử dụng kernel function để biến đổi dữ liệu và tìm ra siêu mặt phẳng phân chia tốt nhất Các kernel function thông dụng trong SVM bao gồm linear, polynomial và radial basis function (RBF).
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.
Mô hình Multi-Classes Support Vector Machine được sử dụng để phân loại các hình ảnh trong bài toán này Nhóm chúng em sử dụng thư viện scikit-learn để xây dựng mô hình Dữ liệu được sử dụng là bốn tệp dữ liệu được giảng viên cung cấp được nén dưới định dạng tệp đuôi gz.
3 Kết quả chạy mô hình và đánh giá
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.
4 Trực quan hóa mô hình và mở rộng
Trước tiên, chúng ta cần hiển thị các vector hỗ trợ trên các ảnh trong tập dữ liệu validation Để làm điều này, chúng ta đã sử dụng hàm imshow() trong thư viện Matplotlib để hiển thị các ả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 Để làm điều này, chúng ta đã sử dụng hàm reshape() trong NumPy để chuyển đổi ma trận trọng số thành một mảng 3 chiều với kích thước (10, 28, 28) 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 hàm imshow() để hiển thị các trọng số của mô hình dưới dạng các ảnh 28x28.
4 Trực quan hóa mô hình và mở rộng
Nhóm em mở rộng huấn luyện mô hình SVM trên tập dữ liệu MNIST và đánh giá độ chính xác của mô hình trên tập dữ liệu validation Chúng ta sử dụng hàm datasets.load_digits() để tải tập dữ liệu MNIST Sau đó, chúng ta đã sử dụng hàm train_test_split() để chia tập dữ liệu thành tập huấn luyện và tập validation Tiếp theo,chúng ta đã khởi tạo mô hình SVM bằng cách sử dụng lớp SVC và chọn kernel function là 'linear' Sau đó, chúng ta đã sử dụng phương thức fit() để huấn luyện mô hình trên tập dữ liệu huấn luyện 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() Kết quả cho ra khá tốt với độ chính ảnh chữ số viết tay Để đạ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.
Phần VI So sánh độ chính xác của 2 mô hình CNN và SVM bằng Accuracy, Confusion Matrix, Precision and Recall
Đánh giá độ chính xác của mô hình
[1] “NHẬN DẠNG CHỮ SỐ VIẾT TAY DỰA TRÊN MẠNG NƠ-RON TÍCH CHẬP SÂU”, Nguyễn Văn Tú, Hoàng Thị Lam, Nguyễn Thị Thanh Hà, TẠP CHÍ KHOA HỌC Khoa học Tự nhiên và Công nghệ, Số 14 (4/2019).
[2] “The Elements of Statistical Learning: Data Mining, Inference, and Prediction" Trevor Hastie, Robert Tibshirani and Jerome Friedman
[3]Sklearn: Receiver Operating Characteristic (ROC)
[4]Receiver Operating Characteristic (ROC) with cross validation
[5]A systematic analysis of performance measures for classification tasks