You are on page 1of 9

Phần 1: Lý thuyết

1.Perceptron
- Perceptron là một thuật toán Classification cho trường hợp đơn giản nhất:

+ Chỉ có hai class (binary classification)

+ Cũng chỉ hoạt động được trong một trường hợp rất cụ thể.

- Bài toán Perceptron, cho hai class được gán nhãn, hãy tìm một đường phẳng sao cho:

+ toàn bộ các điểm thuộc class 1 nằm về 1 phía,

+ toàn bộ các điểm thuộc class 2 nằm về phía còn lại của đường phẳng đó.

- Ý tưởng cơ bản của PLA:

+ Xuất phát từ một nghiệm dự đoán nào đó,

+ Qua mỗi vòng lặp, nghiệm sẽ được cập nhật tới một ví trí tốt hơn cập nhật dựa trên
việc giảm giá trị của một hàm mất mát nào đó.

- Giải quyết bài toán:

+ G/S ma trận chứa các điểm dữ liệu:

X = [x1,x2,...,x𝑁] ∈ R𝑑×𝑁

+ G/S các nhãn của mỗi điểm dữ liệu được lưu trong một véc tơ hàng

y = [𝑦 , 𝑦 , ... , 𝑦 ] ∈ R1xN

+ G/S, tại một thời điểm, ta tìm được đường boundary là đường phẳng có phương
trình:

𝑓x=𝑤𝑥+𝑤𝑥+⋯+𝑤𝑥+𝑤=0 hay w𝑇x = 0

+ Tìm được w (nghiệm của bài toán Perceptron) và một điểm x chưa có nhãn, ta có
thể xác định class của nó bởi:

𝑙𝑎𝑏𝑒𝑙 x =1 𝑛ế 𝑢 w 𝑇x ≥ 0, 𝑛𝑔ượ 𝑐 𝑙ạ𝑖 −1 hay 𝑙𝑎𝑏𝑒𝑙 x = 𝑠𝑔𝑛( w 𝑇x)

- Xây dựng hàm mất mát:

+ Hàm mất mát là đếm số lượng các điểm bị misclassied và tìm cách tối thiểu hàm số
này:
+ Khi một x𝑖 (bị phân lớp sai) nằm càng xa boundary thì giá trị −𝑦𝑖 w𝑇x𝑖 càng lớn

+ Giá trị nhỏ nhất của hàm mất mát này bằng 0 nếu không có điểm nào bị phân lớp sai

+ Hàm này trừng phạt nặng những điểm lấn sâu sang lãnh thổ của lớp khác.

- Với một điểm x𝑖 bị phân lớp sai, hàm mất mát trở thành: 𝐽w,x𝑖,𝑦𝑖 =−𝑦𝑖w𝑇x𝑖

+ Đạo hàm: 𝛻𝐽w,x,𝑦 =−𝑦x w𝑖𝑖𝑖𝑖

+ Qui tắc cập nhật: w = w + η𝑦𝑖 x𝑖

+ w𝑡+1 tiến về phía làm cho x𝑖 được phân lớp đúng

- Tổng quát:

+ Chọn ngẫu nhiên một vector hệ số w với các phần tử gần 0

+ Duyệt ngẫu nhiên qua từng điểm Xi:

> Nếu x: được phân lớp đúng, tức sgn(wT xi) = yi, chung ta không cần làm gì.

> Nếu x: bị misclassifed, câp nhât w theo công thức: W=W+ yiXi

+ Kiểm tra xem có bao nhiêu điểm bị misclassifed. Nếu không còn điểm nào, dùng

thuật toán. Nếu còn, quay lại bước 2.


2.ID3
-Cây quyết định là một mô hình có giám sát (supervised learning), có thể được áp

dụng cho cả bài toán phân lớp (classification) và hồi quy (regression)

-Cây quyết định :

+Cấu trúc cây giống như biểu đồ luồng.

+Mỗi nút trong thể hiện một sự kiểm tra trên một thuộc tính
+ Mỗi nhánh đại diện cho một kết quả của sự kiểm tra

+Các nút lá đại diện cho các nhãn lớp hoặc phân phối lớp

-Việc tạo cây quyết định gồm 2 giai đoạn

+Xây dựng cây quyết định

+Tại bước khởi tạo, nút gốc bao gồm tất cả các mẫu huấn luyện

+Các mẫu được phân chia đệ quy dựa trên thuộc tính được chọn

+Tỉa cây

+Phát hiện và loại bỏ những nhánh nhiễu hoặc ngoại lệ

