Decision Tree: a Thuật toán:

Một phần của tài liệu TÌM HIỂU VỀ MACHINE LEARNING VÀỨNG DỤNG VÀO VIỆC DỰ ĐOÁN GIÁ NHÀ (Báo cáo đồ án 2 ) (Trang 54 - 82)

a. Thuật toán:

Decision Tree là một mô hình Supervised Learning, là một trong những thuật toán máy học đơn giản và phổ biến nhất hiện nay, có thể được áp dụng vào cả hai bài toán Classification và Regression.

Decision Tree là một cây phân cấp có cấu trúc được dùng để phân lớp các đối tượng dựa vào dãy các luật. Các thuộc tính của đối tượng có thể thuộc các kiểu dữ liệu khác nhau như Nhị phân (Binary), Định danh (Nominal), Thứ tự (Ordinal), Số lượng (Quantitative) trong khi đó thuộc tính phân lớp phải có kiểu dữ liệu là Binary hoặc Ordinal.

Một Decision Tree được bao gồm 4 thành phần như sau:

● Root Node: Nhánh chia đầu tiên của Decision Tree

● Internal Node: Các nhánh chia tiếp theo của Decision Tree

● Leaf Node: Các nhánh cuối cùng của Decision Tree

Tóm lại, cho dữ liệu về các đối tượng gồm các thuộc tính cùng với lớp (classes) của nó,Decision Treesẽ sinh ra các luật để dự đoán lớp của các dữ liệu chưa biết.

Như tên của nó, kỹ thuật này sử dụng mô hình dạng cây quyết định. Bắt đầu bằng một node, nó chia chia ra nhiều nhánh nhỏ. Mỗi nhánh sẽ dẫn đến một node khác, mà mỗi node sẽ đại diện cho giá trị dự đoán của biến mục tiêu. Chúng tạo nên một mô hình dạng cây

Đây là một ví dụ về cây quyết định. Chẳng hạn như một người có nhịp tim lớn hơn 100bpm, nếu đúng thì thì người này phải đi khám bác sĩ, nếu sai thì người này không cần phải bận tâm

Hoặc là một ví dụ khác. về mức độ đói, đói ở mức 1 ( cực kỳ đói) nếu đúng thì kết quả là bạn cần đi ăn, nếu sai thì tiếp tục xét đến độ đói 2. Nếu độ đói 2 đúng thì nên đi ăn thức ăn nhẹ, nếu sai thì không cân phải ăn.

Đây là một ví dụ phức tạp hơn về cây quyết định, nó kết hợp với biến số, biến yes/no

Sự phân loại cuối có thể trùng với nhau ví dụ như ở hàng thử 3 từ trên xuống có 2 node có cùng giá trị là “no worries”

Các node bên trái không cần phái đúng thứ tự với các node bên phải.

Cây quyết định bắt đầu từ node gốc trên cùng và đi dần xuống các node con (xanh biển) bên dưới, đến khi nào gặp node lá(xanh lá) không đi được nữa thì dừng lại. Node đầu tiên gọi là nốt gốc

Node con bên trong (node xanh dương) là node có đầu vào và đầu ra Còn node lá(xanh lá) là node chỉ có đầu vào mà không có đầu ra.

Đây là bản dữ liệu về những nguyên nhân dẫn đến bệnh tim:

Ta sẽ tạo decision tree dựa vào điều kiện đầu vào là chest pain, good blood circulation , blocked arteries để dự đoán xem có bị bệnh tim hay là không.

Dựa vào 3 điều kiện khoanh đỏ hình bên dưới:

Để dự đoán người này có bị bệnh tim hay không ( mỗi dòng tương ứng với một người).

Đầu tiên chung ta cần phải tìm xem giữa chest pain , good blood circulation và blocked arteries thì cái nào là điều kiện để đặt ở node gốc:

Đầu tiên ta bắt đầu từ việc tìm hiểu chest pain dự đoán người ngày mắc bệnh tim như thế nào

Đây là một cái cây quyết định nhỏ để tìm mối tương quan giữa chest pain và bệnh tim:

Bệnh nhân đầu tiên(hàng thứ 1) không bị bệnh nên ta ghi lại như sau:

Bệnh nhân thứ 2 có Chest pain và cũng bị đau tim luôn nên ta ghi lại:

Ta đi hết bảng, ví dụ bảng ở đây có 303 bệnh nhân

Ta làm tương tự với Good blood circulation:

Ta cũng đi qua từng bệnh nhân để ghi lại:

Cuối cùng là Blocked arteries ta cũng làm tương tự:

