Một bước phổ biến trước khi đào tạo các thuật toán học máy là rời rạc hóa các biến liên tục. Nhưng, tại sao chúng ta rời rạc hóa các biến liên tục và làm cách nào để sắp xếp dữ liệu liên tục thành các giá trị rời rạc?
Rời rạc hóa là quá trình qua đó chúng ta có thể biến đổi các biến, mô hình hoặc hàm liên tục thành một dạng rời rạc. Chúng tôi làm điều này bằng cách tạo một tập hợp các khoảng liền kề [hoặc các ngăn] đi qua phạm vi của biến/mô hình/hàm mong muốn của chúng tôi
Tôi. Tại sao rời rạc hóa lại quan trọngDữ liệu liên tục được đo, trong khi dữ liệu rời rạc được tính
Các bài toán với dữ liệu liên tục có vô số DoF. Một vấn đề như vậy sẽ đòi hỏi phải có bậc tự do hạn chế [DoF] vì các tính toán của chúng tôi không thể tiếp tục mãi mãi. Các nhà khoa học dữ liệu yêu cầu sử dụng Discretization vì một số lý do. Nhiều đóng góp hàng đầu trên Kaggle sử dụng rời rạc hóa vì một số lý do sau
Photo by Ryoji Iwata on Unsplash
Phù hợp với tuyên bố vấn đề
Thông thường, dữ liệu liên tục [chẳng hạn như trọng lượng] sẽ dễ hiểu hơn khi được chia và lưu trữ thành các danh mục hoặc nhóm có ý nghĩa. Ví dụ: chúng ta có thể chia một biến liên tục, trọng số và lưu trữ nó trong các nhóm sau.
Dưới 100 lbs [nhẹ], từ 140–160 lbs [trung bình] và trên 200 lbs [nặng]
Chúng tôi sẽ coi cấu trúc này là hữu ích nếu chúng tôi thấy không có sự khác biệt khách quan giữa các biến thuộc cùng một loại trọng số.
Trong ví dụ của chúng tôi, trọng lượng 85 lbs và 56 lbs truyền tải cùng một thông tin [đối tượng nhẹ]. Do đó, rời rạc hóa giúp làm cho dữ liệu của chúng ta dễ hiểu hơn nếu nó phù hợp với tuyên bố vấn đề.
Ảnh của William Daigneault trên Bapt
Phiên dịch các tính năng
Các tính năng liên tục có cơ hội tương quan với biến mục tiêu nhỏ hơn do bậc tự do vô hạn và có thể có mối quan hệ phi tuyến tính phức tạp. Do đó, có thể khó giải thích một chức năng như vậy. Sau khi rời rạc hóa một biến, các nhóm tương ứng với mục tiêu có thể được diễn giải
Ảnh của Franck V. trên Bapt
Không tương thích với các mô hình/phương pháp
Một số mô hình có thể không tương thích với dữ liệu liên tục, ví dụ: các mô hình cây quyết định thay thế như mô hình Rừng ngẫu nhiên không phù hợp với các tính năng liên tục
Các phương pháp kỹ thuật tính năng, chẳng hạn như bất kỳ phương pháp dựa trên entropy nào có thể không hoạt động với dữ liệu liên tục, do đó chúng tôi sẽ phân biệt các biến để hoạt động với các mô hình & phương pháp khác nhau
Ảnh của Mariano Werneck trên Bapt
Tỷ lệ tín hiệu trên tạp âm
Khi chúng tôi rời rạc hóa một mô hình, chúng tôi đang lắp nó vào các thùng và giảm tác động của những biến động nhỏ trong dữ liệu. Thông thường, chúng ta sẽ coi những biến động nhỏ là tiếng ồn. Chúng ta có thể giảm tiếng ồn này thông qua rời rạc hóa. Đây là quá trình “làm mịn”, trong đó mỗi thùng làm mịn các dao động, do đó giảm nhiễu trong dữ liệu
II. Phương pháp tiếp cận rời rạc hóa
- Không giám sát.
— Chiều rộng bằng nhau
— Tần số bằng nhau
— K-Means - Được giám sát.
— Cây quyết định
Tách tất cả các giá trị có thể thành số lượng 'N' ngăn, mỗi ngăn có cùng chiều rộng. Công thức cho độ rộng khoảng
Chiều rộng = [giá trị lớn nhất - giá trị nhỏ nhất] / N
* trong đó N là số ngăn hoặc khoảng.
Trên python, bạn sẽ muốn nhập phần sau để phân biệt
from sklearn.preprocessing import KBinsDiscretizer
from feature_engine.discretisers import EqualWidthDiscretiser
Thiết lập Equal-Width Discretizer theo cách sau
discretizer = EqualWidthDiscretiser[bins=10, variables = ['var1', 'var2']]#OR discretizer = KBinsDiscretizer[n_bins=10, encode='ordinal', strategy='uniform']
- Chiều rộng bằng nhau không cải thiện chênh lệch giá trị
- Nó có thể xử lý các ngoại lệ
- Có thể được kết hợp với mã hóa phân loại
IV. Phân biệt tần số bằng nhau
Tách tất cả các giá trị có thể thành số lượng 'N' thùng, mỗi thùng có cùng số lượng quan sát. Các khoảng có thể tương ứng với các giá trị lượng tử
Trên python, bạn sẽ muốn nhập phần sau để phân biệt
from sklearn.preprocessing import KBinsDiscretizer
from feature_engine.discretisers import EqualFrequencyDiscretiser
Thiết lập Equal-Frequency Discretizer theo cách sau
discretizer = KBinsDiscretizer[n_bins=10, encode='ordinal', strategy='quantile']#OR discretizer = EqualFrequencyDiscretiser[q=10, variables = ['var1', 'var2']]
- Tần số bằng nhau cải thiện sự lan truyền giá trị
- Nó có thể xử lý các ngoại lệ
- Có thể được kết hợp với mã hóa phân loại
V. K-Means rời rạc hóa
Chúng tôi áp dụng phân cụm K-Means cho biến liên tục, do đó chia nó thành các nhóm hoặc cụm riêng biệt
Trên python, bạn sẽ muốn nhập phần sau để phân biệt với K-means
from sklearn.preprocessing import KBinsDiscretizer
Thiết lập K-means Discretizer theo cách sau
discretizer = KBinsDiscretizer[n_bins=5, encode='ordinal', strategy='kmeans']
- K-Means không cải thiện chênh lệch giá trị
- Nó có thể xử lý các ngoại lệ, tuy nhiên có thể tồn tại sự thiên vị trọng tâm
- Có thể được kết hợp với mã hóa phân loại
VI. Phân biệt với cây quyết định
Chúng tôi sử dụng cây quyết định để xác định số lượng thùng tối ưu. Khi mô hình đưa ra quyết định, nó sẽ chỉ định một quan sát cho mỗi nút. Những quan sát này sau đó được phân loại thành đầu ra rời rạc cho biến của chúng tôi