-Sử dụng cây quyết định:

+Phân lớp một mẫu chưa biết

+Kiểm tra các giá trị thuộc tính của mẫu dựa trên cây quyết định

-Thuật toán cơ bản (thuật toán tham lam)

+Cây quyết định được xây dựng theo cách chia để trị từ trên xuống (top-down)

+Tại vị trí khởi tạo, tất cả các mẫu thuộc nút gốc

+Các thuộc tính được phân loại (nếu giá trị của thuộc tính là liên tục, thì phải được
rời rạc hoá trước)

+Các mẫu được phân chia đệ quy dựa vào các thuộc tính được chọn

+Thuộc tính kiểm tra được lựa chọn dựa vào kinh nghiệm (heuristic) hoặc độ đo
thống kê (statistical measure) (ví dụ, information gain)

-Điều kiện dừng phân chia:

+Tất cả các mẫu của nút xem xét thuộc cùng một lớp

+Không có thuộc tính nào để phân chia - biểu quyết đa số được sử dụng để gán
nhãn phân loại cho lá

+Không còn mẫu nào

-Ý tưởng:

+Chúng ta cần xác định thứ tự của thuộc tính cần được xem xét tại mỗi bước tại mỗi
bước, một thuộc tính tốt nhất sẽ được chọn ra dựa trên một tiêu chuẩn nào đó
+Với mỗi thuộc tính được chọn, ta chia dữ liệu vào các nút con tương ứng với các giá
trị của thuộc tính đó rồi tiếp tục áp dụng phương pháp này cho mỗi nút con

+Việc chọn ra thuộc tính tốt nhất ở mỗi bước như thế này được gọi là cách chọn tham
lam (greedy). Cách chọn này có thể không phải là tối ưu, nhưng trực giác cho chúng ta
thấy rằng cách làm này sẽ gần với cách làm tối ưu

-Ta cần có một hàm số đo độ tinh khiết (purity), hoặc độ vẩn đục (impurity) của
một phép phân chia.

+Hàm số này sẽ cho giá trị thấp nhất nếu dữ liệu trong mỗi child node nằm trong
cùng một class (tinh khiết nhất), cho giá trị cao nếu mỗi child node có chứa dữ
liệu thuộc nhiều class khác nhau.

=>Một hàm số có các đặc điểm này và được dùng nhiều trong lý thuyết thông tin
là hàm entropy

-Hàm số entropy:

+Cho một phân phối xác suất của một biến rời rạc x có thể nhận n giá trị khác nhau
𝑥1 , 𝑥2 , … , 𝑥𝑛.

+Giả sử rằng xác suất để x nhận các giá trị này là 𝑝𝑖 = 𝑝 𝑥 = 𝑥𝑖 , 𝑣ớ𝑖 0 ≤ 𝑝𝑖 ≤
1, σ𝑖=1 𝑛 𝑝𝑖 = 1 Ký hiệu phân phối này là 𝑝 = (𝑝1 , 𝑝2 , … , 𝑝𝑛).

Entropy của phân phối này được định nghĩa là:

=> Mục đích: Tìm các cách phân chia hợp lý (thứ tự chọn thuộc tính hợp lý). sao cho
hàm mất mát cuối cùng đạt giá trị càng nhỏ càng tốt.

=>Việc này đạt được bằng cách chọn ra thuộc tính sao cho nếu dùng thuộc tính đó để
phân chia, entropy tại mỗi bước giảm đi một lượng lớn nhất

3.Gini index(Cart)
-Gini index tương tự như information gain, dùng để đánh giá xem việc phân chia ở node
điều kiện có tốt hay không.

Để tính Gini index, trước hết mình sẽ tính chỉ số Gini, chỉ số Gini tính ở từng node.
Phần 2: Ứng dụng trong thực tế

1. .Mô tả bài toán


- Tên bài toán: Phân loại điều trị bệnh nhân

- Mục đích của bài toán: xác định điều trị bệnh nhân chăm sóc hay bệnh nhân chăm sóc
ngoài

- Input: HAEMATOCRIT, HAEMOGLOBINS, ERYTHROCYTE, LEUCOCYTE,


THROMBOCYTE, MCH, MCHC, MCV, AGE, SEX

- Ouput: SOURCE

- Tóm tắt công việc thực hiện của bài toán:


1.Chia tập dữ liệu thành 2 phần: 70% dùng để huấn luyện mô hình, 30% dùng để
kiểm tra sự phù hợp của mô hình.

