Phân tích giá trị riêng là một trong những chi phí tính toán chính trong thuật toán ở hình 1.7 trên. Gần như là có những bộ tìm giá trị riêng, đảm bảo với đầu vào là một ma trận đối xứng U và bất kỳ , đầu ra là một vectơ v sao cho . Để tìm giá trị riêng lớn nhất và vectơ riêng tương ứng một cách hiệu quả, ta có thể dùng phương pháp Lanczos. Ta có thể dùng hàm eigs trong MATLAB để tính vectơ riêng lớn nhất, hàm này gọi các file mex của ARPACK. ARPACK là một tập các thủ tục con (subroutine) được viết bằng Fortran, chúng được thiết kế để giải các bài toán giá trị riêng có quy mô lớn.
Input:
Tập huấn luyện gồm các bộ ba ( ) ; Tính sử dụng (1.26).
J: Số vòng lặp tối đa.
(tùy chọn) Tham số chính quy v; Đơn giản ta chỉ cần gán một giá trị rất nhỏ cho v, chẳng hạn 10-7
.
Begin
Khởi tạo | | | |;
forj = 1,2,…,Jdo
Tìm một ma trận cơ sở mới bằng cách tìm giá trị riêng lớn nhất
. ( ̂)/ và vectơ riêng tương ứng với nó của ̂ trong (1.37);
if ( ̂) then break (hội tụ); Tính sử dụng thuật toán ở hình 1.6; Cập nhật để có | | sử dụng (1.36); end; End;
Chương 2. Kết hợp giữa BoostMetric và WkNN 2.1. Mô hình tổng quan 2.1. Mô hình tổng quan
Ở chương 1 tôi đã trình bày khái quát về hai thuật toán WkNN và BoostMetric. Ta có thể thấy ý tưởng của thuật toán WkNN rất hay, việc đánh trọng số dựa trên khoảng cách cho k láng giềng gần nhất của đối tượng quan sát mới cần phán đoán lớp
x giúp bộ phân lớp vẫn có thể hoạt động tốt tại vùng giao nhau giữa các lớp dữ liệu. Tại vùng này, dù cho trong k láng giềng được chọn có tương đối nhiều các quan sát thuộc về các lớp khác nhau, nhưng số ít các quan sát “quan trọng” mới có vai trò quyết định và vẫn có thể cho kết quả phân lớp đúng. Xác định độ “quan trọng” dựa trên khoảng cách xa gần là cách làm trực quan và mang nhiều ý nghĩa thực tiễn. Hơn nữa, với việc đánh trọng số cho các láng giềng, thì việc chọn giá trị của tham số k không còn quá nhạy cảm, đặc biệt ta có thể chọn k là một số chẵn, điều khó có thể diễn ra trong bộ phân lớp kNN truyền thống (vì sẽ có trường hợp gây nhập nhằng khi phân định nhãn lớp do có sự cân bằng về số lượng các thành viên thuộc về các lớp khác nhau).
Tuy nhiên, với việc dùng hàm khoảng cách Minkowski, bộ phân lớp WkNN lại chưa vượt qua được vấn đề không gian phi tuyến, nơi các đối tượng dữ liệu phân bố tương đối tự do và mức độ phân tán theo các chiều là khác xa nhau. Thêm nữa nó sử dụng một hàm khoảng cách duy nhất (cách tính luôn cố định trước) cho mọi tập dữ liệu đầu vào. Hàm khoảng cách này có thể cho kết quả tốt (lựa chọn chính xác các láng giềng gần nhất) với một số bộ dữ liệu nhất định nhưng không đảm bảo cho được kết quả tương tự với rất nhiều kiểu dữ liệu khác.
Sau khi tìm hiểu các kỹ thuật, giải pháp khác nhau, tôi nhận thấy có thể dùng BoostMetric để khắc phục những vấn đề còn tồn tại của bộ phân lớp WkNN. Với BoostMetric, ta có một phương pháp đo khoảng cách mới cung cấp khả năng thích ứng với mọi kiểu dữ liệu đầu vào, và hoạt động tốt trên không gian phi tuyến. Ở đây, khả năng thích ứng với mọi bộ dữ liệu đầu vào có nghĩa là kỹ thuật đó cho phép huấn luyện hàm đo khoảng cách dựa vào tập huấn luyện, thay vì luôn dùng một hàm đo mặc định với cách tính được định sẵn từ trước.
Trong phần này, tôi đề xuất một mô hình kết hợp BoostMetric và WkNN để tạo thành một bộ phân lớp mới, kế thừa đầy đủ những ưu điểm của cả hai phương pháp trên. Hình vẽ 2.1 dưới đây mô tả khái quát lược đồ hoạt động của mô hình kết hợp BoostMetric và WkNN: