Đặt vấn đề Trong lĩnh vực học máy Machine learning, mục tiêu của phân loại thống kê là sử dụng các đặc trưng, các thuộc tính của đối tượng/dữ liệu để xác định lớp/nhóm mà đối tượng/dữ l
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
KHÓA LUẬN TỐT NGHIỆP
Trang 2LỜI CẢM ƠN
Lời đầu tiên em xin được bày tỏ lòng biết ơn sâu sắc tới Thầy giáo hướng dẫn Tiến Sĩ Nguyễn Hoàng Huy, người đã dành rất nhiều thời gian quý báu để tận tình giúp đỡ, chỉ bảo và hướng dẫn em hoàn thành tốt khóa luận tốt nghiệp này
Em xin chân thành cảm ơn các thầy, cô giáo trong trường Đại học Nông nghiệp Hà Nội, đặc biệt là các thầy cô Khoa Công nghệ thông tin đã giảng dạy, truyền thụ rất nhiều kiến thức và tạo điều kiện cho em được học tập, được nghiên cứu tại trường trong suốt quãng thời gian qua, giúp cho em có kiến thức chuyên môn để hoàn thành tốt khóa luận
Cuối cùng, em xin gửi lời cảm ơn tới gia đình và bạn bè, những người thân
đã luôn quan tâm, chăm sóc và động viên em trong thời gian thực hiện khóa luận tốt nghiệp
Vì điều kiện khách quan và thời gian thực hiện có hạn nên khóa luận không tránh khỏi có những vấn đề thiếu sót nhất định Em rất mong nhận được những ý kiến đóng góp từ phía các thầy cô và các bạn
Em xin chân thành cảm ơn!
Hà Nội, ngày 30 tháng 5 năm 2014
Sinh viên thực hiện
Đặng Thị Phượng
Trang 3MỤC LỤC
LỜI CẢM ƠN i
MỤC LỤC ii
DANH MỤC BẢNG iv
DANH MỤC HÌNH ẢNH iv
DANH MỤC TỪ VIẾT TẮT vi
DANH MỤC CÁC KÝ HIỆU vii
PHẦN I: MỞ ĐẦU 1
1.1 Đặt vấn đề 1
1.2 Mục đích đề tài nghiên cứu 2
1.3 Phương pháp nghiên cứu 3
1.4 Cấu trúc khóa luận 3
PHẦN II: PHÂN TÍCH KHÁC BIỆT TUYẾN TÍNH 4
2.1 Một số kiến thức cơ bản 4
2.1.1 Dữ liệu 4
2.1.2 Phân bố của dữ liệu 4
2.1.3 Phân bố lý thuyết 5
2.1.4 Phân bố chuẩn nhiều chiều [14] 9
2.2 Bài toán phân loại 13
2.3 Tỉ số lỗi 14
2.4 Phân tích khác biệt tuyến tính 14
2.4.1 Mô hình LDA lý thuyết 14
Trang 42.4.2 Mô hình LDA thực nghiệm 15
2.4.3 Xây dựng hàm phân biệt của LDA 17
2.5 Phân tích khác biệt tuyến tính được chính quy hóa (Regularized LDA) [8] 17 2.6 Phân tích khác biệt tuyến tính đa bước (Multi-step LDA) [1][8] 18
2.7 Xây dựng hàm phân biệt multi-step LDA 20
PHẦN III: DỮ LIỆU ĐIỆN NÃO ĐỒ TỪ HỆ THỐNG 31
3.1 Hệ thống giao tiếp não – máy tính dựa vào điện não đồ 31
3.1.1 Hệ thống giao tiếp não – máy tính 31
3.1.2 Dữ liệu điện não đồ 33
3.1.3 Một số ứng dụng của điện não đồ EEG 36
3.2 Dữ liệu điện não đồ từ hệ thống viết bằng ý nghĩ 38
3.3 Một số phương pháp tiền xử lý dữ liệu [8] 42
3.3.1 Đối sánh và chuẩn hóa dữ liệu 42
3.3.2 Giảm số chiều dữ liệu 43
3.4 Phân loại dữ liệu điện não đồ 43
PHẦN IV: KẾT QUẢ THỰC NGHIỆM 46
PHẦN V: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 54
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] 56
TÀI LIỆU THAM KHẢO 70
Trang 5DANH MỤC BẢNG
Bảng 2.1 Bảng dữ liệu chiều dài của 31 con cá 5
Bảng 2.2 Mức độ chính xác của giá trị AUC 30
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 .51
DANH MỤC HÌNH ẢNH Hình 2.1 Biểu đồ biểu diễn tần số và tần suất của dữ liệu A 5
Hình 2.2 Đồ thị hàm mật độ xác suất của phân bố chuẩn [14] 7
Hình 2.3 Đồ thị hàm mật độ xác suất của phân bố đều [14] 8
Hình 2.4 Biểu đồ tần số của dữ liệu B 9
Hình 2.5 Biểu đồ mô phỏng hàm mật độ xác suất của phân bố chuẩn hai chiều 12
Hình 2.6 Biểu đồ mô phỏng phân bố chuẩn 2 chiều bằng Matlab 13
Hình 3.1 Hình minh họa người sử dụng muốn đánh vần chữ O [20] 31
Hình 3.2 Sơ đồ của giao tiếp não – máy tính [8] 32
Hình 3.3 Chiếc mũ được gắn các điện cực [19] 33
Hình 3.4 Người sử dụng đội chiếc mũ được gắn sẵn các điện cực cùng với thiết bị đo [19] 34
Hình 3.5 Điện não đồ đo được tại các điện cực lẫn cả nhiễu do hoạt động của cơ bắp gây ra [8] 35
Trang 6Hình 3.6 Điện não đồ đo được tại các điện cực lẫn cả nhiễu do hoạt động của mắt
gây ra [8] 35
Hình 3.7 Chiếc chân giả được điều khiển bằng ý nghĩ [17] 37
Hình 3.8 Chiếc máy bay quadcopter được điều khiển bằng ý nghĩ [18] 38
Hình 3.9 Vị trí đặt 32 điện cực theo hệ thống 10-20[19] 39
Hình 3.10 Một mẫu thử nghiệm trong quá trình người sử dụng đọc ký tự [10] 40
Hình 3.11 Sơ đồ mô tả thời gian xuất hiện cho mỗi thử nghiệm[8] 40
Hình 3.12 Điện não đồ EEG ghi nhận tại một điện cực khi xuất hiện ký tự được bôi đen [14] 41
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] 44
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] 45 Hình 4.1 Giao diện kết quả thực nghiệm 47
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 48
Hình 4.3 Giao diện tính ngưỡng phân loại 49
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 .50
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 50
Trang 7Hì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 52
DANH MỤC TỪ VIẾT TẮT
Trang 8Hàm mật độ xác suất của biến ngẫu nhiên
Ma trận hiệp phương sai của vectơ ngẫu nhiên
̂ Hàm phân biệt tuyến tính thực nghiệm của Hàm phân biệt tuyến tính lý thuyết của
{ } mẫu thuộc về lớp thứ nhất
Trang 9PHẦN I: MỞ ĐẦU
1.1 Đặt vấn đề
Trong lĩnh vực học máy (Machine learning), mục tiêu của phân loại thống
kê là sử dụng các đặc trưng, các thuộc tính của đối tượng/dữ liệu để xác định lớp/nhóm mà đối tượng/dữ liệu đó thuộc về Để xác định lớp/nhóm chính xác cho đối tượng/dữ liệu, cần phải dựa vào việc đo lường các giá trị thuộc tính của đối tượng/dữ liệu và thường biểu diễn dưới dạng một vectơ, số chiều của vectơ chính
là số thuộc tính của đối tượng/dữ liệu
“Ngày nay, dữ liệu số chiều cao xuất hiện trong hầu khắp các lĩnh vực như công nghệ thông tin, tin sinh, thiên văn học,…” [11] Các kiểu dữ liệu này thường
có số thuộc tính lớn hơn dung lượng mẫu của tập dữ liệu Dữ liệu số chiều cao (high-dimensional data), có nghĩa là vectơ biểu diễn cho dữ liệu có số chiều nhiều hơn hai hoặc ba chiều Trong thống kê nhiều chiều, dữ liệu có số chiều lớn hơn so với dữ liệu trong thống kê cổ điển [11]
Dữ liệu từ hệ thống giao tiếp não - máy tính (data from brain computer interfaces),
dữ liệu gen và vi mảng (genetic and microarray data), dữ liệu tài chính có tần số cao (high-frequency financial data) là những dữ liệu có số chiều cao phổ biến Báo cáo với hướng nghiên cứu về dữ liệu điện não đồ (ElectroEncephaloGraphy - EEG)
có số chiều cao từ hệ thống giao tiếp não - máy tính (Brain Computer Interfaces - BCI) Mục đích của hệ thống BCI là phân loại dữ liệu điện não đồ tương ứng với trạng thái của não bộ[1][6]
Một số phương pháp phân loại phổ biến như phân loại k-nearest neighbor nearest neighbor classifiers), phân loại tuyến tính (linear classifiers), máy vectơ hỗ trợ (support vector machines - SVM), mạng nơron (neural networks) và một số
Trang 10(k-phương pháp khác Những (k-phương pháp phân loại đơn giản luôn được chọn thay cho những phương pháp phân loại phức tạp Trong số những phương pháp phân loại trên, phân loại tuyến tính (linear classifiers) là phương pháp duy nhất được chỉ
ra là phương pháp phân loại đơn giản và cần thiết cho quá trình phân loại Các phương pháp còn lại đều là những phương pháp phức tạp và không cần thiết Đối với phân loại tuyến tính, phương pháp tiếp cận chủ yếu là phân tích khác biệt tuyến tính (linear discriminant analysis - LDA) Bởi vì, LDA là phương pháp phân loại với độ chính xác tương đối LDA thường sử dụng để phân loại cho hai lớp đối với tất cả thuộc tính của dữ liệu và có thể mở rộng ra đối với nhiều lớp [13]
Hướng nghiên cứu mà báo cáo này tập trung vào là áp dụng phương pháp LDA cho nhiều bước để phân loại dữ liệu từ hệ thống giao tiếp não - máy tính dựa trên dữ liệu điện não đồ, thay vì áp dụng nó cho tất cả các thuộc tính cùng một lúc Được sự đồng ý của Khoa Công nghệ thông tin - Trường Đại học Nông nghiệp Hà Nội và Giảng viên hướng dẫn em là TS Nguyễn Hoàng Huy, em quyết định chọn
đề tài: “Phân tích khác biệt tuyến tính đa bước cho phân loại dữ liệu điện não
đồ số chiều cao” làm khóa luận tốt nghiệp của mình
1.2 Mục đích đề tài nghiên cứu
- Tìm hiểu phương pháp phân tích khác biệt tuyến tính (LDA)
- Tìm hiểu phương pháp phân tích khác biệt tuyến tính đa bước (multi-step
LDA)
- Tìm hiểu dữ liệu điện não đồ EEG và hệ thống BCI dựa vào EEG
- Kiểm tra hiệu suất phân loại của phương pháp multi-step LDA đối với phân loại dữ liệu điện não đồ có số chiều cao
- Xây dựng kết quả thực nghiệm đối với dữ liệu điện não đồ có số chiều cao
Trang 111.3 Phương pháp nghiên cứu
Nghiên cứu các tài liệu, bài báo, nghiên cứu của các tác giả trong và ngoài nước về LDA, multi-step LDA, EEG và hệ thống BCI dựa vào EEG, các thông tin trên Internet
1.4 Cấu trúc khóa luận
Ngoài các phần mục lục, danh mục bảng, danh mục hình ảnh, danh mục từ viết tắt, danh mục các ký hiệu, phụ lục, tài liệu tham khảo, khóa luận được chia làm 5 phần chính như sau:
Phần I: Phần mở đầu, nêu vấn đề, mục đích, phương pháp nghiên cứu đề tài
và cấu trúc của khóa luận
Phần II: Nêu một số kiến thức cơ bản liên quan đến đề tài nghiên cứu của
khóa luận; tìm hiểu phương pháp phân tích khác biệt tuyến tính (LDA) và step LDA; xây dựng hàm LDA và multi-step LDA
multi-Phần III: Trình bày về dữ liệu điện não đồ EEG, hệ thống BCI dựa vào
EEG và một số ứng dụng của EEG; tìm hiểu dữ liệu EEG cho hệ thống viết bằng
ý nghĩ
Phần IV: Xây dựng kết quả thực nghiệm với dữ liệu điện não đồ có số chiều
cao
Phần V: Tổng kết những kết quả mà khóa luận đã đạt được và đưa ra định
hướng phát triển tiếp theo cho đề tài
Trang 12PHẦN II: PHÂN TÍCH KHÁC BIỆT TUYẾN TÍNH
(Linear Discriminant Analysis)
2.1 Một số kiến thức cơ bản
2.1.1 Dữ liệu
Dữ liệu là các đối tượng, hình ảnh, chuỗi các bit, số, ký hiệu mà máy tính có thể lưu trữ, biểu diễn và xử lý trong công việc hàng ngày [14]
Ví dụ: Một danh sách sinh viên có các thông tin sau: Mã sinh viên, Họ tên,
Điểm tích lũy Muốn lưu trữ thông tin của sinh viên ta cần ghi các thông tin đó thành chuỗi các bit lưu trữ dưới dạng dữ liệu trong máy tính để quá trình xử lý về sau dễ dàng
2.1.2 Phân bố của dữ liệu
Phân bố của dữ liệu là độ dày đặc hay thưa thớt của số liệu trong các miền
dữ liệu khác nhau, sự phân bố đó được thể hiện qua biểu đồ tần số và biểu đồ tần suất:
- Biểu đồ tần số là một dạng biểu đồ cột đơn giản, biểu diễn lần xuất
hiện của mỗi giá trị trong tập n dữ liệu
- Tỉ số là tần suất xuất hiện của giá trị, biểu đồ tần suất dùng để biểu diễn tỉ số đó
- Ví dụ: Cho dữ liệu A là chiều dài của 31 con cá:
Trang 13Bảng 2.1 Bảng dữ liệu chiều dài của 31 con cá
30 30 25 25 35 45 40 40 35 45
25 45 30 30 30 40 30 25 45 45
35 35 30 40 40 40 35 35 35 35 35
Mô tả sự phân bố của dữ liệu A qua biểu đồ biểu diễn tần số và tần suất:
Hình 2.1 Biểu đồ biểu diễn tần số và tần suất của dữ liệu A
2.1.3 Phân bố lý thuyết
Phân bố của dữ liệu được mô hình hóa bởi các phân bố lý thuyết như phân
bố chuẩn và phân bố đều
Biến ngẫu nhiên là phép đặt tương ứng các kết quả có thể của phép thử ngẫu nhiên vào tập số thực Biến ngẫu nhiên gồm có hai loại: Biến ngẫu nhiên rời rạc
Trang 14là loại biến ngẫu nhiên chỉ nhận một số hữu hạn hay vô hạn đếm đƣợc các giá trị
Và biến ngẫu nhiên liên tục là loại biến ngẫu nhiên có thể nhận các giá trị trong một khoảng hoặc một số khoảng giá trị thực nào đó [2]
Hàm mật độ xác suất của biến ngẫu nhiên liên tục là hàm số xác định trên thỏa mãn
√ ( )
Trang 15Hình 2.2 Đồ thị hàm mật độ xác suất của phân bố chuẩn [14]
Dữ liệu phân bố chủ yếu xung quanh giá trị trung bình và thƣa thớt dần về hai bên
- Phân bố đều [14]
Phân bố đều là một phân bố mà xác suất xảy ra nhƣ nhau cho mọi kết quả của biến ngẫu nhiên liên tục Hàm mật độ xác suất của phân bố đều với biến ngẫu nhiên liên tục , giá trị cực tiểu và giá trị cực đại , có dạng:
{
Trang 16
Hình 2.3 Đồ thị hàm mật độ xác suất của phân bố đều [14]
Dữ liệu được mô phỏng ngẫu nhiên trong đoạn [a, b] và phân bố đều trong đoạn đó
Mô phỏng các phân bố ngẫu nhiên là sử dụng các chương trình máy tính sinh ra dữ liệu một cách ngẫu nhiên theo phân bố xác định nào đó
Ví dụ: Cho dữ liệu B phân bố đều trong đoạn [0,1] và được sinh ngẫu nhiên
1000 lần Sử dụng lệnh B = rand(1000,1) trong Matlab, kết quả của lệnh là một ma
trận gồm 1000 hàng và 1 cột, chứa toàn bộ dữ liệu B, biểu diễn dữ liệu B dưới dạng biểu đồ tần số như sau:
Trang 17Hình 2.4 Biểu đồ tần số của dữ liệu B 2.1.4 Phân bố chuẩn nhiều chiều [14]
Phân bố chuẩn nhiều chiều đôi khi được gọi là phân bố Gauss nhiều chiều, là
tổng quát hóa của phân bố chuẩn một chiều (còn gọi là phân bố Gauss) cho không
gian nhiều chiều hơn
Vectơ ngẫu nhiên có chiều được ký hiệu là ( ) , trong đó các thành phần của nó là các biến ngẫu nhiên độc lập tuân theo phân
bố chuẩn chuẩn hóa; vectơ trung bình , được ký hiệu là [ ] và
ma trận hiệp phương sai kích thước
Trong thống kê, vectơ trung bình của vectơ ngẫu nhiên được xác định
Trang 18[( ) ] [( ) ] [( )( )]) [ ]
Hàm mật độ của vectơ ngẫu nhiên ( ) là hàm
( )
| | (
)
Trang 19Ví dụ: Vẽ biểu đồ mô phỏng hàm mật độ xác suất của phân bố chuẩn với số
Trang 20Hình 2.5 Biểu đồ mô phỏng hàm mật độ xác suất của phân bố chuẩn hai
Giá trị thử nghiệm cho hàm mo_phong_nhieu_chieu():
mu=[1 3]; %vecto trung binh sigma=[1 0.5;0.5 2.5]; %vecto ma tran hiep phuong sai
Trang 21Hình 2.6 Biểu đồ mô phỏng phân bố chuẩn 2 chiều bằng Matlab
2.2 Bài toán phân loại
Mỗi đối tượng có vectơ biểu diễn và thuộc vào một trong lớp tương ứng, với
Giả sử có đối tượng với vectơ biểu diễn tương ứng và đã biết lớp tương ứng của các Dữ liệu về đối tượng này gọi là dữ liệu huấn luyện
Xây dựng hàm phân loại , hàm phân loại có thể dự đoán lớp tương ứng cho đối tượng mới có vectơ biểu diễn với độ chính xác càng cao càng tốt
Trang 222.3 Tỉ số lỗi
Mục đích của bài toán phân loại là phân loại đối tượng mới dựa vào vectơ biểu diễn vào đúng lớp tương ứng của nó, sao cho xác suất phân loại sai là
nhỏ nhất, xác suất phân loại sai đó hay còn gọi là tỉ số lỗi của hàm phân loại
Tỉ số lỗi lý thuyết của hàm phân loại :
, trong đó, là lớp thực tương ứng với
Trong thực nghiệm, chỉ có thể xấp xỉ tỉ số lỗi lý thuyết trên dữ liệu kiểm tra
và độc lập hoàn toàn với dữ liệu huấn luyện Tỉ số lỗi của hàm phân loại xấp xỉ tỉ
số giữa số đối tượng bị phân loại sai với đối tượng trong dữ liệu kiểm tra
2.4 Phân tích khác biệt tuyến tính
Phân tích khác biệt tuyến tính, có tên tiếng anh là Linear Discriminant Analysis (LDA), là một phương pháp thống kê cổ điển, được phát triển vào năm
1936 bởi R.A Fisher
LDA được sử dụng thành công trong những vấn đề phân loại dữ liệu và tìm kiếm một sự kết hợp tuyến tính của các thuộc tính đặc trưng nhất hoặc tách hai hay nhiều lớp của đối tượng hoặc sự kiện Kết quả của sự kết hợp có thể được sử dụng như một bộ phân loại tuyến tính (linear classifier) hoặc phổ biến hơn đối với giảm
số chiều (dimensionality reduction) trước khi phân loại cuối [14]
2.4.1 Mô hình LDA lý thuyết
Trong không gian chiều, có hai lớp chứa đối tượng Mỗi đối tượng được cho bởi một vectơ biểu diễn Sự phân bố của các đối tượng trong hai lớp đều tuân theo phân bố chuẩn, với tham số vectơ trung bình và ma trận hiệp
Trang 23phương sai Sự phân bố đó tuân theo hai phân bố chuẩn có cùng ma trận hiệp phương sai và vectơ trung bình khác nhau
Vấn đề ở đây là cần phân loại đối tượng vào đúng lớp mà đối tượng đó thuộc
về Đối tượng có thể thuộc vào lớp thứ nhất hoặc lớp thứ hai Để phân loại đối tượng về các lớp tương ứng cần dựa vào vectơ biểu diễn , khi đó, vectơ sẽ tương đương với các phân bố chuẩn, được biểu diễn như sau:
hoặc Việc phân loại đối tượng sẽ hiệu quả hơn khi ta xây dựng các hàm phân biệt cho các thuộc tính của đối tượng
Trong trường hợp này, ta tiến hành xây dựng hàm phân tích khác biệt tuyến tính cho các thuộc tính (hay các phần tử) của đối tượng (hay vectơ biểu diễn ) Hàm phân biệt tuyến tính của (với ) được xác định bởi:
là giá trị của hàm phân biệt tuyến tính và được xác định trong lý thuyết
2.4.2 Mô hình LDA thực nghiệm
Giả sử có dữ liệu huấn luyện , trong không gian chiều xét vectơ biểu diễn
Trang 24cụ thể, gọi là ngƣỡng phân loại
Trong đó: ̂ là xác suất của lớp thứ nhất,
̂ là xác suất của lớp thứ hai
- Nếu ̂ ̂ (lớp thứ nhất)
- Nếu ̂ ̂ (lớp thứ hai)
Trang 25̂ ̂ ̂ ̂ ̂
2.4.3 Xây dựng hàm phân biệt của LDA
Giá trị đầu vào: train_data – là ma trận 2 chiều ( , _dung lượng mẫu
và _số chiều) chứa tập dữ liệu huấn luyện (training data); train_label – là
ma trận cột ( x 1) chứa nhãn hay lớp của dữ liệu; test_data – là ma trận 2 chiều ( ) chứa tập dữ liệu kiểm tra (test data)
Giá trị đầu ra: score – là ma trận chứa giá trị hàm phân biệt của LDA; w – là biến chứa giá trị của tích: ̂ ̂ ̂
Chương trình được viết trên Matlab, như sau:
function [score, w] = lda(train_data, train_label, test_data)
2.5 Phân tích khác biệt tuyến tính được chính quy hóa (Regularized LDA) [8]
Khi dung lượng mẫu của dữ liệu huấn luyện lớn hơn số thuộc tính , nhưng về độ lớn giống như : , sai số cộng dồn khi ước lượng rất nhiều
Trang 26phần tử của ma trận hiệp phương sai sẽ làm tăng tỉ số lỗi của LDA [1] Phân tích khác biệt tuyến tính được chính quy hóa (Regularized Linear Discriminant Analysis, viết tắt là regularized LDA) là phương pháp được đưa ra để giải quyết vấn đề này Regularized LDA thay thế ma trận hiệp phương sai ̂ trong mô hình LDA thực nghiệm bởi
̃ ̂
trong đó, [ ] là tham số chính quy được tùy chỉnh trong đoạn [ ] và giá trị riêng trung bình được tính bằng tổng các phần tử trên đường chéo của ma trận hiệp phương sai ̂ chia cho số chiều : ̂
Tham số có thể được xác định bằng công thức được đưa ra bởi Schäfer và Strimmer hoặc xác nhận chéo cho mẫu dữ liệu huấn luyện, tham khảo[8] Khi
đó, xác định trên đoạn [ ] và giá trị AUC (Area Under the Curve) được ước tính bởi cho mẫu dữ liệu huấn luyện [8]
2.6 Phân tích khác biệt tuyến tính đa bước (Multi-step LDA) [1][8]
Huy và Giang, “Đầu tiên tất cả các thuộc tính được phân chia thành các
nhóm con và phân tích khác biệt tuyến tính của Fisher (LDA) được sử dụng tính điểm cho mỗi nhóm thuộc tính Tiếp theo LDA được áp dụng cho các nhóm con của các điểm vừa thu được Quá trình này được lặp lại cho đến khi còn lại một điểm duy nhất, điểm này được sử dụng cho phân loại Bằng cách này chúng tôi tránh phải ước lượng ma trận hiệp phương sai số chiều lớn Chúng tôi gọi phương pháp trên là phân tích khác biệt tuyến tính đa bước (multi-step LDA)” [1]
“Phương pháp này áp dụng LDA trong vài bước thay cho áp dụng nó một lần cho tất cả các thuộc tính” [1] Đầu tiên, chúng ta sẽ trình bày phân tích khác biệt tuyến tính hai bước (two-step LDA) Chia tất cả thuộc tính của một vectơ biểu diễn thành các nhóm con
Trang 27[ ] ,
mỗi nhóm con được biểu diễn bởi vectơ biểu diễn , với ̅̅̅̅̅ và Trong bước thứ nhất, áp dụng phương pháp LDA để tính điểm cho mỗi nhóm con của các thuộc tính
̂ ( ) ( ̂ ) ̂ ( ̂ ̂ ) Sau bước thứ nhất, ta có điểm mới ̂
̂ [ ̂ ( )] [ ̂ ̂ ̂ ( )] Đến bước thứ hai, tiếp tục áp dụng LDA đối với điểm ̂, để tìm hàm phân biệt two-step LDA Điểm này dùng cho phân loại của two-step LDA Vectơ trung bình ̂ và ma trận hiệp phương sai ̂ của điểm ̂ được cho bởi
̂ [ ̂ ̂ ] ̂ ( ̂ ̂ ) ̂ ( ̂ ̂ )
Trang 28̂ ( ̂ ̂ ) ̂ ̂ ( ̂ ̂ )
Hàm phân biệt của two-step LDA được cho bởi
̂ [ ̂ ̂ ̂ ( )] ̂ ̂ ̂ ( ̂ ̂ ̂ ( ))
trong đó, hàm ̂ là hàm LDA
Multi-step LDA sẽ thực hiện lặp lại từng bước trong two-step LDA nêu ở trên Quá trình lặp lại chỉ dừng lại khi còn một điểm (score) duy nhất và điểm này được sử dụng cho việc phân loại tất cả các thuộc tính Trong báo cáo, tại mỗi bước multi-step LDA chia tất cả các thuộc tính thành những nhóm con liên tiếp và rời nhau, các nhóm con đều có cùng số phần tử Số phần tử của các nhóm con ở mỗi bước được xác định là phần tử thứ của vectơ Vectơ được gọi là kiểu của multi-step LDA [1]
2.7 Xây dựng hàm phân biệt multi-step LDA
Chương trình chính của hàm multi_step_lda():
function [auc, score] = multi_step_lda(x, xlabel, y, ylabel, spty, tpty, defa, chod)
% mtslda: multi step linear discriminant analysis.
% [auc,score] = mtslda(training data, training label, test data, test label, spatial type, temporal type, decimation factor, channel order)
nc = size(x, 3); x = rnmao(x, defa, chod); y = rnmao(y, defa, chod);
if size(y, 2)~=size(x, 2), disp(' error1 '); auc=nan; return; end
nx=size(x, 1); if length(xlabel)~=nx, disp(' error2 '); auc=nan; return; end
Trang 29if nc~=prod(spty), disp(' error4 '); auc=nan; return; end
if prod([spty tpty])~=size(x, 2), disp(' error5 '); auc=nan; return; end
% tính giá trị auc.
type = [spty tpty]; coefx = x; coefy = y;
clear x y
for t = 1:size(type, 2)
if type(t) > length(xlabel) % chi su dung lda.
dic = rldacv_dic(coefx, xlabel, type(t));
else
dic = lda_dic(coefx, xlabel, type(t));
end
coefx = represent_data(dic, coefx);
coefy = represent_data(dic, coefy);
end
auc = estimate_auc(coefy, ylabel);
score = coefy;
end.
Công dụng của hàm multi_step_lda(): tìm điểm (score) cuối cùng dùng để
phân loại cho tất cả các thuộc tính và đƣa ra hiệu suất phân loại với giá trị AUC
Giá trị đầu vào: x – là ma trận 3 chiều (trials x timepoints x channels) chứa tập
dữ liệu huấn luyện; xlabel – là ma trận chứa nhãn hay lớp của x; y – là ma trận chứa tập dữ liệu test; ylabel – là ma trận chứa nhãn hay lớp của y; spty – là
vectơ hàng chứa các giá trị channels, ví dụ [4 8], [8 4], [16 2], nếu số của
channels bằng 1 thì sử dụng spty = []; tpty – là vectơ hàng chứa các giá trị time points, vectơ hàng [2 2 2 … 2] đƣợc đề xuất; defa – là giá trị mà data dùng để
Trang 30giảm số chiều, nếu defa = 1 thì sử dụng data tự nhiên, nếu defa khác 1 thì sử
dụng trung bình của nhóm các time points riêng biệt tạo ra nhóm các thuộc
tính mới cho data; chod – là các channels (kênh hay điện cực) của dữ liệu, trường hợp chod = 0 khi các channels có trình tự tự nhiên, trường hợp chod =
1 (trong báo cáo chỉ sử dụng trường hợp này) khi các channels có trình tự sau
để nhóm các thuộc tính gần không gian: Fp1, Fp2, AF4, AF3, F7, F3, Fz, F4, F8, FC8, FC2, FC1, FC5, T7, C3, Cz, C4, T8, CP6, CP2, CP1, CP5, P7, P3,
Pz, P4, P8, PO4, PO3, O1, Oz, O2 tương ứng với thứ tự từ channel thứ 1 đến channel thứ 32
Giá trị đầu ra: auc – đưa ra giá trị auc cho hàm multi-step LDA của dữ liệu test dựa trên việc ước tính của dữ liệu huấn luyện; score – là giá trị hàm phân
biệt của multi-step LDA và là điểm cuối dùng cho phân loại
Các chương trình con của hàm multi_step_lda():
Trang 31end
if size(td,1)~=1 % tham chiếu dữ liệu: trừ đi giá trị trung bình của các channels
else ndata = zeros(size(td, 1), floor(size(td, 2)/df),size(td, 3));
for w = 1:size(ndata, 2)
wi = (w-1)*df + 1:w*df;
ndata(:, w, :) = mean(td(:, wi, :), 2);
end end ndata = reshape(ndata, size(ndata, 1)*size(ndata, 2), size(ndata, 3))';
end
Công dụng của hàm rnmao(): thực hiện quá trình tiền xử lý dữ liệu
Giá trị đầu vào: data – là tập dữ liệu huấn luyện (training data) cho bởi ma trận 3 chiều (trials x time points x channels); df – là giá trị dùng để giảm số chiều cho data; od – tương ứng với CHANNELORDER = 0 hoặc
CHANNELORDER = 1
Giá trị đầu ra: ndata – tập dữ liệu huấn luyện được tạo mới, có dạng ma trận 2
chiều (trials x features), features (thuộc tính) là ma trận hàng, mỗi hàng chứa channels của điểm dữ liệu có theo thứ tự tương ứng với các time points
Trang 32 Hàm lda_dic():
function dic = lda_dic(data, index, lgth)
% function dictionary = lda_dic(data, data_index, length_of_word).
nwd = size(data, 2)/lgth; dic = zeros(nwd, lgth);
for i = 1:nwd
wi = (((i-1)*lgth)+1):(i*lgth);
wdata = data(:, wi);
% tính giá trị trung bình và ma trận hiệp phương sai của wdata terp = mean(wdata(index == 1, :), 1);
if norm(sdic) ~= 0 sdic = (1/norm(sdic))*sdic;
end dic(i , :) = sdic;
end
end.
Công dụng của hàm lda_dic():tính giá trị hàm LDA cho từng bước
Giá trị đầu vào: data – là ma trận 2 chiều (trials x variables) chứa tập dữ liệu huấn luyện sau khi đã được tiền xử lý; index – là ma trận thể hiện nhãn (hay
Trang 33 Giá trị đầu ra: dic – là ma trận 2 chiều (words x lgth timepoints) chứa các words với chiều rộng của miền hỗ trợ là các giá trị lgth bằng nhau Mỗi word
là một hệ số siêu phẳng phân tách của từng nhóm con tách ra từ các thuộc tính
(features) của data, được tính bằng phương pháp LDA và nó tuân theo tiêu chuẩn 1
Hàm rldacv_dic() gồm 2 hàm con là projecting() và rlda_auc()
o Hàm rlda_dic():
function dic = rldacv_dic(data, index, lgth)
% function dictionary = rldacv_dic(data, data_index, length_of_word) nwd = size(data, 2)/lgth;
lamda = 0:0.01:1;
dic = zeros(nwd, lgth);
for i = 1:nwd
wi = (((i-1)*lgth)+1):(i*lgth);
wdata = data(:, wi);
% tính giá trị trung bình và ma trận hiệp phương sai của wdata terp = mean(wdata(index == 1, :), 1);
Trang 34% wdata.
auc = cv_stefan(wdata, index, dd, lamda);
[max_auc id] = max(auc);
lamda_cv = lamda(id); % tham số % tính mẫu dic.
nu = trace(sigma)/dd; % giá trị trung bình
end dic(i, :) = sdic;
end
end.
Công dụng của hàm rlda_dic(): tính giá trị hàm phân biệt của regularized
LDA cho từng bước
Giá trị đầu vào và đầu ra giống hàm lda_dic(), phương pháp sử dụng trong
hàm này là regularized LDA
o Hàm con projecting():
function new_data = projecting(data)
if size(data, 2) > size(data, 1), [u s v] = svd(data, 'econ');
new_data = data*v;
else new_data = data;
Trang 35 Công dụng của hàm con projecting(): xác định dữ liệu mới bằng cách chiếu dữ
liệu đầu vào cho bởi vectơ lên một mặt phẳng theo hướng trực giao trong trường hợp số lượng các biến (variables) lớn hơn số mẫu thử nghiệm (trials)
Giá trị đầu vào: data – là ma trận 2 chiều (trials x variables) của tập dữ liệu
huấn luyện sau khi đã tiền xử lý
Giá trị đầu ra: new_data – là ma trận 2 chiều (trials x variables) thu được sau khi chiếu data
trials2 = trials2_all(trials2_all~=trial_to_skip);
n1 = length(trials1); n2 = length(trials2);
x1 = mean(x(trials1, :), 1)'; x2 = mean(x(trials2, :), 1)';
Sigma1 = cov(x(trials1, :)); Sigma2 = cov(x(trials2, :));
Sigma = ((n1-1)*Sigma1 + (n2-1)*Sigma2)/(n1+n2-2);
nu = trace(Sigma)/d;
[v, e_0] = eig(Sigma);
rot = zeros(p, 2);
Trang 36rot(:, 2) = (v'*(x(trial_to_skip, :)'-x2)).^2;
for g = g_range diag_e = (1-g)*diag(e_0)+g*nu;
condition = max(diag_e)/min(diag_e);
if condition>threshold||condition<0, continue else scores(g==g_range, trial_to_skip)=-sum(rot(:,1)./diag_e)+ sum(rot(:, 2)./diag_e);
end end end for g=g_range,
auc(g == g_range) = estimate_auc(scores(g == g_range, :), label);
end
end
Công dụng của hàm con rlda_auc(): tính giá trị AUC của regularized LDA
Giá trị đầu vào: x – là ma trận chứa data; label = index – là nhãn của data; d –
là số thuộc tính trong mỗi nhóm; g_range = lamda– là giá trị của tham số của regularized LDA
Giá trị đầu ra: auc – là giá trị AUC
Hàm represent_data():
function coef = represent_data(dic, data)
% function coefficients = represent_data(dictionary, data)
lgth = size(dic, 2);
nwd = size(data, 2)/lgth;
coef = zeros(size(data, 1), size(dic, 1));
Trang 37wi = (((i-1)*lgth)+1):(i*lgth);
coef(:, i) = sum(data(:, wi).*repmat(dic(i, :), size(data, 1), 1), 2); end
end
Công dụng của hàm represent_data(): xác định điểm mới cho bước tiếp theo
Giá trị đầu vào: dic – là ma trận 2 chiều (words x variables) chứa giá trị hàm phân biệt của bước trước đó; data – là ma trận 2 chiều (trials x variables) chứa
tập dữ liệu huấn luyện
Giá trị đầu ra: coef – là ma trận 2 chiều chứa giá trị hàm phân biệt của bước
trước và lưu là điểm mới để tính cho bước sau
Hàm estimate_auc():
function auc = estimate_auc(scores, label)
n1 = sum(label == 1); trials1 = label == 1;
n2 = sum(label ~= 1); trials2 = find(label ~= 1);
percentage = zeros(n2, 1);
if sum(sum(isnan(scores)))>0, auc = nan;
else for i = 1:n2,
percentage(i) = sum(scores(trials1) > scores(trials2(i)))/n1; end
auc = mean(percentage);
end
end
Trang 38 Giá trị đầu vào: scores – là giá trị của hàm phân biệt; label – là ma trận chứa nhãn của data (tập dữ liệu huấn luyện)
Giá trị đầu ra: auc – là giá trị auc
Giá trị AUC (Area Under the Curve) là một độ đo tiêu chuẩn dùng để đánh
giá hiệu suất phân loại của các phương pháp phân loại Nếu giá trị AUC càng gần giá trị 1 thì phương pháp phân loại càng hiệu quả và có độ chính xác cao Mức độ hiệu quả của giá trị AUC được xét như sau [21]:
Bảng 2.2 Mức độ chính xác của giá trị AUC
Trang 39PHẦN III: DỮ LIỆU ĐIỆN NÃO ĐỒ TỪ HỆ THỐNG
VIẾT BẰNG Ý NGHĨ
3.1 Hệ thống giao tiếp não – máy tính dựa vào điện não đồ
3.1.1 Hệ thống giao tiếp não – máy tính
[8] Giao tiếp não – máy tính (Brain – Computer Interfaces, viết tắt BCI ) là một hệ thống giao tiếp, có nhiều ứng dụng nhờ vào sự suy nghĩ của con người Với
hệ thống giao tiếp não – máy tính, người dùng có thể gửi các lệnh yêu cầu đến các thiết bị điện tử hoặc máy tính bằng cách sử dụng sự hoạt động của não bộ Ví dụ, một người có thể đánh vần chữ cái xuất hiện trên màn hình máy tính, bằng cách họ dùng thị giác tập trung vào một chữ họ muốn đánh vần trong số những chữ nổi bật (tức là chữ đó được in đậm khác biệt với những chữ còn lại) xuất hiện ngẫu nhiên trên màn hình máy tính
Hình 3.1 Hình minh họa người sử dụng muốn đánh vần chữ O [20]
Hệ thống giao tiếp não - máy tính có cấu trúc như sơ đồ dưới đây:
Trang 40Hình 3.2 Sơ đồ của giao tiếp não – máy tính [8]
Dựa vào sơ đồ trên ta thấy, hệ thống BCI thường gồm 3 thành phần chính là thu tín hiệu, xử lý tín hiệu và lệnh điều khiển Hệ thống BCI được mô tả như sau:
Hệ thống BCI thu các tín hiệu phát ra từ não bộ của con người Sau đó, tiến hành
xử lý tín hiệu thu được qua 3 bước: tiền xử lý, trích đặc trưng và phân loại Tín hiệu được xử lý xong sẽ dùng lệnh điều khiển từ các thuật toán để đưa ra các thiết
bị đầu ra Thiết bị đầu ra được hệ thống BCI sử dụng nhiều nhất là một màn hình máy tính, một số thiết bị đầu ra khác được phát triển để kiểm soát các thiết bị gia dụng, cánh tay robot, robot di động và hàm kích thích điện tử
Công Cụ Điện Tử
Phản Hồi