RSVP untuk acara TensorFlow Everywhere lokal Anda hari ini!
Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

Validasi Data TensorFlow: Memeriksa dan menganalisis data Anda

Setelah data Anda berada dalam pipeline TFX, Anda dapat menggunakan komponen TFX untuk menganalisis dan mengubahnya. Anda dapat menggunakan alat ini bahkan sebelum melatih model.

Ada banyak alasan untuk menganalisis dan mengubah data Anda:

  • Untuk menemukan masalah dalam data Anda. Masalah umum meliputi:
    • Data yang hilang, seperti fitur dengan nilai kosong.
    • Label diperlakukan sebagai fitur, sehingga model Anda dapat mengintip jawaban yang benar selama pelatihan.
    • Fitur dengan nilai di luar rentang yang Anda harapkan.
    • Anomali data.
  • Untuk merekayasa set fitur yang lebih efektif. Misalnya, Anda dapat mengidentifikasi:
    • Terutama fitur informatif.
    • Fitur yang berlebihan.
    • Fitur yang sangat bervariasi dalam skala sehingga dapat memperlambat pembelajaran.
    • Fitur dengan sedikit atau tanpa informasi prediksi yang unik.

Alat TFX dapat membantu menemukan bug data, dan membantu dengan rekayasa fitur.

Validasi Data TensorFlow

Gambaran

Validasi Data TensorFlow mengidentifikasi anomali dalam pelatihan dan penyajian data, dan dapat secara otomatis membuat skema dengan memeriksa datanya. Komponen dapat dikonfigurasi untuk mendeteksi berbagai kelas anomali dalam data. Bisa

  1. Lakukan pemeriksaan validitas dengan membandingkan statistik data dengan skema yang menyusun harapan pengguna.
  2. Mendeteksi kemiringan penayangan pelatihan dengan membandingkan contoh dalam pelatihan dan data penayangan.
  3. Mendeteksi penyimpangan data dengan melihat serangkaian data.

Kami mendokumentasikan masing-masing fungsi ini secara independen:

Validasi Contoh Berbasis Skema

Validasi Data TensorFlow mengidentifikasi semua anomali dalam data masukan dengan membandingkan statistik data dengan skema. Skema mengkodifikasi properti yang diharapkan dipenuhi oleh data masukan, seperti tipe data atau nilai kategorikal, dan dapat dimodifikasi atau diganti oleh pengguna.

Fitur Skema Lanjutan

Bagian ini membahas konfigurasi skema lanjutan yang dapat membantu pengaturan khusus.

Fitur Renggang

Mengenkode fitur renggang dalam Contoh biasanya memperkenalkan beberapa Fitur yang diharapkan memiliki valensi yang sama untuk semua Contoh. Misalnya fitur renggang:


WeightedCategories = [('CategoryA', 0.3), ('CategoryX', 0.7)]
akan dikodekan menggunakan Fitur terpisah untuk indeks dan nilai:

WeightedCategoriesIndex = ['CategoryA', 'CategoryX']
WeightedCategoriesValue = [0.3, 0.7]
dengan batasan bahwa valensi fitur indeks dan nilai harus cocok untuk semua Contoh. Batasan ini dapat dibuat eksplisit dalam skema dengan menentukan sparse_feature:

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

Definisi fitur renggang memerlukan satu atau beberapa indeks dan satu fitur nilai yang merujuk ke fitur yang ada dalam skema. Mendefinisikan fitur renggang secara eksplisit memungkinkan TFDV untuk memeriksa apakah valensi semua fitur yang dirujuk cocok.

Beberapa kasus penggunaan memperkenalkan batasan valensi yang serupa di antara Fitur, tetapi tidak selalu mengenkode fitur renggang. Menggunakan fitur renggang seharusnya membebaskan Anda, tetapi tidak ideal.

Lingkungan Skema

Secara default, validasi mengasumsikan bahwa semua Contoh di pipeline mematuhi satu skema. Dalam beberapa kasus, pengenalan sedikit variasi skema diperlukan, misalnya fitur yang digunakan sebagai label diperlukan selama pelatihan (dan harus divalidasi), tetapi hilang selama penayangan. Lingkungan dapat digunakan untuk menyatakan persyaratan tersebut, khususnya default_environment() , in_environment() , not_in_environment() .

