Cam đoan: Làm sạch dữ liệu

Cây táo tạo ra một số hỗn hợp gồm nhiều loại trái cây và sâu bọ. Tuy nhiên, ở các cửa hàng tạp hoá cao cấp, quả táo luôn được bày bán là quả hoàn hảo 100%. Giữa vườn cây ăn quả và cửa hàng tạp hoá, ai đó dành thời gian đáng kể để nhổ bỏ những quả táo xấu hoặc ném một chút sáp lên những quả táo còn sót lại được. Là một kỹ sư công nghệ học máy, bạn sẽ dành rất nhiều thời gian để chỉ ra các ví dụ xấu và dọn dẹp những ví dụ có thể khôi phục được. Thậm chí một vài "táo xấu" cũng có thể làm hỏng một tập dữ liệu lớn.

Điều chỉnh tỷ lệ giá trị tính năng

Điều chỉnh theo tỷ lệ nghĩa là chuyển đổi các giá trị của tính năng dấu phẩy động từ phạm vi tự nhiên (ví dụ: 100 đến 900) thành một phạm vi chuẩn (ví dụ: 0 đến 1 hoặc -1 đến +1). Nếu một bộ tính năng chỉ bao gồm một tính năng duy nhất, thì việc điều chỉnh theo tỷ lệ sẽ mang lại rất ít hoặc không có lợi ích thực tế. Tuy nhiên, nếu một bộ tính năng bao gồm nhiều tính năng, thì việc mở rộng tính năng sẽ mang lại các lợi ích sau:

  • Giúp giảm độ dốc hội tụ nhanh hơn.
  • Giúp tránh "bẫy NaN", trong đó một số trong mô hình trở thành NaN (ví dụ: khi một giá trị vượt quá giới hạn độ chính xác của dấu phẩy động trong quá trình huấn luyện) và do có các phép toán nên mọi số khác trong mô hình cuối cùng cũng trở thành NaN.
  • Giúp mô hình học trọng số thích hợp cho mỗi tính năng. Nếu không chuyển tỷ lệ tính năng, mô hình sẽ tập trung quá nhiều vào các tính năng có phạm vi rộng hơn.

Bạn không cần phải cung cấp cho mọi tính năng dấu phẩy động có cùng tỷ lệ. Sẽ không có gì khủng khiếp xảy ra nếu Tính năng A được điều chỉnh theo tỷ lệ từ -1 đến +1, trong khi Tính năng B được điều chỉnh từ -3 lên +3. Tuy nhiên, mô hình của bạn sẽ phản ứng kém nếu Tính năng B được điều chỉnh theo tỷ lệ từ 5000 đến 100000.

Xử lý các điểm ngoại lai quá mức

Biểu đồ sau đây biểu thị một tính năng có tên là roomsPerPerson từ tập dữ liệu về Nhà ở tại California. Giá trị của roomsPerPerson được tính bằng cách chia tổng số phòng của một khu vực cho dân số của khu vực đó. Biểu đồ cho thấy hầu hết các khu vực ở California đều có từ một đến hai phòng cho mỗi người. Nhưng hãy xem dọc theo trục x.

Biểu đồ RoomPerPerson, trong đó gần như tất cả các giá trị được nhóm từ 0 đến 4, nhưng có một cái đuôi dài kéo dài đến tận 55 phòng cho mỗi người

Hình 4. Một cái đuôi lảm nhảm.

Làm cách nào để chúng ta có thể giảm thiểu ảnh hưởng của những điểm ngoại lai cực đoan đó? Có một cách là lấy nhật ký của mọi giá trị:

Một biểu đồ nhật ký(roomsPerPerson) trong đó 99% giá trị tập hợp trong khoảng từ 0,4 đến 1,8, nhưng vẫn có một cái đuôi dài đến 4.2 hoặc lâu hơn.

Hình 5. Tỷ lệ lôgarit vẫn để lại đuôi.

Việc điều chỉnh theo tỷ lệ nhật ký hoạt động hiệu quả hơn một chút, nhưng vẫn còn một lượng đáng kể các giá trị ngoại lệ. Hãy chọn một phương pháp khác. Điều gì sẽ xảy ra nếu chúng ta chỉ đơn giản là "giới hạn" hoặc "ghim" giá trị tối đa của roomsPerPerson tại một giá trị tuỳ ý, chẳng hạn như 4.0?

Biểu đồ RoomPerPerson, trong đó tất cả các giá trị nằm trong khoảng từ -0,3 đến 4,0. Cốt truyện có hình chuông, nhưng có một ngọn đồi bất thường ở vị trí 4.0

Hình 6. Các giá trị của tính năng cắt ở phiên bản 4.0

Việc cắt giảm giá trị tính năng ở mức 4.0 không có nghĩa là chúng ta bỏ qua tất cả các giá trị lớn hơn 4.0. Thay vào đó, điều này có nghĩa là tất cả các giá trị lớn hơn 4.0 giờ trở thành 4.0. Điều này giải thích về ngọn đồi vui nhộn ở mức 4.0. Mặc dù vậy, bộ tính năng được điều chỉnh theo tỷ lệ hiện hữu ích hơn dữ liệu gốc.

