Cam đoan: Tiêu chí của các đặc điểm tốt

Chúng tôi đã khám phá các cách để ánh xạ dữ liệu thô thành các vectơ đối tượng phù hợp, nhưng đó chỉ là một phần của công việc. Bây giờ, chúng ta phải tìm hiểu loại giá trị nào thực sự tạo nên các tính năng tốt trong các vectơ tính năng đó.

Tránh các giá trị tính năng riêng biệt ít khi được sử dụng

Giá trị tính năng tốt phải xuất hiện nhiều hơn 5 lần trong một tập dữ liệu. Thao tác này sẽ bật mô hình tìm hiểu mối liên hệ giữa giá trị của tính năng này với nhãn. Điều này nghĩa là việc có nhiều ví dụ có cùng giá trị riêng biệt giúp mô hình có cơ hội xem tính năng này trong các chế độ cài đặt khác nhau, từ đó xác định thời điểm đó là công cụ dự đoán hiệu quả cho nhãn. Ví dụ: một tính năng house_type có thể chứa nhiều ví dụ trong đó giá trị của tính năng đó là victorian:

house_type: victorian

Ngược lại, nếu giá trị của một đối tượng chỉ xuất hiện một lần hoặc rất hiếm khi xuất hiện, thì mô hình sẽ không thể đưa ra thông tin dự đoán dựa trên tính năng đó. Ví dụ: unique_house_id là một tính năng không tốt vì mỗi giá trị chỉ được sử dụng một lần, do đó, mô hình không thể học được bất cứ điều gì từ đó:

unique_house_id: 8SK982ZZ1242Z

Ưu tiên ý nghĩa rõ ràng và rõ ràng

Mỗi tính năng phải có ý nghĩa rõ ràng đối với bất kỳ ai trong dự án. Ví dụ: tính năng tốt sau đây được đặt tên rõ ràng và giá trị phù hợp với tên:

 house_age_years: 27 

Ngược lại, ý nghĩa của giá trị tính năng sau đây hầu như khó hiểu đối với bất kỳ ai ngoại trừ kỹ sư tạo ra nó:

house_age: 851472000

Trong một số trường hợp, dữ liệu gây nhiễu (thay vì các lựa chọn kỹ thuật không chính xác) gây ra các giá trị không rõ ràng. Ví dụ: user_age_Year sau đây đến từ một nguồn không kiểm tra các giá trị phù hợp:

user_age_years: 277

Đừng kết hợp các giá trị "ma thuật" với dữ liệu thực tế

Các tính năng dấu phẩy động tốt không chứa sự gián đoạn đặc biệt ngoài phạm vi hoặc các giá trị "ma thuật". Ví dụ: giả sử một tính năng có giá trị dấu phẩy động từ 0 đến 1. Vì vậy, bạn có thể sử dụng các giá trị như sau:

quality_rating: 0.82
quality_rating: 0.37

Tuy nhiên, nếu người dùng không nhập quality_rating, thì có thể tập dữ liệu sẽ biểu thị sự vắng mặt của nó bằng một giá trị kỳ diệu như sau:

quality_rating: -1

Để đánh dấu rõ ràng các giá trị thần kỳ, hãy tạo một tính năng Boolean cho biết liệu quality_rating có được cung cấp hay không. Hãy đặt tên như is_quality_rating_defined cho tính năng Boolean này.

Trong tính năng gốc, hãy thay thế các giá trị diệu kỳ như sau:

  • Đối với các biến nhận một tập hợp giá trị hữu hạn (biến riêng biệt), hãy thêm một giá trị mới vào tập hợp và sử dụng giá trị đó để biểu thị rằng giá trị tính năng bị thiếu.
  • Đối với các biến liên tục, hãy đảm bảo các giá trị còn thiếu không ảnh hưởng đến mô hình bằng cách sử dụng giá trị trung bình của dữ liệu của tính năng.

Tính đến sự bất ổn định ở thượng nguồn

Định nghĩa về một đối tượng không được thay đổi theo thời gian. Ví dụ: giá trị sau sẽ hữu ích vì tên thành phố có thể sẽ không thay đổi. (Lưu ý rằng chúng ta vẫn cần chuyển đổi một chuỗi như "br/sao_paulo" thành vectơ một nóng.)

city_id: "br/sao_paulo"

Tuy nhiên, việc thu thập giá trị do một mô hình khác suy ra sẽ tốn thêm chi phí. Có thể giá trị "219" đang đại diện cho Sao Paulo, nhưng cách biểu diễn đó có thể dễ dàng thay đổi khi chạy mô hình khác trong tương lai:

inferred_city_cluster: "219"