Misalnya, anggap fitur bernama 'LABEL' diperlukan untuk pelatihan, tetapi diperkirakan akan hilang dari penayangan. Hal ini dapat diungkapkan dengan:

  • Tentukan dua lingkungan yang berbeda dalam skema: ["SERVING", "TRAINING"] dan kaitkan 'LABEL' hanya dengan lingkungan "TRAINING".
  • Kaitkan data pelatihan dengan lingkungan "TRAINING" dan data penayangan dengan lingkungan "SERVING".
Pembuatan Skema

Skema data masukan ditetapkan sebagai instance dari Skema TensorFlow.

Sebagai ganti membuat skema secara manual dari awal, developer dapat mengandalkan konstruksi skema otomatis TensorFlow Data Validation. Secara khusus, Validasi Data TensorFlow secara otomatis membuat skema awal berdasarkan statistik yang dihitung melalui data pelatihan yang tersedia di pipeline. Pengguna cukup meninjau skema yang dibuat secara otomatis ini, memodifikasinya sesuai kebutuhan, memeriksanya ke dalam sistem kontrol versi, dan memasukkannya secara eksplisit ke dalam pipeline untuk validasi lebih lanjut.

TFDV menyertakan infer_schema() untuk menghasilkan skema secara otomatis. Sebagai contoh:

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

Ini memicu pembuatan skema otomatis berdasarkan aturan berikut:

  • Jika skema telah dibuat secara otomatis, maka skema itu digunakan apa adanya.

  • Jika tidak, TensorFlow Data Validation memeriksa statistik data yang tersedia dan menghitung skema yang sesuai untuk data tersebut.

Catatan: Skema yang dibuat secara otomatis adalah upaya terbaik dan hanya mencoba menyimpulkan properti dasar data. Diharapkan pengguna meninjau dan memodifikasinya sesuai kebutuhan.

Deteksi Kemiringan Penyajian Pelatihan

Gambaran

Validasi Data TensorFlow dapat mendeteksi kemiringan distribusi antara data pelatihan dan penyajian. Distribusi kemiringan terjadi saat distribusi nilai fitur untuk data pelatihan berbeda secara signifikan dari data penyajian. Salah satu penyebab utama kemiringan distribusi adalah menggunakan korpus yang sama sekali berbeda untuk pembuatan data pelatihan guna mengatasi kekurangan data awal dalam korpus yang diinginkan. Alasan lainnya adalah mekanisme pengambilan sampel yang salah yang hanya memilih sub-sampel dari data penayangan untuk dilatih.

Contoh Skenario

Lihat Panduan Memulai Validasi Data TensorFlow untuk informasi tentang cara mengonfigurasi deteksi kemiringan yang melayani pelatihan.

Deteksi Drift

Deteksi drift didukung antara rentang data yang berurutan (yaitu, antara rentang N dan rentang N + 1), seperti di antara hari data pelatihan yang berbeda. Kami menyatakan penyimpangan dalam jarak L-tak terhingga untuk fitur kategoris dan perkiraan divergensi Jensen-Shannon untuk fitur numerik. Anda dapat mengatur jarak ambang sehingga Anda menerima peringatan ketika penyimpangan lebih tinggi dari yang dapat diterima. Menetapkan jarak yang benar biasanya merupakan proses berulang yang membutuhkan pengetahuan dan eksperimen domain.

Lihat Panduan Memulai Validasi Data TensorFlow untuk informasi tentang cara mengonfigurasi deteksi penyimpangan.

Menggunakan Visualisasi untuk Memeriksa Data Anda

Validasi Data TensorFlow menyediakan alat untuk memvisualisasikan distribusi nilai fitur. Dengan memeriksa distribusi ini di notebook Jupyter menggunakan Facets, Anda dapat menemukan masalah umum dengan data.

Statistik fitur

Mengidentifikasi Distribusi yang Mencurigakan

Anda dapat mengidentifikasi bug umum dalam data Anda dengan menggunakan tampilan Ikhtisar Faset untuk mencari distribusi nilai fitur yang mencurigakan.

Data Tidak Seimbang

Fitur tidak seimbang adalah fitur yang didominasi oleh satu nilai. Fitur tidak seimbang dapat terjadi secara alami, tetapi jika fitur selalu memiliki nilai yang sama, Anda mungkin mengalami bug data. Untuk mendeteksi fitur yang tidak seimbang dalam Ikhtisar Faset, pilih "Ketidakseragaman" dari tarik-turun "Urutkan berdasarkan".

