Dự đoán các biến phân loại python
Khi tiếp cận với một bài toán học máy, khả năng cao là chúng ta sẽ phải đối mặt với dữ liệu dạng phân loại (dữ liệu phân loại). Khác với các định dạng dữ liệu số, máy tính sẽ không thể hiểu và làm việc trực tiếp với biến phân loại. Do đó, nhiệm vụ của chúng tôi là phải tìm cách "mã hóa" danh mục định dạng dữ liệu, đưa nó về một định dạng khác để có thể đưa vào mô hình của mình Show Nội dung chính Hiển thị Nội dung chính
Bài viết này là một ghi chú nơi mình ghi chú tóm tắt các cách thức để xử lý dữ liệu phân loại cũng như lưu lại mã cần thiết để sau này có thể dễ dàng tham khảo lại 1. Dữ liệu phân loại là gì2. Cách thức làm việc với dữ liệu phân loại 2. 1. Mã hóa số nguyên/ Mã hóa thứ tự
2. 4. mã hóa nhị phân
Bài viết này là một ghi chú nơi mình ghi chú tóm tắt các cách thức để xử lý dữ liệu phân loại cũng như lưu lại mã cần thiết để sau này có thể dễ dàng tham khảo lại 2. Cách thức làm việc với dữ liệu phân loại2. 1. Mã hóa số nguyên/ Mã hóa thứ tự 2. 3. mã hóa băm 2. 4. mã hóa nhị phân2. 5. Mã hóa cơ sở N 2. 1. Mã hóa số nguyên/ Mã hóa thứ tự2. 2. Mã hóa một lần so với mã hóa giả 2. 3. mã hóa băm2. 4. mã hóa nhị phân 2. 2. Mã hóa một lần so với mã hóa giảMã hóa một lần nóng là một trong những cách thức mã hóa giá trị phân loại phổ biến nhất. Theo đó, mỗi danh mục giá trị sẽ tương ứng với một one-hot vector với k phần tử (k là số lượng của các giá trị khác nhau). là một trong những cách thức mã hóa giá trị phân loại phổ biến nhất. Theo đó, mỗi danh mục giá trị sẽ tương ứng với một one-hot vector với k phần tử (k là số lượng của các giá trị khác nhau) Cách làm như sau. với mỗi giá trị khác nhau của tính năng phân loại, chúng ta sẽ tạo ra một tính năng mới, chẳng hạn như trong ví dụ của bài này sẽ lần lượt là Category_drink, Category_food, v.v. Mỗi danh mục mới này sẽ được gán cho một giá trị là 0 hoặc 1. Nếu sản phẩm thuộc danh mục nào thì giá trị ở đó sẽ là 1. Những tính năng mới được tạo ra này được gọi là Biến giả nhập category_encoders dưới dạng ce encoder=ce. OneHotEncoder(cols='Category', return_df=True,use_cat_names=True) data_encoded = bộ mã hóa. fit_transform(dữ liệu)Mã hóa giả cũng tương tự như mã hóa One-hot nhưng thay vì có k biến giả mới cho k loại khác nhau thì ta chỉ cần k-1 thôi. Một danh mục còn lại sẽ được biểu thị bằng 0 ở tất cả các cột (trong ví dụ này chính là Category_drink). tương tự như mã hóa One-hot nhưng thay vì có k biến giả mới cho k loại khác nhau thì ta chỉ cần k-1 thôi. Một danh mục còn lại sẽ được biểu thị bằng 0 ở tất cả các cột (trong ví dụ này chính là Category_drink) dữ liệu được mã hóa = pdf. get_dummies(data=data,prefix = 'Danh mục', cột = ['Danh mục'], drop_first=True) data_encodedNhược điểm của mã hóa One-hot và Dummy
=> không hiệu quả về bộ nhớ, dễ gây tràn bộ nhớ, làm chậm và giảm hiệu quả trong quá trình học
2. 3. mã hóa bămBăm là quá trình biến đầu vào là một nội dung có kích thước, độ dài bất kỳ rồi sử dụng các thuật toán, công thức toán học để biến đầu ra tiêu chuẩn có độ dài chuẩn nhất. Quá trình đó sử dụng những Hàm băm (Hash function) Cũng giống như mã hóa one-hot, băm cũng như biểu diễn các giá trị định dạng phân loại trên các kích thước mới (bằng các tính năng mới). Chúng ta có thể cố định số tính năng mới này. Tức giận là một tính năng A có 5 giá trị khác nhau có thể được biểu diễn bằng 10 tính năng mới và tính năng B có 100 giá trị cũng có thể được biểu diễn bằng 10 tính năng. Hàm băm mặc định được sử dụng là MD5 nhưng người dùng cũng có thể tùy chọn các hàm băm khác bộ mã hóa = ce. Bộ mã hóa HashingEncoder(cols='Category',n_components=3). fit_transform(dữ liệu)=========>Như chúng ta có thể thấy từ hình trên, vì dữ liệu băm được đưa về một số chiều thấp hơn, nó có thể làm mất mát thông tin hoặc gây ra va chạm (2 giá trị khác nhau được biểu thị giống nhau). Tuy nhiên, đây vẫn là một kỹ thuật đáng thử nghiệm với những tính năng có sức mạnh cơ bản cao 2. 4. mã hóa nhị phânMã hóa nhị phân là sự kết hợp giữa Hashing và One-hot encoding. Đầu tiên các tính năng phân loại sẽ được chuyển thành các số nguyên (mã hóa thứ tự). Sau đó, các số nguyên này được chuyển về định dạng nhị phân. Các giá trị nhị phân sẽ được phân thành các cột Cách thức hoạt động này rất tốt khi số lượng danh mục lớn, sử dụng bộ nhớ hiệu quả hơn sử dụng ít tính năng hơn. Ngoài ra nó còn giúp giảm đáng kể chiều đối với những dữ liệu có cardinality cao 2. 5. Mã hóa cơ sở NMã hóa nhị phân chính là trường hợp của mã hóa Cơ sở N. Sau khi thực hiện mã hóa thứ tự, thì thay đổi số nguyên về hệ nhị phân thành nhị phân, ta sẽ thay đổi số đó về các cơ số khác như 4 hay 8 không hạn chế (=> Cơ số N) bộ mã hóa = ce. BaseNEncoder(cols=['Category'],return_df=True,base=4) data_encoded=encoder. fit_transform(dữ liệu)=======>Như vậy Mã hóa cơ sở N giúp giảm lượng tính năng nhiều hơn so với nhị phân, do đó nó có thể trở nên hữu dụng hơn khi loại lượng lượng ngày càng lớn 2. 6. Đã học nhúngCách thức mã hóa giới thiệu trên chủ yếu mới giải quyết vấn đề về dịnh dạng dữ liệu cũng như cardinality (2/3 biểu thức nêu ra ở đầu bài). Do đó làm thế nào để có thể biểu diễn các mối tương quan giữa các danh mục để máy tính có thể hiểu được. Câu trả lời là nhúng đã học, hay gọi ngắn gọn là “nhúng”, là một cách biểu diễn phân tán (biểu diễn phân tán) cho dữ liệu phân loại Mỗi danh mục sẽ được ánh xạ với một véc tơ riêng, và véc tơ thân này sẽ được cập nhật/"học" trong quá trình traning mạng nơ ron. Nhờ vậy các thể loại gần nhau hoặc có quan hệ với nhau cũng sẽ gần nhau hơn trong không gian vector Kỹ thuật này ban đầu được phát triển để sử dụng trong xử lý ngôn ngữ tự nhiên, với mục đích là cung cấp khả năng nhúng cho các từ (các từ có ngôn ngữ có nghĩa gần nhau sẽ có biểu thức dạng vector tương đồng) Lợi ích
Embedding can be used in Keras qua class tf. máy ảnh. lớp. nhúng. Ta sẽ thêm một lớp Nhúng vào trước các lớp của mạng nơ ron Kết luậnTrong bài viết này, mình đã giới thiệu thông qua một số cách mã hóa dữ liệu dưới dạng phân loại (phân loại) để có thể khai thác các dữ liệu này trong học máy. Trên đây mới chỉ là những hình thức cơ bản nhất và mình sẽ cập nhật thêm các kỹ thuật khác khi có cơ hội. Cảm ơn các bạn đã đọc và mình rất mong nhận được sự đóng góp ý kiến từ các bạn |