Bergabunglah dengan kami di DevFest untuk Ukraina 14-15 Juni Daftar Online sekarang

Validasi Data TensorFlow: Memeriksa dan menganalisis data Anda

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

Ada banyak alasan untuk menganalisis dan mengubah data Anda:

  • Untuk menemukan masalah dalam data Anda. Masalah umum meliputi:
    • Data tidak ada, seperti fitur dengan nilai kosong.
    • Label diperlakukan sebagai fitur, sehingga model Anda dapat melihat jawaban yang benar selama pelatihan.
    • Fitur dengan nilai di luar rentang yang Anda harapkan.
    • Anomali data.
    • Model transfer learn memiliki preprocessing yang tidak sesuai dengan data training.
  • 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 prediktif yang unik.

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

Validasi Data TensorFlow

Ringkasan

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

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

Kami mendokumentasikan masing-masing fungsi ini secara independen:

Validasi Contoh Berbasis Skema

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

Validasi Data Tensorflow biasanya dipanggil beberapa kali dalam konteks pipeline TFX: (i) untuk setiap pemisahan yang diperoleh dari ExampleGen, (ii) untuk semua data pra-transformasi yang digunakan oleh Transform dan (iii) untuk semua data pasca-transformasi yang dihasilkan oleh Mengubah. Ketika dipanggil dalam konteks Transform (ii-iii), pilihan statistik dan kendala berbasis skema dapat diatur dengan mendefinisikan stats_options_updater_fn . Ini sangat berguna ketika memvalidasi data tidak terstruktur (misalnya fitur teks). Lihat kode pengguna untuk contoh.

Fitur Skema Lanjutan

Bagian ini mencakup konfigurasi skema lebih lanjut yang dapat membantu dengan penyiapan khusus.

Fitur Jarang

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


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 pembatasan bahwa valensi fitur indeks dan nilai harus sesuai untuk semua Contoh. Pembatasan ini dapat dibuat eksplisit dalam skema dengan mendefinisikan sparse_feature:

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

Definisi fitur sparse membutuhkan satu atau lebih indeks dan satu fitur nilai yang mengacu pada fitur yang ada dalam skema. Mendefinisikan fitur sparse secara eksplisit memungkinkan TFDV untuk memeriksa bahwa valensi dari semua fitur yang dirujuk cocok.

Beberapa kasus penggunaan memperkenalkan pembatasan valensi serupa antara Fitur, tetapi tidak selalu mengkodekan fitur yang jarang. Menggunakan fitur jarang harus membuka blokir Anda, tetapi tidak ideal.

Lingkungan Skema

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

Misalnya, anggaplah fitur bernama 'LABEL' diperlukan untuk pelatihan, tetapi diperkirakan tidak akan ditayangkan. Hal ini dapat diungkapkan dengan:

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

Input data skema ditetapkan sebagai turunan dari TensorFlow Skema .

Daripada 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 mendorongnya secara eksplisit ke dalam pipeline untuk validasi lebih lanjut.

TFDV termasuk infer_schema() untuk menghasilkan skema 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 tersebut digunakan apa adanya.

  • Jika tidak, Validasi Data TensorFlow 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

Ringkasan

Validasi Data TensorFlow dapat mendeteksi kecondongan distribusi antara data pelatihan dan penyajian. Kemiringan distribusi terjadi ketika distribusi nilai fitur untuk data pelatihan berbeda secara signifikan dari penyajian data. Salah satu penyebab utama kecondongan distribusi adalah menggunakan korpus yang sama sekali berbeda untuk pembuatan data pelatihan guna mengatasi kekurangan data awal dalam korpus yang diinginkan. Alasan lain adalah mekanisme pengambilan sampel yang salah yang hanya memilih subsampel dari data penyajian untuk dilatih.

Contoh Skenario

Lihat Panduan TensorFlow Validasi Data Memulai untuk informasi tentang konfigurasi deteksi miring pelatihan-melayani.

Deteksi Drift

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

Lihat Panduan TensorFlow Validasi Data Memulai untuk informasi tentang konfigurasi deteksi drift.

Menggunakan Visualisasi untuk Memeriksa Data Anda

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

Statistik fitur

Mengidentifikasi Distribusi Mencurigakan

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

Data Tidak Seimbang

Fitur tidak seimbang adalah fitur yang satu nilai mendominasi. Fitur yang tidak seimbang dapat terjadi secara alami, tetapi jika fitur selalu memiliki nilai yang sama, Anda mungkin memiliki bug data. Untuk mendeteksi fitur yang tidak seimbang dalam Tinjauan Faset, pilih "Non-uniformity" dari menu tarik-turun "Urutkan menurut".

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 fitur kedua yang sangat tidak seimbang, di bagian atas daftar "Fitur Numerik":

Visualisasi data yang tidak seimbang

Data Terdistribusi Secara Seragam

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

Untuk mendeteksi fitur yang terdistribusi secara seragam dalam Tinjauan Faset, pilih "Non- uniformity" dari dropdown "Sort by" dan centang kotak "Reverse order":

Histogram data seragam

Data string direpresentasikan menggunakan diagram batang jika ada 20 nilai unik atau kurang, 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 yang Terdistribusi Secara Seragam

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

  • Menggunakan string untuk mewakili 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 Hilang

Untuk memeriksa apakah suatu fitur tidak memiliki nilai seluruhnya:

  1. Pilih "Jumlah yang hilang/nol" dari tarik-turun "Urutkan menurut".
  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 yang tidak lengkap. Misalnya, Anda mungkin mengharapkan daftar nilai fitur untuk 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 tarik-turun "Bagan untuk ditampilkan" di sebelah kanan.

  2. Lihat bagan 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 Tinjauan Faset dengan fitur dengan daftar nilai fitur panjang nol

Perbedaan Besar dalam Skala Antara Fitur

Jika fitur Anda sangat bervariasi dalam skala, maka model tersebut mungkin mengalami kesulitan belajar. Misalnya, jika beberapa fitur bervariasi dari 0 hingga 1 dan fitur 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

Penaksir TensorFlow memiliki batasan pada jenis data yang mereka terima sebagai label. Misalnya, pengklasifikasi biner biasanya hanya berfungsi dengan label {0, 1}.

Tinjau nilai label di Ikhtisar Facets dan pastikan mereka sesuai dengan persyaratan estimator .