Trả lời cho sự kiện TensorFlow Everywhere tại địa phương của bạn ngay hôm nay!
Trang này được dịch bởi Cloud Translation API.
Switch to English

Xác thực dữ liệu TensorFlow: Kiểm tra và phân tích dữ liệu của bạn

Khi dữ liệu của bạn nằm trong đường dẫn TFX, bạn có thể sử dụng các thành phần TFX để phân tích và biến đổi nó. Bạn có thể sử dụng những công cụ này ngay cả trước khi bạn đào tạo một người mẫu.

Có nhiều lý do để phân tích và chuyển đổi dữ liệu của bạn:

  • Để tìm các vấn đề trong dữ liệu của bạn. Các vấn đề thường gặp bao gồm:
    • Thiếu dữ liệu, chẳng hạn như các tính năng có giá trị trống.
    • Các nhãn được coi là tính năng để mô hình của bạn có thể nhìn ra câu trả lời phù hợp trong quá trình đào tạo.
    • Các tính năng có giá trị nằm ngoài phạm vi bạn mong đợi.
    • Dữ liệu dị thường.
  • Để thiết kế các bộ tính năng hiệu quả hơn. Ví dụ, bạn có thể xác định:
    • Đặc biệt là các tính năng thông tin.
    • Các tính năng dự phòng.
    • Các tính năng có quy mô khác nhau quá lớn nên chúng có thể làm chậm việc học.
    • Các tính năng có ít hoặc không có thông tin dự đoán duy nhất.

Các công cụ TFX vừa có thể giúp tìm ra lỗi dữ liệu, vừa trợ giúp về kỹ thuật tính năng.

Xác thực dữ liệu TensorFlow

Tổng quat

TensorFlow Data Validation xác định các bất thường trong đào tạo và cung cấp dữ liệu, đồng thời có thể tự động tạo một lược đồ bằng cách kiểm tra dữ liệu. Thành phần này có thể được cấu hình để phát hiện các lớp bất thường khác nhau trong dữ liệu. Nó có thể

  1. Thực hiện kiểm tra tính hợp lệ bằng cách so sánh thống kê dữ liệu với một lược đồ hệ thống hóa các kỳ vọng của người dùng.
  2. Phát hiện sai lệch phục vụ đào tạo bằng cách so sánh các ví dụ trong dữ liệu đào tạo và phục vụ.
  3. Phát hiện sự trôi dạt dữ liệu bằng cách xem xét một loạt dữ liệu.

Chúng tôi ghi lại từng chức năng này một cách độc lập:

Xác thực ví dụ dựa trên giản đồ

Xác thực dữ liệu TensorFlow xác định bất kỳ điểm bất thường nào trong dữ liệu đầu vào bằng cách so sánh thống kê dữ liệu với một lược đồ. Lược đồ hệ thống hóa các thuộc tính mà dữ liệu đầu vào được mong đợi đáp ứng, chẳng hạn như kiểu dữ liệu hoặc giá trị phân loại và người dùng có thể sửa đổi hoặc thay thế.

Tính năng lược đồ nâng cao

Phần này bao gồm cấu hình lược đồ nâng cao hơn có thể trợ giúp với các thiết lập đặc biệt.

Tính năng thưa thớt

Mã hóa các tính năng thưa thớt trong Ví dụ thường giới thiệu nhiều Tính năng được mong đợi có cùng giá trị cho tất cả các Ví dụ. Ví dụ, tính năng thưa thớt:


WeightedCategories = [('CategoryA', 0.3), ('CategoryX', 0.7)]
sẽ được mã hóa bằng các Tính năng riêng biệt cho chỉ mục và giá trị:

WeightedCategoriesIndex = ['CategoryA', 'CategoryX']
WeightedCategoriesValue = [0.3, 0.7]
với hạn chế là giá trị của tính năng chỉ mục và giá trị phải khớp với tất cả các Ví dụ. Hạn chế này có thể được thực hiện rõ ràng trong lược đồ bằng cách xác định một lớp_chỉ_mặt_mặt:

