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 đối tượng địa lý 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 đúng 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 bất thường.
- Chuyển mô hình đã học có xử lý trước không khớp với dữ liệu đào tạo.
- Để 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 quá trình học tập.
- Các tính năng có ít hoặc không có thông tin tiên đ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 có thể trợ giúp về kỹ thuật tính năng.
Xác thực dữ liệu TensorFlow
Tổng quan
Xác thực dữ liệu TensorFlow 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ể
- 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.
- 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ụ.
- 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 đồ mã hóa các thuộc tính mà dữ liệu đầu vào được mong đợi sẽ đá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ế.
Xác thực dữ liệu Tensorflow thường được gọi nhiều lần trong ngữ cảnh của đường ống TFX: (i) cho mọi phần tách thu được từ ExampleGen, (ii) cho tất cả dữ liệu được chuyển đổi trước được sử dụng bởi Transform và (iii) cho tất cả dữ liệu sau chuyển đổi được tạo bởi Biến đổi. Khi được gọi trong ngữ cảnh của Transform (ii-iii), các tùy chọn thống kê và các ràng buộc dựa trên lược đồ có thể được đặt bằng cách xác định stats_options_updater_fn
. Điều này đặc biệt hữu ích khi xác thực dữ liệu phi cấu trúc (ví dụ: các tính năng văn bản). Xem mã người dùng để biết ví dụ.
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 thưa thớ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 hay 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 phải là 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 giản đồ: ["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ó nếu cần, 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 lược đồ 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 quan
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 sự 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 cho các đối tượng phân loại và phân kỳ Jensen-Shannon gần đúng cho 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 độ lệch.
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.
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 các 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ị thì bạn có thể gặp lỗi dữ liệu. Để phát hiện các đối tượng địa lý 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ố":
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ại đó 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 một cách 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ự":
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, các 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:
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 chẳng hạn 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:
- Chọn "Số tiền bị thiếu / không" từ menu thả xuống "Sắp xếp theo".
- Đánh dấu vào hộp kiểm "Đảo ngược thứ tự".
- 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:
Chọn "Độ dài danh sách giá trị" từ menu thả xuống "Biểu đồ để hiển thị" ở bên phải.
Nhìn vào biểu đồ ở bên phải của mỗi hàng đối tượng địa lý. 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:
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 các 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 rằng chúng tuân thủ các yêu cầu của Công cụ ước tính .