Chương 3 : Một số giải thuật trích chọn thuộc tính
3.3. Tìm kiếm xác suất
Cĩ thể nĩi rằng các phương pháp xác suất là kết quả của việc các nhà nghiên cứu tiếp tục theo đuổi mục đích tìm kiếm tập con tối ưu mà khơng muốn thực hiện việc tìm kiếm tồn bộ trong khơng gian tìm kiếm. Khơng giống như hai phương pháp tìm kiếm theo kinh nghiệm và tìm kiếm tồn bộ được trình bày ở trên, các thuộc tính khơng tuần tự được loại bỏ/thêm vào từ một tập các thuộc tính cho trước. Phương pháp tìm kiếm theo xác suất cho phép tìm kiếm các tập con thuộc tính mà ở đĩ các tập con này được tạo ra một cách ngẫu nhiên. Trong nội dung này chúng ta tìm hiểu hai phương pháp xác suất là (i) LVF (Las Vegas algorithm for Filter feature selection) và (ii) LVW (Las Vegas algorithm for Wrapper feature selection).
3.3.1. Phương pháp LVF
Phương pháp LVF được Liu và Setiono đưa ra vào năm 1996, phương pháp LVF bao gồm một thủ tục cĩ thể tạo ra tạo ra các tập con thuộc tính một cách ngẫu nhiên và một thủ tục nhằm đánh giá xem mỗi tập con được tạo ra cĩ thỏa mãn tiêu chuẩn chọn lựa hay khơng. Dưới đây thể hiện pseudo-code của phương pháp LVF.
LVF
Input: maxTries - the maximum number of loops U - the inconsistency measure
D - a dataset with N features γ - an allowed inconsistency rate
initialize: list L = {} /* L stores equally good sets */ Cbest = N
for maxTries loops
begin
S = randomSet(seed)
If (C < Cbest ^ CalU(S,)< γ) Sbest = S
Cbest = C
L = {S} /* L is reinitialized */ else if (C = Cbest ^ CalU(S,D)< γ)
L = append(S,L)
end
Output: L /* all equivalently good subsets found by LVF */
Kết quả của hai thủ tục trong giải thuật LVF là một tập con thuộc tính tối ưu. Đo lường được sử dụng để đánh giá trong LVF là tỷ lệ lỗi (inconsistency). Giải thuật LVF này cĩ hai tham số quan trọng đĩ là (1) Tỷ lệ lỗi của dữ liệu khi sử dụng tất cả các thuộc tính, (2) Số lượng tối đa các tập con thuộc tính được tạo ra ngẫu nhiên.
Trong pseudo-code của giải thuật LVF ở trên maxTries là một hằng số liên quan đến số lượng các thuộc tính cĩ trong tập dữ liệu ban đầu, bằng trực quan chúng ta nhận thấy rằng dữ liệu càng cĩ nhiều thuộc tính thì càng khĩ phân lớp. Thơng thường maxTries = c x N, trong đĩ c là một hằng số (c<=N). Giá trị maxTries càng lớn cĩ nghĩa là số lần lặp của giải thuật càng lớn và kết quả của giải thuật cũng tốt hơn. Một cách khác để xác định giá trị maxTries trong LVF đĩ là xác định giá trị maxTries theo khơng gian tìm kiếm mà người sử dụng muốn LVF thực hiện. Chúng ta biết rằng khơng gian tìm kiếm là 2N, nếu người sử dụng muốn LVF thực hiện việc tìm kiếm trong p% của khơng gian tìm kiếm thì maxTries=2N x p%. Hàm randomSet() yêu cầu một bộ sinh ngẫu nhiên tốt để thực hiện việc phân ngẫu nhiên các tập con thuộc tính khác nhau. Cĩ một bộ sinh số ngẫu nhiên tốt cũng cĩ nghĩa là cĩ ít hơn các tập con giống nhau được tạo ra.
3.3.2. Phương pháp LVW
LFV là một giải thuật tương đối đơn giản điều này cũng cĩ nghĩa là nĩ cĩ thể dễ dàng thay đổi được. Chúng ta cĩ thể thay đổi một trong hai thủ thục. Nếu chúng ta thay đổi thủ tục tạo ra ngẫu nhiên các tập con thuộc tính cũng cĩ nghĩa là chúng ta sẽ khơng cĩ được giải thuật tìm kiếm ngẫu nhiên. Do đĩ, chúng ta chỉ cĩ thể thay đổi thủ
tục đánh giá nếu chúng ta vẫn muốn phương pháp này thuộc vào nhĩm các phương pháp chọn lựa thuộc tính dựa trên xác suất. Giả sử rằng chúng ta quyết định sử dụng độ chính xác ước lượng của bộ phân lớp như một tiêu chí đo lường, chúng ta cĩ phương pháp LWF. Psuedo-code của phương pháp LVW được thể hiện trong dưới đây.
Trong phương pháp LVW các phương pháp thống kê được áp dụng nhằm ước tính độ chính xác của bộ phân lớp. Giá trị maxTries trong LVW được xác định tương tự như trong LVF. Tuy nhiên, để chạy giải thuật học (LA) cĩ thể phải thiết lập một vài tham số khác theo yêu cầu của giải thuật học. Hàm estimate() được sử dụng trong LVW thay vì hàm CalU() trong LVF, cĩ nhiều cách để thực hiện hàm estimate() và mỗi cách cĩ thể đưa ra những kết quả chọn lựa thuộc tính khác nhau. Một điểm khác nhau nữa trong hai phương pháp này là LVF sử dụng tỷ lệ lỗi như một đo lường đánh giá, trong khi đĩ LVW sử dụng độ chính xác của bộ phân lớp như một đo lường đánh giá.
LVW
Input: maxTries - the maximum number of loops LA - a learning algorithm
D - a dataset with N features F - a full set of features
Initialize: list L = {} /*L stores sets with equal accuracy*/ Abest = estimate(D, F,LA)
for maxTries loops begin S = randomSet(seed) A = estimate(D,S,LA) if (A > Abest) Sbest = S Abest = A L = {S} /*L is reinitialized*/ else if (A = Abest)
L = append(S,L) end
Output: L /*all equivalently good subsets found by LVW*/
3.4. Phương pháp trọng số thuộc tính
Một trong những phương pháp tiêu biểu nằm trong nhĩm các phương pháp trọng số thuộc tính là Relief. Phương pháp này được đề xuất bởi Kira và Rendell vào năm 1992, mục đích ban đầu của phương pháp là nhằm giải quyết một vấn đề thực tế trong phân lớp là mối tương tác quan giữa các thuộc tính (một vài thuộc tính phụ thuộc lẫn nhau trong việc xác định lớp của thực thể). Relief chọn lựa các thuộc tính dựa vào sự tương quan thống kê. Mặc dù mục đích của Relief vẫn là chọn lựa thuộc tính nhưng Relief khơng tạo ra các tập con thuộc tính, và kiểm tra các điều kiện ràng buộc của các tập con này như các phương pháp được trình bày ở trên. Thay vì việc tạo ra các tập con thuộc tính Relief tập trung vào việc lấy mẫu các thực thể (sampling) mà khơng tìm kiếm các tập con thuộc tính. Ý tưởng của Relief đĩ là: các thuộc tính tương quan là các giá trị cĩ thể phân biệt các thực thể, đĩ là các giá trị nằm gần lẫn nhau. Do đĩ, hai hàng xĩm gần nhau nhất (mỗi thực thể thuộc về một lớp khác nhau) đối với một thực thể (I) được đưa ra, một là near-hit (H) và một là near-miss (J). Về ý tưởng, một thuộc tính là liên quan nếu giá trị của nĩ là tương tự giữa I và near-hit, và khác biệt giữa I và near-miss. Trên thực tế việc kiểm tra này cĩ thể được thực hiện bằng cách tính khoảng cách tới một giá trị thuộc tính: khoảng cách này nên là bé nhất đối với I và H và lớn nhất đối với I và J. Khoảng cách của mỗi giá trị thuộc tính đối với mỗi thực thể được lấy ra ngẫu nhiên, được tổng hợp trong véc tơ w (weight), véc tơ này cĩ số chiều bằng số lượng thuộc tính. Những thuộc tính liên quan là những thuộc tính cĩ giá trị vector w vượt quá ngưỡng tương quan r. Ngưỡng tương quan này cĩ thể được xác định bằng cách sử dụng phương pháp thống kê để ước lượng khoảng. Cỡ mẫu m cĩ thể cĩ thể biến đổi và một giá trị m lớn hơn cĩ nghĩa là cĩ một ước lượng xấp xỉ tin cậy hơn.
Dưới đây là thể hiện pseudo-code của phương pháp Relief:
Relief
Input: x - features
τ - adjustable relevance threshold
initialize: w = 0
for i 1 to m
begin
randomly select an instance I
find nearest_hit H and nearest_miss J
for j 1 to N
w(j) = w(j) – diff(j, I,H)2/m + diff(j, I,J)2/m
end
Output: w greater than τ
Trong pseudo-code của phương pháp Relief ở trên, hàm diff() tính khoảng cách giữa các giá trị của một số thuộc tính với hai thực thể. Đối với các thuộc tính rời rạc, giá trị khoảng cách này nhận cả giá trị 1 và 0 (1 nếu các giá trị là khác biệt và 0 nếu các giá trị là như nhau), tuy nhiên đối với các thuộc tính liên tục thì giá trị khoảng cách nhận giá trị trong khoảng [-1;1].
Phương pháp Relief cĩ thể ứng dụng được với cả dữ liệu rời rạc và dữ liệu liên tục. Tuy nhiên phương pháp cũng cĩ một số nhược điểm đĩ là: (1) khơng hiệu quả đối với dữ liệu chỉ cĩ hai lớp, (2) khơng “nhậy” với các dữ liệu thừa.
3.5. Phương pháp lai
Các chiến lược tìm kiếm khác nhau yêu cầu số lượng các tài nguyên khác nhau và cũng cho các kết quả khác nhau. Ý tưởng cho sự xuất hiện của phương pháp lai là chúng ta liệu cĩ thể tận dụng các ưu điểm cũng như tránh các nhược điểm của mỗi phương pháp? Focus là một giải thuật chọn lựa thuộc tính tiến, ABB là giải thuật chọn lựa thuộc tính lùi. Do đĩ, khi số lượng thuộc tính liên quan là quá ít thì giải thuật Focus là một lựa chọn phù hợp, tuy nhiên khi số lượng thuộc tính liên quan là nhiều thì ABB lại là lựa chọn tốt hơn. Tuy nhiên, khi chúng ta khơng cĩ thơng tin gì về số lượng thuộc tính liên quan chúng ta lại cần tới sự kết hợp của cả hai phương pháp – phương pháp lai. Một phương pháp lai khác là việc kết hợp LVF và ABB, phương pháp này được đặt tên là QBB (quick Branch and Bound). Phương pháp này chạy giải thuật LVF n lần, sau đĩ sử dụng các tập con được chọn từ việc thực hiện giải thuật
LVF như là đầu vào của giải thuật ABB nhằm tìm ra tập con tốt nhất. Giá trị của n ảnh hưởng tới kết quả của LVF. Như chúng ta đã biết, nếu LVF chạy lâu hơn (n lớn) cĩ nghĩa là sẽ được các tập con thuộc tính tốt hơn, cho tới khi chúng ta tìm được tập con tối ưu. Tuy nhiên, số lượng các tập con được chọn lựa cũng nhỏ hơn khi LVF chạy lâu hơn. Một mặt chúng ta muốn giảm số lượng các thuộc tính trong mỗi tập con (các tập con này là kết quả của việc chạy giải thuật LVF), một mặt chúng ta muốn số lượng các tập con này khơng quá bé, qua đĩ chúng ta cĩ thể giảm thiểu nguy cơ mất các tập con tối ưu. Do đĩ, chúng ta cần tìm ra một “điểm chuyển” tốt để cân bằng giữa hai yếu tố ở trên. Điều này cũng cĩ nghĩa là QBB cĩ thể nhanh chĩng tìm ra các tập con tối ưu với xác suất cao. Dưới đây là minh họa pseudo-code của giải thuật QBB.
QBB
Input: num - the number of loops in LVF γ- an allowed inconsistency rate D - a dataset with N features
Initialize: listLLV F = LABB ={}
LLV F = LVF(D,γ,num) /* run LVF with num loops*/ for each S’ LLV F
S = ABB(S’,D)
LABB = append(S,LABB)
Output: Smin /*The minimum subset in LABB*/
3.6. Phương pháp lớn dần
Với kích cỡ dữ liệu ngày càng trở lên lớn hơn, tất cả các phương pháp chọn lựa thuộc tính đều phải đối mặt với vấn đề quá tải dữ liệu do những hạn chế của bộ nhớ máy tính cũng như tốc độ tính tốn. Vì vậy, cần thiết phải cĩ một giải pháp xử lý đối với vấn đề đặt ra này. Một câu hỏi đặt ra là liệu chúng ta cĩ thực sự cần quá nhiều dữ liệu cho mỗi phương pháp chọn lựa thuộc tính để chọn ra các thuộc tính liên quan hay khơng ? Hay chúng ta chỉ cần xử lý với lượng dữ liệu ít hơn ? Câu trả lời cho câu hỏi này vẫn cịn nhiều tranh luận. Chúng ta sử dụng tỷ lệ lỗi như một ví dụ cụ thể. Nếu chúng ta tính tốn tỷ lệ lỗi chung cho một bộ dữ liệu là E, thì bất kỳ một việc giảm chiều dữ liệu nào cũng sẽ dẫn đến một sự tối ưu, tuy nhiên cĩ thể dẫn đến sự sai lệch
trong tỷ lệ lỗi. Một mặt chúng ta gặp vấn đề đối với dữ liệu cĩ kích cỡ quá lớn và chúng ta muốn giảm dữ liệu tới một kích cỡ phù hợp. Một mặt chúng ta lại cần tất cả các dữ liệu hiện cĩ để đo lường chất lượng của các thuộc tính được chọn lựa.
Chúng ta biết rằng chỉ một vài phần trong bộ bộ dữ liệu lớn cĩ thể đại diện cho tồn bộ bộ dữ liệu trong một chừng mực nào đĩ. Tuy nhiên, câu hỏi đặt ra ở đây là phần đĩ là phần nào trong bộ dữ liệu lớn đĩ và độ lớn của phần đấy là bao nhiêu thì phù hợp. Thay vì việc tìm kiếm chính xác phần dữ liệu này, chúng ta cĩ thể ngẫu nhiên chọn lựa một phần p nào đĩ, sau đĩ sử dụng phần này để tìm một tập con thuộc tính thỏa mãn các tiêu chí đánh giá nào đĩ. Sau đĩ kiểm chứng tập con này trên phần cịn lại của bộ dữ liệu (tồn bộ bộ dữ liệu trừ đi phần dữ liệu lấy ra). Cĩ hai khả năng cĩ thể: (1) Tập con thỏa mãn các tiêu chí đánh giá trên phần cịn lại của dữ liệu. Điều này cĩ nghĩa là nhiệm vụ đã hồn thành; và (2) Cĩ một vài tiêu chí đánh giá chưa được thỏa mãn trên phần cịn lại của dữ liệu. Điều này cĩ nghĩa là phần dữ liệu mà chúng ta lấy ra ở trên chưa phải là phần dữ liệu mà chúng ta mong muốn. Nếu gặp phải khả năng thứ hai chúng ta cĩ thể giải quyết như sau: Thêm dữ liệu từ bộ dữ liệu ban đầu vào bộ dữ liệu đã chọn ở trên và thực hiện lại việc chọn lựa thuộc tính trên bộ dữ liệu này. Quá trình này sẽ dừng lại khi tất cả các tiêu chí đánh giá được thỏa mãn.
Thêm một câu hỏi ở đây đĩ là giá trị của p bao nhiêu là phù hợp. Một cách trực quan, kích cỡ của p khơng nên quá to cũng như quá nhỏ. Nếu kích cỡ của p quá nhỏ, thì ngay sau lần thử nghiệm đầu tiên sẽ cĩ rất nhiều tiêu chí đánh giá chưa được thỏa mãn. Do đĩ, sẽ thực hiện việc thêm các thực thể từ bộ dữ liệu cịn lại vào p và cĩ thể điều này dẫn đến kích cỡ của p sẽ lớn gần bằng kích cỡ của bộ dữ liệu ban đầu. Nếu kích cỡ của p quá lớn (gần bằng kích cỡ của bộ dữ liệu ban đầu) chúng ta vẫn phải đương đầu với vấn đề quá tải dữ liệu cộng với một vài vấn đề về tiêu chí đánh giá cĩ thể chưa được thỏa mãn. Một cách đơn giản cĩ thể giải quyết được việc này đĩ là chọn p theo tỷ lệ phần trăm của bộ dữ liệu, ví dụ chọn p=10%, hoặc một cách khác là chọn p tỷ lệ với số lượng thuộc tính của bộ dữ liệu. Một tỷ lệ phần trăm phù hợp được xác định thơng qua tiến hành thực nghiệm. Ý tưởng về việc chọn lựa dữ liệu được thể hiện trong giải thuật được đặt tên là LIV được Lui và Setiono đề xuất và năm 1998. Giải thuật này được thể hiện trong dưới đây. Hàm CalINcon trả lại giá trị của tỷ lệ lỗi và các dữ liệu khơng phù hợp trong bộ dữ liệu inconData.
LVI
Input: maxTries - the maximum number of loops U - the inconsistency measure
D0 = p% of D chosen randomly Initialize: D1 = D - D0 loop SLV F = LVF(D0,γ, S) if (CalIncon(SLV F , D1 + D0, inconData) < γ) return(SLV F) else D0 = append(inconData, D0) D1 = remove(inconData, D1) end of loop Output: SLV F