Fitur yang paling tidak seimbang akan dicantumkan di bagian atas setiap daftar tipe fitur. Misalnya, tangkapan layar berikut menunjukkan satu fitur yang semuanya nol, dan yang kedua sangat tidak seimbang, di bagian atas daftar "Fitur Numerik":

Visualisasi data yang tidak seimbang

Data Terdistribusi Secara Seragam

Fitur terdistribusi seragam adalah fitur di mana semua kemungkinan nilai muncul dengan frekuensi yang mendekati sama. Seperti data yang tidak seimbang, distribusi ini dapat terjadi secara alami, tetapi juga dapat dihasilkan oleh bug data.

Untuk mendeteksi fitur yang didistribusikan secara seragam dalam Ikhtisar Faset, pilih "Ketidakseragaman" dari tarik-turun "Urutkan menurut" dan centang kotak "Urutan terbalik":

Histogram data seragam

Data string direpresentasikan menggunakan diagram batang jika ada 20 atau lebih sedikit nilai unik, dan sebagai grafik distribusi kumulatif jika ada lebih dari 20 nilai unik. Jadi untuk data string, distribusi seragam dapat muncul sebagai grafik batang datar seperti di atas atau garis lurus seperti di bawah ini:

Grafik garis: distribusi kumulatif data seragam

Bug yang Dapat Menghasilkan Data Terdistribusi Secara Seragam

Berikut beberapa bug umum yang dapat menghasilkan data yang terdistribusi secara seragam:

  • Menggunakan string untuk merepresentasikan tipe data non-string seperti tanggal. Misalnya, Anda akan memiliki banyak nilai unik untuk fitur datetime dengan representasi seperti "2017-03-01-11-45-03". Nilai unik akan didistribusikan secara seragam.

  • Termasuk indeks seperti "nomor baris" sebagai fitur. Di sini sekali lagi Anda memiliki banyak nilai unik.

Data yang Hilang

Untuk memeriksa apakah suatu fitur kehilangan nilai seluruhnya:

  1. Pilih "Jumlah yang hilang / nol" dari drop-down "Urutkan berdasarkan".
  2. Centang kotak "Urutan terbalik".
  3. Lihat kolom "hilang" untuk melihat persentase instance dengan nilai yang hilang untuk suatu fitur.

Bug data juga dapat menyebabkan nilai fitur tidak lengkap. Misalnya, Anda mungkin mengharapkan daftar nilai fitur selalu memiliki tiga elemen dan menemukan bahwa terkadang hanya memiliki satu. Untuk memeriksa nilai yang tidak lengkap atau kasus lain di mana daftar nilai fitur tidak memiliki jumlah elemen yang diharapkan:

  1. Pilih "Panjang daftar nilai" dari menu drop-down "Bagan yang akan ditampilkan" di sebelah kanan.

  2. Lihat diagram di sebelah kanan setiap baris fitur. Bagan menunjukkan rentang panjang daftar nilai untuk fitur tersebut. Misalnya, baris yang disorot pada tangkapan layar di bawah ini menunjukkan fitur yang memiliki beberapa daftar nilai panjang-nol:

Tampilan Ikhtisar Faset dengan fitur dengan daftar nilai fitur panjang-nol

Perbedaan Besar Skala Antar Fitur

Jika fitur Anda sangat bervariasi dalam skala, model mungkin mengalami kesulitan belajar. Misalnya, jika beberapa fitur bervariasi dari 0 hingga 1 dan lainnya bervariasi dari 0 hingga 1.000.000.000, Anda memiliki perbedaan skala yang besar. Bandingkan kolom "maks" dan "min" di seluruh fitur untuk menemukan skala yang sangat bervariasi.

Pertimbangkan untuk menormalkan nilai fitur untuk mengurangi variasi yang luas ini.

Label dengan Label Tidak Valid

Estimator TensorFlow memiliki batasan pada jenis data yang diterima sebagai label. Misalnya, pengklasifikasi biner biasanya hanya bekerja dengan label {0, 1}.

Tinjau nilai label di Ringkasan Faset dan pastikan nilai tersebut sesuai dengan persyaratan Estimator .