sparse_feature {
  name: 'WeightedCategories'
  index_feature { name: 'WeightedCategoriesIndex' }
  value_feature { name: 'WeightedCategoriesValue' }
}

Định nghĩa đối tượng thưa thớt yêu cầu một hoặc nhiều chỉ mục và một đối tượng giá trị đề cập đến các đối tượng địa lý tồn tại trong lược đồ. Việc xác định rõ ràng các đối tượng địa lý thưa thớt cho phép TFDV kiểm tra xem các giá trị của tất cả các đối tượng địa lý được giới thiệu có khớp nhau không.

Một số trường hợp sử dụng đưa ra các hạn chế về giá trị tương tự giữa các Tính năng, nhưng không nhất thiết phải mã hóa một đối tượng thưa thớt. Sử dụng tính năng thưa thớt sẽ bỏ chặn bạn, nhưng không lý tưởng.

Môi trường giản đồ

Theo các xác thực mặc định giả định rằng tất cả các Ví dụ trong một đường ống tuân theo một lược đồ duy nhất. Trong một số trường hợp, việc giới thiệu các biến thể giản đồ nhỏ là cần thiết, chẳng hạn như các tính năng được sử dụng làm nhãn được yêu cầu trong quá trình đào tạo (và cần được xác thực), nhưng bị thiếu trong quá trình cung cấp. Các môi trường có thể được sử dụng để thể hiện các yêu cầu như vậy, cụ thể là default_environment() , in_environment() , not_in_environment() .

Ví dụ: giả sử một tính năng có tên 'LABEL' là bắt buộc để đào tạo, nhưng dự kiến ​​sẽ bị thiếu khi phân phát. Điều này có thể được thể hiện bằng:

  • Xác định hai môi trường riêng biệt trong lược đồ: ["SERVING", "TRAINING"] và chỉ liên kết 'LABEL' với môi trường "TRAINING".
  • Liên kết dữ liệu đào tạo với môi trường "TRAINING" và dữ liệu phục vụ với môi trường "SERVING".
Tạo lược đồ

Lược đồ dữ liệu đầu vào được chỉ định như một thể hiện của Lược đồ TensorFlow.

Thay vì xây dựng lược đồ theo cách thủ công từ đầu, nhà phát triển có thể dựa vào việc xây dựng lược đồ tự động của TensorFlow Data Validation. Cụ thể, TensorFlow Data Validation tự động xây dựng một lược đồ ban đầu dựa trên số liệu thống kê được tính toán dựa trên dữ liệu đào tạo có sẵn trong đường dẫn. Người dùng có thể chỉ cần xem lại lược đồ được tạo tự động này, sửa đổi nó khi cần thiết, kiểm tra nó vào hệ thống kiểm soát phiên bản và đẩy nó một cách rõ ràng vào đường dẫn để xác thực thêm.

TFDV bao gồm infer_schema() để tạo một giản đồ tự động. Ví dụ:

schema = tfdv.infer_schema(statistics=train_stats)
tfdv.display_schema(schema=schema)

Điều này kích hoạt tạo giản đồ tự động dựa trên các quy tắc sau:

  • Nếu một lược đồ đã được tạo tự động thì nó sẽ được sử dụng nguyên trạng.

  • Nếu không, TensorFlow Data Validation sẽ kiểm tra thống kê dữ liệu có sẵn và tính toán một lược đồ phù hợp cho dữ liệu.

Lưu ý: Lược đồ được tạo tự động là nỗ lực tối đa và chỉ cố gắng suy ra các thuộc tính cơ bản của dữ liệu. Rất mong người dùng xem xét và sửa đổi khi cần thiết.

Đào tạo-Phục vụ Phát hiện xiên

Tổng quat