2.Dùng thuật toán Perceptron, thuật toán ID3 và thuật toán CART để xây dựng mô
hình phân lớp cho bài toán.

3.Dùng tập dữ liệu kiểm tra để so sánh các độ đo: tỷ lệ mẫu được dự đoán đúng,
Precision, Recall, F1 của Perceptron, ID3 và CART. (Đọc các độ đo này trong
chương 8 của tập slides bài giảng. Trong code có thể tự viết code để tính các độ đo
này hoặc sử dụng các hàm có sẵn trong thư viện sklearn để tính các độ đo này).

2. Mô tả tập dữ liệu của bài toán


- Dữ liệu gồm những chiều thông tin gì (mỗi mẫu (vertor) dữ liệu có những thông tin
gì), có bao nhiêu mẫu dữ liệu (ít nhất là 100 vector dữ liệu). Mô tả nhãn lớp của dữ liệu.

+Gồm 4413 vector dữ liệu

Gồm các chiều thông tin:

HAEMATOCRIT: Kết quả xét nghiệm hematocrit của bệnh nhân trong phòng thí nghiệm

HAEMOGLOBINS:Kết quả xét nghiệm haemoglobins của bệnh nhân trong phòng thí
nghiệm

ERYTHROCYTE:Kết quả xét nghiệm hồng cầu của bệnh nhân

LEUCOCYTE:Kết quả xét nghiệm bạch cầu của bệnh nhân

THROMBOCYTE:Kết quả xét nghiệm trong phòng thí nghiệm của bệnh nhân về bạch cầu

MCH:Kết quả xét nghiệm MCH của bệnh nhân trong phòng thí nghiệm

MCHC: Kết quả xét nghiệm bệnh nhân trong phòng thí nghiệm MCHC

MCV:Kết quả xét nghiệm của MCV bệnh nhân

AGE:Tuổi bệnh nhân

SEX:Giới tính bệnh nhân

SOURCE: Kết quả ra/vào viện

- Mô tả ma trận dữ liệu (X): HAEMATOCRIT, HAEMOGLOBINS, ERYTHROCYTE,


LEUCOCYTE, THROMBOCYTE, MCH, MCHC, MCV, AGE, SEX

-Nhãn lớp (Y): SOURCE

- Chia tập dữ liệu thành 2 phần: 70% dùng để huấn luyện mô hình, 30% dùng để kiểm tra
sự phù hợp của mô hình.
3. Viết ứng dụng

4. Phân tích kết quả của chương trình


- Tỷ lệ dự đoán đúng trên tập test:

Tỷ lệ dự đoán đúng Perceptron: 68.27

Tỷ lệ dự đoán đúng ID3: 67.29

Tỷ lệ dự đoán đúng Cart: 65.10

- Tỷ lệ dự đoán sai trên tập test:

Tỷ lệ dự đoán sai Perceptron: 31.73

Tỷ lệ dự đoán sai ID3: 32.71

Tỷ lệ dự đoán sai Cart: 34.9

(*)So sánh tỷ lệ dự đoán đúng của 3 thuật toán. Từ đó, lựa chọn thuật toán phù hợp nhất
với bài toán.

-Perceptron có tỷ lệ dự đoán đúng ca nhất

=>Lựa chọn thuật toán Perceptron cho bài toán

5. Kết luận
-Các thuật toán trên cho độ chính xác tương đối cao.

-Hiểu và biết cách sử dụng 3 thuật toán Perceptron, ID3 và Cart.

Tài liệu tham khảo

https://viblo.asia/p/confusion-matrix-ma-tran-nham-lan-ma-tran-loi-p1-
V3m5WQB7ZO7?
fbclid=IwAR03wD2oaWnTl_T9TVwbu1fFISmHEZdM39HxOZgAWr3sk59blphcPL4u
Row

https://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_score.html?
fbclid=IwAR0yoZMJkn0BE8JpnUfGWLThw7M9CBdlusBWw91oFaNaL0O1Uk7VBU
TOHes

https://scikit-learn.org/stable/modules/generated/sklearn.metrics.f1_score.html?
fbclid=IwAR39L2ix7p2zDRNP4zgWMde14huawJoz48x6u_AetOVNzh5qsEdgxRWwA
mo

https://scikit-learn.org/stable/modules/generated/sklearn.metrics.recall_score.html?
fbclid=IwAR2oX1TGnZ1luEM0ZH_AOPkL88V5vX12Vp9ryDtQPqmHGBGUJpiD2pw
Xyhg

You might also like