Trong hệ thống BCI dựa vào điện não đồ, mục đích của bƣớc phân loại là phân loại tín hiệu EEG thành hai lớp tƣơng ứng với trạng thái của não bộ. Tiến hành phân loại tín hiệu EEG của các mẫu thử nghiệm xuất hiện ký tự đƣợc bôi đen không phải ký tự đích, đƣợc xếp vào lớp non-target với tín hiệu EEG của những mẫu thử nghiệm xuất hiện đúng ký tự đích mà ngƣời sử dụng tập trung suy nghĩ, đƣợc xếp vào lớp target. Phƣơng pháp sử dụng cho phân loại dữ liệu điện não đồ là phân tích khác biệt tuyến tính đa bƣớc (multi-step LDA).
Ví dụ, ngƣời làm nhiệm vụ đo tiến hành đo tín hiệu EEG tại điện cực O1 cho 15 tập dữ liệu với các mẫu thử nghiệm khác nhau. Nhiệm vụ là phân biệt các mẫu thử nghiệm xuất hiện đúng ký tự đích với những mẫu xuất hiện ký tự khác không phải đích.
Hình 3.13. Hai mẫu thử nghiệm: Thử nghiệm xuất hiện đúng ký tự đích E (bên trái) và thử nghiệm xuất hiện ký tự khác là A (bên phải) [8]
Trong thử nghiệm trên, ký tự có màu đỏ là ký tự xuất hiện ngẫu nhiên gây ra tín hiệu EEG và đó là ký tự sẽ đƣợc đếm, ký tự có nền màu xanh biểu hiện trong thử nghiệm là ký tự đích mà ngƣời sử dụng tập trung suy nghĩ đến. Với hình trên, thử nghiệm đƣa ra ký tự đích là chữ E. Hình bên phải cho thấy chữ A là ký tự đƣợc bôi đen, ta tiến hành lƣu lại tín hiệu EEG khi chữ A xuất hiện. Hình bên trái cho thấy chữ E là ký tự đƣợc bôi đen và tiếp tục ghi lại tín hiệu EEG khi chữ E xuất hiện. Lúc này, ký tự đích xuất hiện và tín hiệu EEG có cƣờng độ mạnh hơn so với cƣờng độ của tín hiệu EEG khi chữ A xuất hiện.
Hình 3.14. Biểu đồ phân loại tín hiệu EEG tại điện cực O1 cho 15 tập dữ liệu [8]
Trong biểu đồ phân loại tín hiệu EEG trên: các đƣờng nét đứt màu đỏ biểu diễn cụ thể tín hiệu EEG của từng mẫu thử nghiệm xuất hiện các ký tự đích, thuộc lớp target và các đƣờng nét đứt màu xanh biểu diễn tín hiệu EEG của mẫu thử nghiệm xuất hiện ký tự khác không phải ký tự đích, thuộc lớp non-target. Các đƣờng màu đỏ nét liền nổi bật biểu diễn giá trị trung bình của tất cả các mẫu thử nghiệm xuất hiện đúng ký tự đích; các đƣờng màu xanh nét liền nổi bật biểu diễn giá trị trung bình của tất cả các mẫu thử nghiệm xuất hiện ký tự không trùng với ký tự đích mà ngƣời sử dụng suy nghĩ.
PHẦN IV: KẾT QUẢ THỰC NGHIỆM
Kết quả thực nghiệm đƣợc xây dựng trên môi trƣờng làm việc của phần mềm Matlab R2013a. Giao diện chƣơng trình đƣợc thiết kế bằng công cụ GUIDE trong Matlab.
Dữ liệu điện não đồ sử dụng trong báo cáo là dữ liệu của một thí nghiệm từ hệ thống giao tiếp não - máy tính, bởi Frenzel và đồng nghiệp, tham khảo[9]. Một hệ thống giao tiếp não - máy tính có thể giúp ngƣời sử dụng điều khiển các thiết bị điện tử hoặc máy tính bằng cách sử dụng hoạt động của não bộ. Hệ thống này nhận ra ý định của ngƣời sử dụng dựa trên dữ liệu điện não đồ quan sát đƣợc [1].
Với thí nghiệm đƣợc mô tả nhƣ trên phần 3.2, tập dữ liệu bao gồm 9 dữ liệu dài, mỗi dữ liệu dài gồm 7290 mẫu thử nghiệm đƣợc chia thành 2 phần là: phần 1 gồm 3645 mẫu với các dữ liệu EEG có tín hiệu đã đƣợc lọc và phần 2 gồm 3645 mẫu với các dữ liệu EEG có tín hiệu chƣa đƣợc lọc. Trong thí nghiệm, hiệu điện thế đo đƣợc trên da đầu chính là số chiều của vectơ biểu diễn , số chiều của thƣờng rất lớn ( 30000). Áp dụng các phƣơng pháp tiền xử lý dữ liệu, số chiều của đã giảm xuống còn khoảng 1024 [1] (với hệ số giảm số chiều tốt nhất là 32) nhƣng vẫn còn lớn. Trong báo cáo sử dụng dữ liệu gồm 3645 mẫu (có thể của phần 1 hoặc phần 2 phụ thuộc vào lúc chọn dữ liệu) để xây dựng kết quả thực nghiệm. Đối với kết quả thực nghiệm, sử dụng mẫu đầu tiên cho dữ liệu huấn luyện (training data) và các mẫu còn lại đƣợc dùng cho dữ liệu kiểm tra (test data). Tập dữ liệu gồm hai lớp: target(xuất hiện ký tự đích) và non-target (xuất hiện ký tự khác ký tự đích) tƣơng ứng với trạng thái của não bộ.
Giao diện kết quả thực nghiệm đã xây dựng:
Hình 4.1. Giao diện kết quả thực nghiệm
Tập dữ liệu huấn luyện (training data) gồm mẫu đầu tiên, với = 2000 (223 mẫu thuộc lớp target và 1777 mẫu thuộc lớp non-target), các mẫu còn lại dùng cho dữ liệu kiểm tra (test data).
Hình 4.2. Giao diện tiền xử lý với hệ số giảm số chiều là 32, tính score của hàm multi-step LDA với kiểu (32, 2, 2, 2, 2, 2) và giá trị AUC của multi-step LDA
Sau khi áp dụng multi-step LDA sẽ tìm đƣợc score, chính là điểm cuối cùng dùng cho phân loại. Dữ liệu kiểm tra từ mẫu 2100 đến mẫu 3009, multi-step LDA với kiểu (32, 2, 2, 2, 2, 2) tính đƣợc giá trị AUC = 0,8539 chứng tỏ hiệu suất phân loại tốt (good).
Mỗi mẫu thử nghiệm của dữ liệu huấn luyện cũng sẽ có một score, từ đó có thể xác định đƣợc giá trị của ngƣỡng (threshold) dùng để phân loại cho dữ liệu kiểm tra. Nếu score lớn hơn hoặc bằng ngƣỡng thì phân vào lớp target (tƣơng đƣơng giá trị logic là 1), còn nếu score nhỏ hơn ngƣỡng thì phân vào lớp non- target. Với dữ liệu kiểm tra trên, ngƣỡng phân loại (tƣơng đƣơng giá trị logic là 0) threshold = 7.54412.
Hình 4.3. Giao diện tính ngƣỡng phân loại
Tất cả các kết quả tính toán nhƣ giá trị tiền xử lý, score, giá trị AUC và giá trị ngƣỡng… đều đƣợc hiển thị trong không gian làm việc (workspace) của Matlab. Biểu đồ phân loại dữ liệu điện não đồ tại một điện cực (channel) cho từng mẫu (sample) thử nghiệm của dữ liệu. Các mẫu thuộc lớp target sẽ đƣợc biểu diễn bởi đƣờng nét đứt màu đỏ và các mẫu non-target sẽ đƣợc biểu diễn bởi đƣờng nét đứt màu xanh. Hai đƣờng nét liền là đƣờng trung bình của từng lớp: đƣờng nét liền màu đỏ biểu diễn giá trị trung bình cho lớp target (target mean) và đƣờng nét liền màu xanh biểu diễn giá trị trung bình cho lớp non-target (nontarget mean).
Hình 4.4. Giao diện biểu đồ phân loại tại điện cực Fz của mẫu 101 thuộc lớp target
Hình 4.5. Giao diện biểu đồ phân loại tại điện cực Fz của mẫu 1000 thuộc lớp non-target
So sánh multi-step LDA với các phƣơng pháp phân loại khác gồm: LDA, two-step LDA và regularized LDA để phân loại dữ liệu điện não đồ thành hai lớp tƣơng ứng với trạng thái của não bộ. Kết quả cho thấy phƣơng pháp multi-step LDA là một phƣơng pháp phân loại tốt hơn so với các phƣơng pháp khác. Ở đây em xin đƣợc trích dẫn kết quả trong báo cáo Huy và Giang, tham khảo [1]:
Bảng 4.1. Trung bình giá trị AUC của LDA, two-step LDA, regularized LDA và multi-step LDA qua 42 tập dữ liệu.
100 125 150 175 200 225 250 lda 0.7704 0.7723 0.7824 0.7918 0.8010 0.8132 0.8157 cvrlda 0.7893 0.8018 0.8104 0.8130 0.8218 0.8347 0.8386 oprlda 0.7823 0.7923 0.8030 0.8094 0.8162 0.8260 0.8296 tslda 0.7467 0.7767 0.7959 0.8100 0.8223 0.8367 0.8471 mtslda1 0.8064 0.8223 0.8356 0.8434 0.8556 0.8620 0.8647 mtslda2 0.8079 0.8190 0.8281 0.8367 0.8414 0.8440 0.8500 mtslda3 0.8076 0.8192 0.8326 0.8414 0.8461 0.8516 0.8557 mtslda4 0.8207 0.8309 0.8440 0.8489 0.8580 0.8646 0.8686 mtslda5 0.7872 0.8079 0.8237 0.8306 0.8418 0.8503 0.8531
Trong báo cáo sử dụng 42 tập dữ liệu ngắn với dung lƣợng mẫu từ 450 đến 477. Mỗi tập dữ liệu gồm mẫu đầu tiên, với = 100, 125, 150, 175, 200, 225, 250 đƣợc dùng nhƣ dữ liệu huấn luyện, những tập dữ liệu còn lại dùng cho kiểm tra. Do một trong hai lớp có dung lƣợng nhỏ nên tỉ số lỗi phân loại không phải là đánh giá có ý nghĩa, thay vào đó sử dụng giá trị AUC. Trung bình của các giá trị AUC qua 42 tập dữ liệu đƣợc trình bày trong bảng 4.1. Trung bình giá trị AUC của regularized LDA với tham số chính quy đƣợc tính bằng công thức đƣợc đƣa ra bởi Schäfer và Strimmer (oprlda) hoặc xác nhận chéo (cvrlda).Trung bình giá trị
2, 2, 2) (mtslda1), (2, 2, 2, 2, 2, 2, 2, 2, 2, 2) (mtslda2), (4, 8, 2, 2, 2, 2, 2) (mtslda3), (8, 4, 2, 2, 2, 2, 2) (mtslda4), (32, 2, 2, 2, 2, 2) (mtslda5) cũng đƣợc đƣa ra trong bảng này. Trừ LDA, two-step LDA và multi-step LDA với kiểu (32, 2, 2, 2, 2, 2) hiệu suất phân loại của chúng đều tốt hơn regularized LDA cho tới thời điểm này. Với kiểu (32, 2, 2, 2, 2, 2) hiệu suất phân loại của two-step LDA và multi-step LDA tồi đối với nhỏ, nhƣ = 100 nhƣng tốt hơn với lớn, nhƣ = 250 so với regularized LDA.
Hình 4.6. So sánh hiệu suất của multi-step LDA kiểu (16, 2, 2, 2, 2, 2, 2) và regularized LDA qua 42 tập dữ liệu. Mức ý nghĩa thống kê đƣợc tính bởi
một kiểm thử xếp hạng Wilcoxon
Hình vẽ này trình bày biểu đồ hộp của những giá trị AUC của regularized LDA sử dụng xác nhận chéo (cvrlda) và multi-step LDA kiểu (16, 2, 2, 2, 2, 2, 2) (mtslda1) qua 42 tập dữ liệu trên. Nhƣ trung bình giá trị AUC trong bảng 4.1, trung vị của multi-step LDA kiểu (16, 2, 2, 2, 2, 2, 2) lớn hơn regularized LDA. Mức ý nghĩa thống kê đƣợc tính bởi một kiểm thử xếp hạng Wilcoxon. Đầu tiên giá trị
giảm cho đến = 175 rồi tăng. Điều này chứng tỏ multi-step LDA có tốc độ hội tụ nhanh hơn regularized LDA.
PHẦN V: KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN
Khóa luận tập trung nghiên cứu lý thuyết và áp dụng phân tích khác biệt tuyến tính đa bƣớc (multi-step LDA) cho phân loại dữ liệu điện não đồ có số chiều cao. Những kết quả mà khóa luận đã đạt đƣợc:
Về lý thuyết: Trƣớc tiên là tìm hiểu thành công phƣơng pháp phân tích khác biệt tuyến tính (LDA). Khi áp dụng phƣơng pháp LDA cho dữ liệu có số chiều nhỏ rất hiệu quả, vì trong thực nghiệm đối với LDA, giá trị của vectơ trung bình và ma trận hiệp phƣơng sai là chƣa biết nên có thể ƣớc lƣợng chúng từ dữ liệu huấn luyện. Nhƣng khi áp dụng LDA cho dữ liệu với số chiều cao thì việc ƣớc tính ma trận hiệp phƣơng sai gặp khó khăn. Do đó, với dữ liệu có số chiều cao, cụ thể là dữ liệu điện não đồ, phƣơng pháp tối ƣu là multi-step LDA, nó thực hiện việc phân loại tốt hơn các phƣơng pháp phân loại khác. Khi áp dụng multi-step LDA, vấn đề gặp phải là việc chia các thuộc tính thành các nhóm con ở mỗi bƣớc sao cho kết quả phân loại nhận đƣợc là tốt. Cách khắc phục cho vấn đề đó là nên nhóm các thuộc tính sao cho giữa các nhóm càng độc lập càng tốt [1]. Tiếp theo là tìm hiểu về dữ liệu điện não đồ, hệ thống BCI dựa vào điện não đồ và một số ứng dụng của nó trong thực tiễn, điển hình là hệ thống viết bằng ý nghĩ.
Về thực nghiệm: Đối với dữ liệu điện não đồ có số chiều cao sử dụng trong khóa luận, xây dựng thành công kết quả thực nghiệm bằng giao diện GUI trong Matlab. Giao diện sử dụng phƣơng pháp multi-step LDA để phân loại dữ liệu điện não đồ, tính đƣợc hiệu suất phân loại bởi giá trị AUC và đƣa ra biểu đồ phân loại đối với từng mẫu thử nghiệm tại mỗi điện cực. Kết quả thực nghiệm có tồn tại là giao diện GUI trong Matlab không hỗ trợ tiếng việt.
Hƣớng phát triển: Xây dựng kết quả thực nghiệm bằng cách kết hợp các phƣơng pháp phân loại nêu trên trong việc phân loại dữ liệu điện não đồ có số chiều cao mà báo cáo khóa luận sử dụng.
PHỤ LỤC: CÁC HÀM CỦA MATLAB SỬ DỤNG TRONG KHÓA LUẬN TỐT NGHIỆP [3][4][22]
1. Hàm axis():
Công dụng: Cài đặt giới hạn cho hệ trục.
Cú pháp: axis([xmin xmax ymin ymax zmin zmax])
Giải thích: Thiết lập giới hạn hay tỉ lệ cho 3 trục x, y, z trong hệ tọa độ 3D theo các giá trị nhỏ nhất (min) và giá trị lớn nhất (max) đƣợc đƣa ra trong vectơ hàng.
2. Hàm caxis():
Công dụng: Cài đặt màu sắc cho đồ thị. Cú pháp: caxis([cmin cmax]):
Mô tả: Kiểm soát và thay đổi màu sắc cho đồ thị theo giá trị min, max của dữ liệu đƣợc đƣa ra trong vectơ hàng. Caxis sử dụng bảng màu trong hàm
colormap nguyên bản cho dữ liệu trong dải giữa cmin và cmax. Những
điểm dữ liệu có giá trị lớn hơn cmax sẽ bị chia ra thành các màu kết hợp với
cmax và những điểm dữ liệu có giá trị nhỏ hơn cmin sẽ bị chia ra thành các
màu kết hợp với cmin. Nếu cmin nhỏ hơn giá trị min của dữ liệu hoặc cmax lớn hơn giá trị max của dữ liệu thì các màu kết hợp với cmin hoặc cmax sẽ đƣợc không đƣợc dùng, mà chỉ một phần nhỏ của bảng màu colormap đƣợc dùng.
3. Hàm cov():
Cú pháp: cov(A)
Mô tả: Giá trị đầu vào A là một vectơ, hàm trả về giá trị là phƣơng sai của A. Giá trị đầu vào A là một ma trận, mỗi hàng của ma trận là một vectơ biểu diễn, mỗi cột là một biến thì giá trị đầu ra của hàm là ma trận hiệp phƣơng sai của A.
4. Hàm diag():
Công dụng: Ma trận chéo hóa. Cú pháp:
diag(A,k)
diag(A)
Mô tả:
Giá trị đầu vào A là một vectơ hàng hoặc vectơ cột có n phần tử, hàm
diag(A,k) trả về một ma trận vuông symbolic có bậc n+abs(k) (với abs(k)
- tính giá trị tuyệt đối của k), các phần tử của A nằm trên đƣờng chéo thứ
k. Với k = 0 là đƣờng chéo chính; k>0 đƣờng chéo thứ k ở phía trên
đƣờng chéo chính; k<0 ở dƣới đƣờng chéo chính.
Hàm diag(A) trả về giá trị tƣơng đƣơng với trƣờng hợp k = 0. 5. Hàm disp():
Công dụng: Hiển thị nội dung văn bản lên màn hình. Cú pháp: disp(„text‟)
Mô tả: Hiển thị nội dung chuỗi kí tự text trong cặp dấu nháy đơn lên màn hình.
6. Hàm eig():
Công dụng: Tính giá trị riêng và vectơ riêng. Cú pháp: [V, D] = eig(A)
Mô tả: Giá trị đầu vào là một ma trận vuông A, hàm trả về hai giá trị đầu ra là vectơ riêng V theo cột và các giá trị riêng là vectơ D theo các phân tử trên đƣờng chéo chính.
7. Hàm eye():
Công dụng: Tạo ma trận đơn vị. Cú pháp:
eye(r)
eye(r,c)
Mô tả:
Giá trị đầu vào là r, hàm eye(r) trả về một ma trận có r hàng và r cột với các giá trị 1 tại đƣờng chéo chính và giá trị 0 tại các phần tử còn lại, ma trận đó là ma trận đơn vị.
Giá trị đầu vào là r và c, hàm eye(r,c) trả về một ma trận đơn vị có r hàng và c cột.
Cú pháp: find(A)
Mô tả: Giá trị đầu vào là một ma trận A, hàm trả về một ma trận chứa các chỉ số của các phần tử khác không trong ma trận A. Nếu giá trị đầu vào A là một biểu thức logic thì hàm sẽ trả về một ma trận chứa các chỉ số của các phần tử khác không thỏa mãn biểu thức logic A.
9. Hàm isnan():
Công dụng: Các phần tử của ma trận là không xác định (NaN). Cú pháp: isnan(A)
Mô tả: Giá trị đầu vào là ma trận A, hàm trả về một ma trận có kích thƣớc nhƣ A, chứa các giá trị logic 1 (đúng) khi các phần tử của A là không xác định (NaN) hay logic 0 (sai).
10. Hàm length():
Công dụng: Kích thƣớc của vectơ hoặc số chiều lớn nhất ma trận. Cú pháp: length(A)
Mô tả: Giá trị đầu vào là vectơ hoặc ma trận A, hàm trả về kích thƣớc của vectơ A hoặc số chiều lớn nhất của ma trận A.
11. Hàm max():
Công dụng: Phần tử lớn nhất của ma trận. Cú pháp: max(A)
Mô tả: Nếu giá trị đầu vào là vectơ A thì hàm trả về phần tử lớn nhất của vectơ A. Nếu giá trị đầu vào là ma trận A thì coi các cột của ma trận A là
một vectơ và trả về một vectơ hàng chứa các phần tử lớn nhất từ mỗi cột của ma trận A.
12. Hàm mean():
Công dụng: Trung bình hoặc giá trị trung bình của ma trận. Cú pháp:
mean(A)
mean(A, d)
Mô tả:
Nếu giá trị đầu vào là vectơ A thì hàm mean(A) trả về giá trị trung bình
của A. Nếu giá trị đầu vào là ma trận A thì coi các cột của ma trận A là