Xác thực dữ liệu TensorFlow có thể phát hiện độ lệch phân phối giữa dữ liệu đào tạo và phục vụ. Sự lệch phân phối xảy ra khi việc phân phối các giá trị đặc trưng cho dữ liệu đào tạo khác biệt đáng kể với dữ liệu phục vụ. Một trong những nguyên nhân chính gây ra lệch phân phối là sử dụng một kho ngữ liệu hoàn toàn khác để tạo dữ liệu huấn luyện nhằm khắc phục tình trạng thiếu dữ liệu ban đầu trong kho ngữ liệu mong muốn. Một lý do khác là cơ chế lấy mẫu bị lỗi chỉ chọn một mẫu con của dữ liệu phục vụ để đào tạo.

Tình huống mẫu

Xem Hướng dẫn Bắt đầu Xác thực Dữ liệu TensorFlow để biết thông tin về cách định cấu hình phát hiện lệch phục vụ đào tạo.

Phát hiện trôi dạt

Phát hiện độ lệch được hỗ trợ giữa các khoảng dữ liệu liên tiếp (tức là giữa khoảng N và khoảng N + 1), chẳng hạn như giữa các ngày dữ liệu huấn luyện khác nhau. Chúng tôi thể hiện độ lệch theo khoảng cách vô cực L đối với các đối tượng phân loại và phân kỳ Jensen-Shannon gần đúng đối với các đối tượng số. Bạn có thể đặt khoảng cách ngưỡng để nhận được cảnh báo khi độ lệch cao hơn mức có thể chấp nhận được. Đặt khoảng cách chính xác thường là một quá trình lặp đi lặp lại đòi hỏi kiến ​​thức và thử nghiệm miền.

Xem Hướng dẫn Bắt đầu Xác thực Dữ liệu TensorFlow để biết thông tin về cách định cấu hình phát hiện trôi.

Sử dụng hình ảnh hóa để kiểm tra dữ liệu của bạn

TensorFlow Data Validation cung cấp các công cụ để trực quan hóa việc phân phối các giá trị tính năng. Bằng cách kiểm tra các bản phân phối này trong sổ ghi chép Jupyter sử dụng Các khía cạnh, bạn có thể gặp các vấn đề chung với dữ liệu.

Số liệu thống kê về tính năng

Xác định Phân phối Đáng ngờ

Bạn có thể xác định các lỗi phổ biến trong dữ liệu của mình bằng cách sử dụng màn hình Tổng quan về các khía cạnh để tìm kiếm các phân phối đáng ngờ của giá trị tính năng.

Dữ liệu không cân bằng

Đối tượng không cân bằng là đối tượng mà một giá trị chiếm ưu thế. Các tính năng không cân bằng có thể xảy ra một cách tự nhiên, nhưng nếu một tính năng luôn có cùng giá trị, bạn có thể gặp lỗi dữ liệu. Để phát hiện các tính năng không cân bằng trong Tổng quan về các khía cạnh, hãy chọn "Không đồng nhất" từ menu thả xuống "Sắp xếp theo".

Các tính năng không cân bằng nhất sẽ được liệt kê ở đầu mỗi danh sách loại tính năng. Ví dụ: ảnh chụp màn hình sau đây cho thấy một đối tượng địa lý là tất cả các số không và một đối tượng địa lý thứ hai rất mất cân bằng, ở đầu danh sách "Tính năng số":

Trực quan hóa dữ liệu không cân bằng

Dữ liệu được phân phối đồng nhất

Đối tượng địa lý được phân phối đồng đều là đối tượng địa lý mà tất cả các giá trị có thể xuất hiện với tần suất gần giống nhau. Như với dữ liệu không cân bằng, sự phân phối này có thể xảy ra tự nhiên, nhưng cũng có thể do lỗi dữ liệu tạo ra.

Để phát hiện các đối tượng địa lý được phân phối đồng đều trong Tổng quan về các khía cạnh, hãy chọn "Không đồng nhất" từ menu thả xuống "Sắp xếp theo" và chọn hộp kiểm "Đảo ngược thứ tự":

