images
07/10/2020 05:41 am

Gấu mèo đi làm Data Scientist - Phần 4 - Câu đố xứ Rivia (Part 2)

Entropy vốn là thước đo cho sự hỗn loạn. Nôm na thế này: Entropy càng thấp thì càng thuần chủng, còn càng cao thì càng hỗn loạn. Một nhóm có entropy = 0 thì nghĩa là nhóm đấy thuần chủng, nó đều Yes hoặc đều No.

Gấu Mèo gọi hỏi sư phụ Gấu Chó:

- ...Vậy entropy là gì hả sư phụ?

- Con gà!!! Entropy vốn là thước đo cho sự hỗn loạn. Nôm na thế này: Entropy càng thấp thì càng thuần chủng, còn càng cao thì càng hỗn loạn. Một nhóm có entropy = 0 thì nghĩa là nhóm đấy thuần chủng, nó đều Yes hoặc đều No. Thế nên để tìm ra được Informative Attributes - thuộc tính nào ảnh hưởng tới Yes/No nhất thì người ta sẽ làm thế này:

✅ đo entropy chung

✅ đo entropy sau khi tách nhóm bằng thuộc tính mình đang kiểm tra

✅ tính chênh lệch


Thuộc tính nào làm giảm entropy nhiều nhất thì thuộc tính đấy mang nhiều giá trị thông tin (đối với việc dự đoán Yes hay No) nhất. Còn tính thì cứ theo công thức:


Entropy nếu chưa phân nhóm:

Entropy Parent = -p1* log(p1) -p2*log(p2)….


Như trong câu đố xứ Rivia:

Entropy lúc chưa chia nhóm có 7 Yes, 5 No:

originalEntropy = -7/12 * log(7/12) - 5/12 * log(5/12) ~ 0.295


Entropy nếu phân nhóm:

Entropy Parent = p(c1) * entropy(c1) + p(c2) * entropy(c/2) + ⋯


Nếu phân nhóm theo hình cơ thể:

- Hình chữ nhật: 5 Yes 1No: rectangleGroupEntropy = -5/6*log(5/6) - 1/6*log(1/6) ~ 0.196

- Hình oval: 2 Yes 4 No : ovalGroupEntropy = - 4/6 * log (4/6) -2/6 * log(2/6) ~ 0.276

- bodyShapeEntropy = P-oval * ovalGroupEntropy + P-Rectangle * rectangleGroupEntropy = 6/12 * 0.196 + 6/12 * 0.276 = 0.236


Bởi thế nên nếu chia theo Hình cơ thể thì lượng thông tin sẽ tăng lên:

InfomationGain = originalEntropy - bodyShapeEntropy = 0.295 - 0.236 = 0.059.


Cứ làm tương tự với các thuộc tính khác, cái nào có InfomationGain lớn hơn thì chia theo nó sẽ có lợi hơn. Cứ chia như thế tới lúc nào tất cả các nhóm Pure là được.


Gấu Mèo nghe mà hoa cả mắt, chết dở, bài đơn giản mà đã tính toán thế này thì khi tính khách hàng rời bỏ có mà ngất.


Gấu Chó cười đểu: "Chú mày yên tâm, thực ra đây là 1 trong những nguyên lý của thuật toán Decision Tree, Python có nhiều thư viện rồi, và thực tế cũng không cần phải lập trình lại, nhưng mà ko hiểu thì sau chú không nói cho dân kinh doanh với sếp được đâu. Chứ còn chỉ để tìm thuộc tính nào thì các model dạng đấy nó có method để lấy ra feature importance cả. Ngoài ra muốn tìm hiểu thêm thì cứ search Feature selection. Chú search không được thì gửi msg cho anh, anh chỉ qua cho."


Thì ra là thế, Gấu Mèo cặm cụi ngồi tính, sáng hôm sau vênh mặt mang lời giải cho Fat Cat. Fat Cat cười tươi bảo:

- Hay lắm Gấu Mèo, nhưng mà chậm giờ làm rồi, nộp tiền phạt đi. Hơn nữa mẫu có 12 sample thì phân tích gì mà phân tích. Mà chú cứ xem cái nào người và thân cùng dạng thì Yes, khác dạng thì No, đơn giản thế thôi.


Ack Ack hoá ra lão đố để mình chậm giờ làm. Nhưng lần này Gấu Mèo không bực mình. Dù sao nó cũng manh nha ý tưởng để giải quyết bài khách hàng rời bỏ và cũng hiểu rõ hơn về entropy - cái khái niệm trước nay nó vẫn mập mờ.


Thế nhưng tối đấy Gấu Mèo vẫn không ngủ ngon được. Gã Fat Cat nói cũng đúng, chỉ cần sự đồng dạng của thân và đầu cũng ra được. Tuy đấy chỉ là cách giải tạm thời cho bài này, không mở rộng được, nhưng phương pháp của mình lại không thể tìm ra những thứ như thế - sự tương quan giữa các thuộc tính. Nó đi ngủ với chữ SVM lởn vởn trong đầu.


👉Note: Thực ra với các thuật toán Neural Network hiện tại thì việc dự đoán dễ dàng và chính xác hơn nhiều (khi đủ dữ liệu). Tuy nhiên decision tree classifier vẫn là một phương án rất phổ biến trong BI bởi nó dễ giải thích và visualize hơn rất nhiều.


Cùng xem Phần 5 - Gấu mèo đi làm Data Scientist - Tracking customer behavior có gì hay nhé.


Mời các bạn xem lại Phần 4 - Gấu mèo đi làm Data Scientist - Câu đố xứ Rivia - Part 1.


- Tech Zone -

Thư giãn chút nào!!!

Bài viết liên quan