Ta cũng đi qua từng bệnh nhân và ghi lại:

Sau khi đã đi qua hết 3 cột, mục đích của ta là tìm ra giữa Chest pain, good blood, circulation thì đâu là điều kiện để đặt vô node gốc

Thì đây là bảng ghi lại giá trị khi lấy từ cột để cho ra kết quả bệnh nhân có bệnh tim hay là không

Tại vì không có node lá nào là 100% yes hay 100% no nên người ta gọi những node này là impure ( dịch nôm na là node lần tạp bẩn)

Giờ mình phải đi tính xe node nào trong 3 node có tỷ lệ độ tạp bẩn thấp nhất để chọn làm node gốc. Phương pháp tính ửo đây gọi là gini impurity

Đầu tiên ta sẽ đi tính tỷ lệ impurity của chest pain:

Dựa vào công thức, ta tinh được tỷ lệ gini impurity của node này:

Ta đi tính node bên phải:

Và tỷ lệ impurity của 2 node là:

Sau đó đi tính tỷ lệ của node Chest Pain dựa vào tỷ lệ impurity của 2 node con

Tương tự ta cũng tính được cho 2 cột còn lại:

Vì Good blood circulation là bé nhất nên ta chọn nó làm node gốc.

Sau khi đã chọn Good blood circulation làm node gốc thì ta tiếp tục phân tích node con của nó dựa vào 2 điều kiệu còn lại lại chest Pain và Blocked Arteries. Sau đó cũng tính tỷ lệ gini impurity như các bước ở trên, và chọn điều kiện nào có tỷ lệ gini impurity bé nhất.

Vì blocked Arteries có tỷ lệ bé nhất nên ta chọn điều kiện này làm node gốc

Và node con bên trái của node Blocked, ta dùng điều kiệu cuối cùng là Chest Pain để chia.

Tiếp tục ta chia đến node con bên phải của node Blocked.

Ta cũng dùng chest pain để chia:

Tỷ lệ impurity khi chia node là 0.29, ta so sánh với tỷ lệ impurity trước khi chia node.

Ta thấy rằng trước khi chia node tỷ lệ impurity thấp hơn (0.2<0.29) nên ta không chia node này nữa mà để nguyên, và node này sẽ trở thành node lá (thành node màu xanh lá)

Ta đã xong phần bên trái của cây:

Ta hoàn thành xong phần bên trái của cây. Tiếp theo ta chuyển sang phần bên phải. Phần bên phải của cây ta cũng làm tương tự như phần bên trái:

1.Tính gini impurity của node bằng cách tính impurity của node con

2.Nếu bản thân node đó có tỷ lệ impurity thấp hơn tỷ lệ gini impurity tính theo node con thì node đó trở thành node lá

3.Nếu lớn hơn hoặc bằng thì tiếp tục chia dữ liệu.

Và kết quả sau khi áp dụng quy trình giống như bên trái

Vậy còn giá trị số thì sao?

Giả sử như ta có một bảng dữ liệu:

Làm sao ta biết được đâu là giá trị để chia bệnh nhân? Đầu tiên, ta sắp xếp dữ liệu theo chiều tăng dần

Tiếp theo tính giá trị trung bình của 2 hàng liền kề

Sau đó tính giá trị impurity của những giá trị trung bình này.

Để tính gini impurity của mỗi số trung bình thì người ta tính impurity của mỗi node con trước:

Có tỷ lệ impurity của mỗi node lá thì giờ nó đi tính impurity của node cha:

Vậy tỷ lệ impurity khi lấy giá trị 167.5 để phân chia dữ liệu là 0.3

Tương tự ta cũng tính được tỷ lệ impurity của những giá trị trung bình khác

Trong các tỷ lệ gini impurity trên thì giá trị 0.27 là bé nhất, vậy giá trị 205 sẽ dùng để chia tập dữ liệu

Ưu, nhược điểm của thuật toán:

a. Ưu điểm:

● Sinh ra các quy tắc dễ hiểu, tạo ra các bộ luật với mỗi nhành lá là một luật của cây

● Có thể làm việc với cả dữ liệu liên tục và dữ liệu phân loại

● Dữ liệu đầu vào không cần chuẩn hóa

● Cung cấp dấu hiệu rõ ràng về lĩnh vực quan trọng nhất cho dự đoán và phân loại

Một phần của tài liệu TÌM HIỂU VỀ MACHINE LEARNING VÀỨNG DỤNG VÀO VIỆC DỰ ĐOÁN GIÁ NHÀ (Báo cáo đồ án 2 ) (Trang 54 - 82)