Kết hợp

Biểu đồ sau đây cho thấy tỷ lệ tương đối của các ngôi nhà ở các vĩ độ khác nhau ở California. Hãy lưu ý cách phân cụm – Los Angeles ở vĩ độ 34 và San Francisco gần vĩ độ 38.

Biểu đồ nhà theo vĩ độ. Cốt truyện rất không đều, chứa các lõm ở vĩ độ 36 và các đỉnh dao động khổng lồ quanh vĩ độ 34 và 38.

Hình 7. Số nhà theo vĩ độ.

Trong tập dữ liệu, latitude là giá trị dấu phẩy động. Tuy nhiên, việc biểu thị latitude dưới dạng một tính năng dấu phẩy động trong mô hình của chúng tôi sẽ không hợp lý. Lý do là không có mối quan hệ tuyến tính nào giữa các giá trị vĩ độ và nhà ở. Ví dụ: những căn nhà ở vĩ độ 35 không \(\frac{35}{34}\) đắt hơn (hoặc ít tốn kém hơn) so với những ngôi nhà ở vĩ độ 34. Chưa hết, các vĩ độ riêng lẻ có lẽ là một công cụ dự báo khá tốt về các giá trị tổng thể.

Để làm cho vĩ độ trở thành một công cụ dự báo hữu ích, hãy chia vĩ độ thành "thùng" như được đề xuất trong hình sau:

Biểu đồ nhà theo vĩ độ. Lô đất được chia thành

Hình 8. Giá trị kết hợp.

Thay vì có một tính năng dấu phẩy động, chúng tôi hiện có 11 tính năng boolean riêng biệt (LatitudeBin1, LatitudeBin2, ..., LatitudeBin11). Việc có 11 tính năng riêng biệt có phần không phù hợp, vì vậy hãy hợp nhất chúng thành một vectơ 11 phần tử duy nhất. Thao tác này sẽ cho phép chúng ta biểu thị vĩ độ 37.4 như sau:

[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]

Nhờ vào việc gộp nhóm, mô hình của chúng tôi hiện có thể học các trọng số hoàn toàn khác nhau cho từng vĩ độ.

Bào rãnh

Cho đến nay, chúng tôi giả định rằng tất cả dữ liệu dùng để huấn luyện và kiểm thử là đáng tin cậy. Trong thực tế, nhiều ví dụ trong tập dữ liệu không đáng tin cậy do một hoặc nhiều nguyên nhân sau:

  • Giá trị bị bỏ qua. Ví dụ: một người quên nhập giá trị cho tuổi của ngôi nhà.
  • Ví dụ trùng lặp. Ví dụ: máy chủ tải nhầm cùng một nhật ký lên hai lần.
  • Nhãn không hợp lệ. Ví dụ: một người đã gắn nhãn nhầm một bức ảnh cây sồi là cây phong.
  • Giá trị tính năng không hợp lệ. Ví dụ: ai đó nhập thêm một chữ số hoặc nhiệt kế bị để ngoài trời.

Sau khi phát hiện, bạn thường "khắc phục" các ví dụ không hợp lệ bằng cách xoá các ví dụ đó khỏi tập dữ liệu. Để phát hiện các giá trị bị bỏ qua hoặc ví dụ trùng lặp, bạn có thể viết một chương trình đơn giản. Việc phát hiện nhãn hoặc giá trị tính năng không hợp lệ có thể khó khăn hơn nhiều.

Ngoài việc phát hiện các ví dụ riêng lẻ không hợp lệ, bạn cũng phải phát hiện dữ liệu không hợp lệ trong dữ liệu tổng hợp. Biểu đồ là một cơ chế tuyệt vời để trực quan hoá dữ liệu của bạn ở dạng tổng hợp. Ngoài ra, việc thu thập số liệu thống kê như sau có thể giúp:

  • Tối đa và tối thiểu
  • Giá trị trung bình và trung vị
  • Độ lệch chuẩn

Hãy cân nhắc việc tạo danh sách các giá trị phổ biến nhất cho các đối tượng riêng biệt. Ví dụ: số lượng ví dụ có country:uk có khớp với số lượng bạn mong đợi không. language:jp có thực sự là ngôn ngữ phổ biến nhất trong tập dữ liệu của bạn không?

Biết rõ dữ liệu của bạn

Hãy tuân theo các quy tắc sau:

  • Lưu ý đến cách bạn nghĩ dữ liệu của mình sẽ hiển thị.
  • Xác minh rằng dữ liệu đáp ứng những kỳ vọng này (hoặc bạn có thể giải thích lý do dữ liệu không đáp ứng những kỳ vọng đó).
  • Hãy kiểm tra kỹ để đảm bảo dữ liệu huấn luyện phù hợp với các nguồn khác (ví dụ: trang tổng quan).

Hãy quan tâm đến dữ liệu của bạn như mọi mã thiết yếu với sứ mệnh. Công nghệ học máy hiệu quả cần phải có dữ liệu chất lượng cao.

Thông tin khác

Quy tắc học máy, ML Giai đoạn II: Kỹ thuật tính năng