Biểu đồ dữ liệu thống nhất

Dữ liệu chuỗi được biểu diễn bằng biểu đồ thanh nếu có 20 giá trị duy nhất trở xuống và dưới dạng biểu đồ phân phối tích lũy nếu có nhiều hơn 20 giá trị duy nhất. Vì vậy, đối với dữ liệu chuỗi, phân phối đồng nhất có thể xuất hiện dưới dạng biểu đồ thanh phẳng như biểu đồ ở trên hoặc đường thẳng như biểu đồ bên dưới:

Biểu đồ đường: phân phối tích lũy dữ liệu thống nhất

Lỗi có thể tạo ra dữ liệu phân tán đồng nhất

Dưới đây là một số lỗi phổ biến có thể tạo ra dữ liệu được phân phối đồng nhất:

  • Sử dụng chuỗi để biểu diễn các kiểu dữ liệu không phải chuỗi như ngày tháng. Ví dụ: bạn sẽ có nhiều giá trị duy nhất cho tính năng ngày giờ với các đại diện như "2017-03-01-11-45-03". Giá trị duy nhất sẽ được phân phối đồng nhất.

  • Bao gồm các chỉ số như "số hàng" dưới dạng các tính năng. Ở đây một lần nữa bạn có nhiều giá trị độc đáo.

Dữ liệu bị mất

Để kiểm tra xem một đối tượng có hoàn toàn thiếu giá trị hay không:

  1. Chọn "Số tiền bị thiếu / không" từ menu thả xuống "Sắp xếp theo".
  2. Chọn hộp kiểm "Đảo ngược thứ tự".
  3. Nhìn vào cột "bị thiếu" để xem tỷ lệ phần trăm các trường hợp bị thiếu giá trị cho một đối tượng địa lý.

Lỗi dữ liệu cũng có thể gây ra các giá trị tính năng không đầy đủ. Ví dụ: bạn có thể mong đợi danh sách giá trị của một đối tượng địa lý luôn có ba yếu tố và khám phá ra rằng đôi khi nó chỉ có một. Để kiểm tra các giá trị không đầy đủ hoặc các trường hợp khác trong đó danh sách giá trị đối tượng không có số lượng phần tử như mong đợi:

  1. Chọn "Độ dài danh sách giá trị" từ menu thả xuống "Biểu đồ để hiển thị" ở bên phải.

  2. Nhìn vào biểu đồ ở bên phải của mỗi hàng tính năng. Biểu đồ hiển thị phạm vi độ dài danh sách giá trị cho đối tượng địa lý. Ví dụ: hàng được đánh dấu trong ảnh chụp màn hình bên dưới hiển thị một đối tượng địa lý có một số danh sách giá trị có độ dài bằng 0:

Các khía cạnh Hiển thị tổng quan với tính năng với danh sách giá trị tính năng có độ dài bằng 0

Sự khác biệt lớn về quy mô giữa các tính năng

Nếu các tính năng của bạn khác nhau nhiều về quy mô, thì mô hình có thể gặp khó khăn khi học. Ví dụ: nếu một số tính năng thay đổi từ 0 đến 1 và những tính năng khác thay đổi từ 0 đến 1.000.000.000, bạn có sự khác biệt lớn về quy mô. So sánh cột "tối đa" và "tối thiểu" trên các đối tượng địa lý để tìm các thang đo khác nhau.

Cân nhắc chuẩn hóa các giá trị của đối tượng địa lý để giảm các biến thể rộng này.

Nhãn có Nhãn không hợp lệ

Công cụ ước tính của TensorFlow có các hạn chế về loại dữ liệu mà chúng chấp nhận làm nhãn. Ví dụ: bộ phân loại nhị phân thường chỉ hoạt động với nhãn {0, 1}.

Xem lại các giá trị nhãn trong Tổng quan về các khía cạnh và đảm bảo chúng tuân thủ các yêu cầu của Công cụ ước tính .