Mã Python rời rạc dựa trên entropy
Tiếp tục các tính năng trong dữ liệu có thể được rời rạc hóa bằng phương pháp rời rạc thống nhất. Discretization chỉ xem xét các tính năng tiếp tục và thay thế chúng trong tập dữ liệu mới bằng các tính năng phân loại tương ứng Show import Orange iris = Orange.data.Table("iris.tab") disc_iris = Orange.data.discretization.DiscretizeTable(iris, method=Orange.feature.discretization.EqualFreq(n=3)) print "Original data set:" for e in iris[:3]: print e print "Discretized data set:" for e in disc_iris[:3]: print e Discretization giới thiệu các tính năng phân loại mới với các giá trị rời rạc Original data set: [5.1, 3.5, 1.4, 0.2, 'Iris-setosa'] [4.9, 3.0, 1.4, 0.2, 'Iris-setosa'] [4.7, 3.2, 1.3, 0.2, 'Iris-setosa'] Discretized data set: ['<=5.45', '>3.15', '<=2.45', '<=0.80', 'Iris-setosa'] ['<=5.45', '(2.85, 3.15]', '<=2.45', '<=0.80', 'Iris-setosa'] ['<=5.45', '>3.15', '<=2.45', '<=0.80', 'Iris-setosa'] Phân biệt dữ liệu sử dụng các lớp phân biệt đối tượng từ Phân biệt đối tượng (rời rạc hóa) và áp dụng chúng trên toàn bộ tập dữ liệu. Các phương pháp rời rạc được hỗ trợ là
Phương pháp rời rạc hóa mặc định (tần số bằng nhau với ba khoảng thời gian) có thể được thay thế bằng các phương pháp rời rạc hóa khác như minh họa bên dưới Trong hai tuần qua, tôi đã hoàn thành một dự án khai thác dữ liệu bằng Python. Trong dự án, tôi đã triển khai Naive Bayes cùng với một số thuật toán tiền xử lý. Vì đây là lần đầu tiên tôi đi sâu vào lĩnh vực khai thác dữ liệu, nên tôi nhận thấy nhiều phương trình toán học khó hiểu bằng trực giác, vì vậy đây là hướng dẫn đơn giản cho một trong những phần yêu thích của tôi trong dự án, sự rời rạc hóa dựa trên entropy Vấn đề ở đây là gì?Dữ liệu lộn xộn. Nhưng chúng tôi muốn biết những điều về dữ liệu của chúng tôi. thật khó khăn Chúng tôi gặp vấn đề này khi cố gắng làm sạch nó và đưa nó vào các định dạng có thể sử dụng được cho các thuật toán khai thác dữ liệu ưa thích của chúng tôi. Một trong những vấn đề là nhiều thuật toán, chẳng hạn như Cây quyết định, chỉ chấp nhận các biến phân loại, vì vậy nếu bạn có một số thuộc tính tuổi hoặc một biến liên tục khác, thì thuật toán không thể hiểu được ý nghĩa của nó Nói cách khác, chúng ta cần lấy dữ liệu liên tục này và "bin" nó thành các danh mục. Ngọt. Vì vậy, chúng tôi chỉ có thể chọn ngẫu nhiên nơi để cắt dữ liệu của mình, phải không? . Vâng, bạn có thể, nhưng đó là một ý tưởng tồi. Đây là lý do tại sao Giả sử bạn chia sai điểm và có dữ liệu không đồng đều. Ví dụ: bạn đang cố gắng xác định điều gì đó như nguy cơ mắc bệnh alzheimer và bạn chia dữ liệu tuổi thành 16 tuổi, 24 tuổi và 30 tuổi. Thùng của bạn trông giống như thế này
Giờ đây, bạn có một thùng khổng lồ gồm những người trên 30 tuổi, nơi có hầu hết bệnh nhân Alzheimer và nhiều thùng được phân chia ở các giá trị thấp hơn, nơi bạn không thực sự nhận được nhiều thông tin Vì vấn đề này, chúng tôi muốn thực hiện các phân tách có ý nghĩa trong các biến liên tục của mình Đó là nơi mà sự rời rạc dựa trên entropy xuất hiện. Nó giúp chúng tôi phân chia dữ liệu của mình tại các điểm mà chúng tôi sẽ thu được nhiều thông tin chi tiết nhất sau khi chúng tôi cung cấp tất cả dữ liệu đó cho các thuật toán khai thác dữ liệu của mình Thứ entropy này là gì?Sự hỗn loạn. Nó còn được gọi là Thông tin mong đợi. Đó là những gì chúng tôi gọi là giá trị này, về cơ bản mô tả mức độ nhất quán của sự phân chia tiềm năng sẽ phù hợp với một bộ phân loại Ví dụ: giả sử chúng tôi đang xem tất cả những người dưới 25 tuổi. Ngoài nhóm đó, chúng ta có thể mong đợi bao nhiêu người có thu nhập trên 50 nghìn hoặc dưới 50 nghìn? . Ví dụ: trong số 10 người dưới 25 tuổi, giả sử chúng ta có 6 người kiếm được trên 50.000 mỗi năm và 4 người kiếm được dưới 50.000 mỗi năm. Nó trông giống như thế này Income<=50KIncome > 50KAge <2546Điều này sẽ có giá trị entropy cao (gần bằng 1) Nếu chúng ta đang cố gắng xác định thu nhập dựa trên độ tuổi, chúng ta tự hỏi mình Q. Biết ai đó dưới 25 tuổi có cung cấp cho chúng tôi thông tin tốt về thu nhập của họ không? A. Chắc là không. Dữ liệu đào tạo của chúng tôi chỉ ra rằng 6/10 người dưới 25 tuổi kiếm được hơn 50.000 và phần còn lại kiếm được dưới đây. Điều này cho chúng ta biết không có gì Bây giờ hãy thay đổi trò chơi một chút. Giả sử rằng, trong số những người dưới 25 tuổi, 9 người kiếm được dưới 50.000 và người cuối cùng kiếm được trên 50.000. Bây giờ, biểu đồ đơn giản của chúng tôi trông như thế này Income<=50KIncome > 50KAge <2591Điều này sẽ mang lại cho chúng tôi giá trị entropy thấp hơn vì nó cung cấp cho chúng tôi nhiều thông tin hơn về những gì chúng tôi đang cố gắng khám phá (thu nhập) Bây giờ chúng ta đã hiểu ý tưởng cơ bản về entropy tốt thấp hơn, entropy xấu cao hơn, chúng ta hãy tìm hiểu một chút về toán học. Đây là phương trình cho entropy So what does this mean? I'll break it down step by step. So we have a summation that goes from 1 -> m, where m is the number of classifier values we have. In this case, m is 2 because we have 2 options: income <=50K and income >50K. Tiếp theo, chúng ta có giá trị p. Đây là xác suất nhận được một bộ phân loại cụ thể cho thùng bạn đang xem. Vì vậy, nếu bạn có 10 hàng dữ liệu và 5 hàng trong số đó có thu nhập <=50, xác suất của điều đó sẽ là 5/10 hoặc 1/2. Bạn chỉ có thể đếm Vì vậy, đó là tất cả những gì chúng ta cần cho phần này. Hãy xem xét lại các ví dụ trước của chúng ta và tính entropy cho mỗi Trong ví dụ đầu tiên của chúng tôi, chúng tôi có 4 mẫu dưới 50 và 6 mẫu trên. Hãy tính entropy Income<=50KIncome > 50KAge <2546Bây giờ, hãy xem ví dụ thứ hai Income<=50KIncome > 50KAge <2591Ồ. chúng tôi đã đi từ. 971 đến. 469. cải thiện LỚN. Thậm chí tốt hơn, nếu chúng ta có 10 trong một loại và 0 trong loại kia, chúng ta có entropy hoàn hảo--0 Bây giờ, hãy nói về cách entropy phù hợp với sơ đồ rộng hơn của sự rời rạc hóa dựa trên entropy Tăng Entropy. Nền tảng của sự rời rạc hóaỞ cấp độ rộng, sự rời rạc dựa trên entropy thực hiện thuật toán sau
Nếu điều đó nghe có vẻ quá sức, đừng lo lắng. chúng ta sẽ đi qua tất cả bây giờ Một điều bạn có thể nhận thấy là có một thuật ngữ mới ở đây được gọi là "mức tăng entropy. " Trong trường hợp bạn chưa đoán, điều đó về cơ bản đề cập đến lượng entropy bạn đạt được bằng cách chia một tập dữ liệu thành hai ngăn Như chúng tôi đã đề cập, entropy thấp hơn sẽ tốt hơn, vì vậy mức tăng Entropy được tính như sau Nếu điều này làm bạn bối rối, chỉ cần nghĩ về nó theo cách này. Chúng tôi muốn thực hiện phân tách để cải thiện thông tin chúng tôi nhận được từ dữ liệu của mình. Theo đó, chúng tôi muốn thực hiện phân tách nhằm tối đa hóa việc cải thiện thông tin chúng tôi nhận được từ dữ liệu của mình Entropy đạt được các biện pháp mà Vì vậy, bây giờ bạn biết rằng chúng ta cần tìm và tối đa hóa mức tăng entropy để thực hiện phân tách, nhưng làm cách nào để tìm entropy ròng giữa hai ngăn dữ liệu khác nhau và so sánh nó với chỉ một giá trị? (giá trị là E mới ở trên) Entropy trên nhiều thùngHãy quay trở lại ví dụ của chúng ta về độ tuổi dự đoán thu nhập. Chúng tôi có các giá trị tuổi liên tục và chúng tôi muốn chia chúng. Giả sử một lần nữa rằng chúng ta đã tạo hai thùng, chia ở 25. Hãy tạo một biểu đồ cho điều này như sau Income<=50KIncome > 50KAge <2591Age >=2546Tôi đã sử dụng các số sau vì chúng tôi đã tính toán entropy cho cả hai tập dữ liệu In this case, our information(using the calculations above) for age <25 will be .469 and our information for age >=25 will be .971. To combine these two values into one net entropy, we simply take the proportion of each in our overall age bin. Overall, we have 20 samples. Conveniently, 10 fall in the age <25 category and the other 10 fall in the age >25 category. This means that, as a proportion of total entropy, age <25 counts for 10/20 and age >25 accounts for 10/20. This would apply if your bins were unequal sizes as well. In general, we can state the net entropy with the following equation: Nói cách khác, thông tin của chúng tôi trên hai thùng sẽ bằng tỷ lệ kích thước của thùng nhân với entropy của thùng đó Ví dụ của chúng tôi, nó trông như thế này Điều đó sẽ cung cấp cho chúng tôi một giá trị duy nhất mà chúng tôi có thể so sánh với giá trị ban đầu của mình. Bây giờ chúng ta đã thiết lập entropy và mức tăng entropy, hãy kết hợp nó với một ví dụ Ví dụĐể kết hợp điều này lại với nhau, chúng ta hãy xem một ví dụ về điều này trong thực tế. Để chứng minh rằng điều này không cần chỉ dự đoán thu nhập dựa trên độ tuổi, hãy làm một ví dụ mới. Lần này, chúng ta sẽ nghiên cứu số giờ dưới dạng biến liên tục và A trong bài kiểm tra với tư cách là bộ phân loại của chúng ta. Dữ liệu trông như thế này (được sắp xếp trước để thuận tiện cho bạn) Giờ họcA trên Test4N5Y8N12Y15YTrong trường hợp này, chúng tôi có dữ liệu liên quan đến số giờ học của nhiều sinh viên nhằm xác định ảnh hưởng của nó đối với kết quả bài kiểm tra của họ. Chúng tôi muốn rời rạc hóa dữ liệu này, vì vậy hãy bắt đầu bằng cách tính toán entropy của chính tập dữ liệu đó A trên TestThấp hơn AOverall32Đối với tất cả các mẫu của chúng tôi, entropy để đánh bại là. 971. Bây giờ, hãy lặp lại và xem phân tách nào mang lại cho chúng ta mức tăng entropy tối đa. Để tìm sự phân chia, chúng tôi tính trung bình hai giá trị lân cận trong danh sách chia 1. 4. 5Bắt đầu, chúng tôi chia tay lúc 4. 5 ((5+4)/2). Bây giờ chúng tôi nhận được hai thùng, như sau A on TestLower than A<=4.501>4.531Bây giờ, chúng tôi tính toán entropy cho mỗi thùng và tìm thông tin thu được của sự phân chia này. Entropy ròng bây giờ là. Và lợi ích của chúng ta là. Trông được. Mức tăng entropy tối đa của chúng tôi bây giờ là. 322. Điều đó tốt, nhưng chúng ta vẫn cần phải hoàn thành phần còn lại chia 2. 6. 5Trung bình hai giá trị tiếp theo của chúng tôi và chúng tôi nhận được 6. 5. Bây giờ chúng tôi lặp lại quy trình cho sự phân chia này A on TestLower than A<=6.511>6.521Một lần nữa, tính entropy cho mỗi thùng Ồ. Cái này trông đã tệ rồi, nhưng hãy hoàn thành nó Đây là mức tăng ít hơn so với trước đây, vì vậy điểm phân chia tốt nhất của chúng tôi vẫn là 4. 5. Hãy kiểm tra cái tiếp theo ngay bây giờ chia 3. 10Trung bình hai giá trị tiếp theo của chúng tôi và chúng tôi nhận được 10. Sự phân chia của chúng tôi bây giờ trông như thế này A on TestLower than A<=1012>1020As before, we calculate entropy for each bin and determine information:Cuối cùng, chúng tôi tính toán mức tăng một lần nữa Đây là người chiến thắng rõ ràng vào thời điểm này chia 4. 13. 5Và đối với khả năng phân chia tiềm năng cuối cùng của chúng tôi, chúng tôi chia ở mức 13. 5. Bây giờ phần tách của chúng ta trông như thế này. Để cho ngắn gọn, tôi sẽ không tính toán cái này, nhưng chúng ta có thể suy luận dựa trên dữ liệu bên dưới rằng nó sẽ có mức tăng entropy kém vì thùng đầu tiên có phân phối 50/50 A on TestLower than A<=13.522>13.510Chọn phần chiaSau khi tính toán mọi thứ, chúng tôi thấy rằng cách chia tốt nhất của chúng tôi là cách chia 3, điều này giúp chúng tôi thu được thông tin tốt nhất về. 421. Chúng tôi sẽ phân vùng dữ liệu ở đó Theo thuật toán, giờ đây chúng ta có thể thêm các thuộc tính của mình vào các thùng mà chúng ta vừa tạo. Quá trình này sẽ tiếp tục cho đến khi chúng tôi đáp ứng tiêu chí chấm dứt Khi nào thì chấm dứtCó hai tùy chọn phổ biến để dừng thuật toán
Thông thường, cả hai tiêu chí này sẽ được sử dụng kết hợp để mang lại kết quả tối ưu Tóm lượcEntropy là một khái niệm cơ bản trong Khai thác dữ liệu được sử dụng vượt xa sự rời rạc hóa dữ liệu đơn giản. Những cách tiếp cận này cũng được sử dụng cho cây quyết định và bộ phân loại dựa trên quy tắc, vì vậy việc hiểu nó chắc chắn là một công cụ hữu ích cần có trong bộ công cụ của bạn Sự rời rạc dựa trên entropy là gì?Sự rời rạc hóa dựa trên entropy là phương pháp phân tách từ trên xuống được giám sát . Nó khám phá dữ liệu phân phối lớp trong tính toán và bảo toàn các điểm phân tách (giá trị dữ liệu để phân tách một phạm vi thuộc tính).
Entropy dựa trên cái gì?Các phép đo ngưỡng entropy dựa trên khái niệm entropy . Thống kê entropy cao nếu một biến được phân phối tốt trên phạm vi có sẵn và thấp nếu nó được sắp xếp hợp lý và phân phối hẹp. Cụ thể, entropy là thước đo của sự mất trật tự và bằng 0 đối với một hệ thống có trật tự hoàn hảo. |