KNN K láng giềng

Một phần của tài liệu Machine Learning Toolbox trong MatLab (Trang 107 - 111)

6 Bài toán phân loạ i Bài toán phân biệt

6.2 KNN K láng giềng

6.2.1 Lý thuyết chung

Một trong những thuật toán phân loại đơn giản, phổ cập nhất là thuật toán K láng giếng, "học" từ K điểm lân cận gần nó nhất. Các bước thật hiện thuật tốn:

Algorithm 1Thuật toán KNN Nạp dữ liệu, chọn sốKláng giềng.

Từ mỗi điểm dữ liệu, đo khoảng cách (có nhiều cách cài đặt) từ điểm đó đến các điểm truy vấn (đã có nhãn) trong bộ dữ liệu. Sau đó sắp xếp các khoảng cách đấy theo thứ tự tăng dần. ChọnKláng giềng là

K điểm gần nhất với điểm đang xét.

Từ nhãn củaKđiểm láng giềng tùy vào bài toán mà ta xét:

• Với bài tốn Classification, lấy mode của các nhãn để làm nhãn cho điểm đang xét.

6 BÀI TOÁN PHÂN LOẠI - BÀI TOÁN PHÂN BIỆT

Hàm mất mát

Khi phân loại sai 1 điểm dữ liệu trong thực tế ln để lại một chi phí cho việc phân loại sai (ví dụ phân loại sai nhóm khách hàng). Ta cần định nghĩa hàm mất mát và tìm bộ nhãn cho dữ liệu sao cho hàm mất mát nhỏ nhất. Định nghĩa như sau:

y=argminy=1,..,K K ∑ j=1 P(j|x).C(y|j) với

• ylà vector nhãn phân loại. • K là số nhãn.

• P(j|x)là xác suất hậu nghiệm khi phân 1 điểm dữ liệu x vào nhãn j. • C(y|j)là chi phí khi phân sai dữ liệu vào nhãn y nhưng nhãn đúng là j.

Xác suất hậu nghiệm

Trong bài tốn phân loại ta có thể phân điểm dữ liệu x vào một nhãn khi giá trị xác suất hậu nghiệm của nó lớn. Theo định nghĩa xác suất Bayes, ta có:

p(j|xnew) = ∑i∈nbdW(i).1Y(X(i))=j

∑i∈nbdW(i)

với

• mdllà mơ hình phân loại vớikláng giềng.

• nbd(mdl,xnew)chỉ rakđiểm láng giềng cho xnew theo mơ hình phân loại mdl.

• Y(nbd)chỉ ra các nhãn của các điểm trongnbd.

• W(nbd)chỉ ra trọng số của các điểmnbdkhi gán nhãn choxnew.

6.2.2 Cài đặt code

1. Sử dụng fitcknn. Câu lệnh Mdl = fitcknn(Tbl,ResponseVarName) trả về mô hình KNN sử dụng dữ liệu các biến quan sát trong bảng Tbl và các nhãn đúng của nó trong

ResponseVarName

6 BÀI TOÁN PHÂN LOẠI - BÀI TOÁN PHÂN BIỆT

load fisheriris X = meas;

Y = species;

Mdl = fitcknn(X,Y,’NumNeighbors’,5,’Standardize’,1)

Kết quả thu được mơ hình KNN học dựa trên 5 láng giềng gần nhất:

2. Sử dụngpredict

• label = predict(mdl,X)trả về vector nhãn dự đốn tự mơ hình mdl với bộ dữ liệu test X.

• [label,score,cost] = predict(mdl,X)trả thêm về score là ma trận thể hiện xác suất 1 điểm dữ liệu thuộc 1 nhãn và cost là giá trị hàm mất mát.

Ví dụ minh họa

load fisheriris X = meas;

Y = species;

mdl = fitcknn(X,Y,’NumNeighbors’,5,’Standardize’,1); Xnew = [min(X);mean(X);max(X)]; %new data

[label,score,cost] = predict(mdl,Xnew)

6 BÀI TỐN PHÂN LOẠI - BÀI TỐN PHÂN BIỆT

Ví dụ điểm dữ liệu đầu tiênmin(X)có0.4cơ hội là nhãn 1 và 0.6 cơ hội là nhãn 2. 3. Sử dụng hàm loss

• L=loss(mdl,tbl,ResponseVarName)trả về 1 đại lượng vơ hướng L thể hiện độ tốt của các dữ liệu trong tbl khi được phân loại theo mơ hình mdl, vớiResponseVarName là nhãn đúng của các dữ liệu đó. L càng nhỏ thì càng có cơ sở khẳng định ta đã phân đúng nhãn cho dữ liệu. Ví dụ minh họa load fisheriris mdl = fitcknn(meas,species,’NumNeighbors’,5); X = mean(meas); Y = {’versicolor’}; L = loss(mdl,X,Y)

Giá trị trả về làL=0nghĩa là 5 điểm xung quanhmean(meas)đều là versicolor. 4. Sử dụngmargin

margintrả về hiệu của xác suất hậu nghiệm khi phân loại theo nhãn đúng trừ đi xác suất hậu nghiệm tối đa khi phân loại sai nhãn.

• m = margin(mdl,tbl,ResponseVarName)trả về điểm margin cho các biến trong tblvới nhãn đúng của các điểm đó trongResponseVarName.

6 BÀI TỐN PHÂN LOẠI - BÀI TOÁN PHÂN BIỆT

Một phần của tài liệu Machine Learning Toolbox trong MatLab (Trang 107 - 111)

Tải bản đầy đủ (PDF)

(184 trang)