Kursus Matematika untuk AI · Pelajaran 4 dari 180

Notasi Himpunan untuk Dataset AI: Keanggotaan, Pembagian, dan Kebocoran

Pelajari himpunan, keanggotaan, gabungan, irisan, dan partisi dengan menemukan serta memperbaiki tumpang tindih dalam pembagian pelatihan, validasi, dan pengujian AI.

Bagikan artikel ini

Misalkan sebuah pengklasifikasi gambar mencetak 96% pada data validasinya. Kemudian seseorang menyadari bahwa img-04 digunakan untuk pelatihan dan validasi. Skor itu mungkin tampak presisi, tetapi salah satu contohnya tidak lagi benar-benar belum pernah dilihat.

Himpunan memberi kita cara ringkas untuk menyatakan dan menguji kegagalan tersebut. Himpunan mencatat objek mana yang termasuk dalam sebuah koleksi. Dari sana, irisan menyingkap tumpang tindih, gabungan memeriksa cakupan, dan partisi menjelaskan penempatan bersih setiap contoh ke tepat satu pembagian dataset.

Di akhir pelajaran ini, Anda akan mampu membaca notasi keanggotaan dan pembentuk-himpunan, menghitung operasi himpunan umum, dan mengimplementasikan audit awal untuk ID pelatihan, validasi, dan pengujian. Ini melanjutkan sisi data dari gambaran variabel, model, dan pembelajaran yang diperkenalkan di Pelajaran 1.

Keanggotaan mengubah koleksi menjadi klaim ya-atau-tidak

Himpunan adalah koleksi yang keanggotaannya tidak ambigu. Jika DD adalah himpunan semua ID contoh dalam dataset kecil, kita dapat menulis

D={img-01,img-02,img-03,img-04}.D=\{\text{img-01},\text{img-02},\text{img-03},\text{img-04}\}.

Kurung kurawal berarti “himpunan yang berisi elemen-elemen ini”. Pernyataan

img-02D\text{img-02}\in D

dibaca “img-02 adalah elemen DD”. Simbol \notin menyangkal klaim itu, sehingga img-09D\text{img-09}\notin D.

Jumlah elemen berbeda dalam himpunan berhingga disebut kardinalitas, ditulis D|D|. Pada contoh di atas, D=4|D|=4.

Notasi pembentuk-himpunan menjelaskan aturan, bukan daftar panjang

Mencantumkan setiap elemen menjadi tidak praktis untuk dataset nyata. Notasi pembentuk-himpunan mendefinisikan keanggotaan melalui kondisi:

Dcat={xD:label(x)=cat}.D_{\text{cat}} = \{x\in D : \operatorname{label}(x)=\text{cat}\}.

Bacalah dari kiri ke kanan: “DcatD_{\text{cat}} adalah himpunan contoh xx di DD sedemikian sehingga label xx adalah cat.” Titik dua berarti “sedemikian sehingga”. Garis vertikal | juga umum digunakan pada posisi yang sama.

Kondisi setelah titik dua bertindak seperti filter. Untuk

D={img-01,img-02,img-03,img-04},D=\{\text{img-01},\text{img-02},\text{img-03},\text{img-04}\},

jika img-01 dan img-04 memiliki label cat, maka

Dcat={img-01,img-04}.D_{\text{cat}}=\{\text{img-01},\text{img-04}\}.

Notasi ini memisahkan semesta yang dipertimbangkan—di sini DD—dari aturan keanggotaan. Tanpa xDx\in D, “semua gambar kucing” dapat berarti setiap gambar kucing yang ada, bukan hanya contoh yang tersedia untuk proyek ini.

Tiga operasi mengaudit pembagian dataset

Misalkan TT, VV, dan EE menyatakan himpunan ID pelatihan, validasi, dan pengujian. Tiga operasi menjawab pertanyaan rekayasa yang berbeda.

OperasiNotasiPertanyaan dataset
IrisanTVT\cap VID mana yang muncul di kedua himpunan?
GabunganTVT\cup VID berbeda mana yang muncul di setidaknya satu himpunan?
SelisihTVT\setminus VID pelatihan mana yang tidak ada dalam validasi?

Himpunan kosong, ditulis \varnothing, tidak berisi elemen. Karena itu, TV=T\cap V=\varnothing menyatakan bahwa pelatihan dan validasi tidak berbagi ID. Himpunan seperti itu disebut saling lepas.

Pembagian yang bersih adalah partisi

Misalkan dataset lengkap adalah DD. Set pelatihan, validasi, dan pengujian membentuk partisi dari DD jika dua syarat terpenuhi.

Pertama, gabungannya mencakup seluruh dataset:

TVE=D.T\cup V\cup E=D.

Kedua, setiap pasangan saling lepas:

TV=,TE=,VE=.\begin{aligned} T\cap V &= \varnothing,\\ T\cap E &= \varnothing,\\ V\cap E &= \varnothing. \end{aligned}

Cakupan mencegah contoh menghilang. Saling lepas berpasangan mencegah contoh menempati dua pembagian. Bersama-sama, keduanya menyatakan bahwa setiap elemen DD termasuk tepat dalam satu bagian.

Lab partisi dataset. Setiap baris adalah satu ID contoh yang stabil. Hilangkan semua tumpang tindih sambil memastikan ketujuh ID tercakup tepat satu kali.
Tetapkan contoh ke set pelatihan, validasi, dan pengujian
ContohPelatihanValidasiPengujian
img-01kucing tabby
img-02anjing golden retriever
img-03bus kota
img-04sepeda merah
img-05burung gereja
img-06perahu layar
img-07pohon ek

Ini belum merupakan partisi Perbaiki ID yang tumpang tindih atau belum tercakup.

Dtrain
{img-01, img-02, img-03, img-04}
Dvalidation
{img-04, img-05}
Dtest
{img-06, img-07}

Tumpang tindih: {img-04}

Belum tercakup:

Keadaan awal mencakup ketujuh ID, tetapi gagal dalam uji partisi karena img-04 termasuk dalam TT dan VV. Hapus salah satu dari dua keanggotaan itu untuk menghasilkan partisi valid. Lalu coba biarkan satu ID tidak dicentang di mana pun: tumpang tindih hilang, tetapi syarat cakupan gagal.

Set Python mencerminkan audit ini

Dokumentasi resmi Python mendefinisikan tipe set sebagai koleksi tak berurutan berisi objek hashable yang berbeda. Tipe ini mendukung operasi gabungan, irisan, selisih, keanggotaan, dan saling lepas yang sama seperti di atas.

all_ids = {f"img-{i:02d}" for i in range(1, 8)}
train_ids = {"img-01", "img-02", "img-03", "img-04"}
validation_ids = {"img-04", "img-05"}
test_ids = {"img-06", "img-07"}

overlap = (
    (train_ids & validation_ids)
    | (train_ids & test_ids)
    | (validation_ids & test_ids)
)
covered = train_ids | validation_ids | test_ids
missing = all_ids - covered

is_partition = not overlap and not missing and covered == all_ids

print(sorted(overlap))
print(sorted(missing))
print(is_partition)

Output yang telah diverifikasi adalah:

['img-04']
[]
False

Operator & menghitung irisan, | menghitung gabungan, dan - menghitung selisih. not overlap hanya benar ketika himpunan tumpang tindih kosong.

Untuk pemeriksaan yang dapat digunakan kembali, nyatakan kondisinya secara eksplisit:

def is_partition(universe, *parts):
    covered = set().union(*parts)
    total_memberships = sum(len(part) for part in parts)
    no_overlap = total_memberships == len(covered)
    return no_overlap and covered == universe

Jika satu ID muncul di dua bagian, jumlah ukuran terpisah melebihi ukuran gabungannya. Jika satu ID hilang, gabungannya berbeda dari semesta.

ID yang saling lepas diperlukan, tetapi belum cukup untuk keamanan dari kebocoran

Tumpang tindih di awal adalah bentuk kebocoran data: informasi dari luar batas pelatihan memengaruhi pembangunan atau evaluasi model. Panduan kebocoran Scikit-learn menjelaskan bahwa kebocoran dapat membuat evaluasi tampak terlalu optimistis dan merekomendasikan pemisahan data sebelum menyesuaikan langkah prapemrosesan.

Irisan ID kosong hanya menangkap penggunaan ulang pengenal yang persis sama. Itu tidak membuktikan bahwa set evaluasi benar-benar independen. Dua ID berbeda dapat menunjuk salinan foto yang diubah ukurannya. Frame dari satu video dapat dibagi antara pelatihan dan validasi. Rekaman pasien, pelanggan, atau periode waktu mendatang yang sama dapat membawa informasi bersama meskipun ID barisnya berbeda.

Ada batas lain antara matematika dan implementasi: set Python tidak mempertahankan posisi urutan dan membuang nilai duplikat. Simpan daftar sampel berurutan untuk pelatihan. Turunkan himpunan ID stabil untuk pemeriksaan keanggotaan.

Pelajaran 5 akan menambahkan indeks dan subskrip, sehingga kita dapat membedakan identitas contoh dari posisinya dalam batch atau tensor. Pembedaan itu lebih mudah dinyatakan setelah dataset memiliki batas keanggotaan yang jelas.

Uji pemahaman

Pertanyaan 1

Misalkan D = {a, b, c}. Tentukan apakah b ∈ D dan apakah d ∉ D.

Tampilkan solusi langkah demi langkah

Periksa elemen yang tercantum dalam DD.

  • bb muncul di dalam kurung kurawal, jadi bDb\in D benar.
  • dd tidak muncul, jadi dDd\notin D benar.

Keanggotaan hanya menanyakan apakah elemen termasuk dalam himpunan. Posisinya dalam daftar tertulis tidak relevan.

Pertanyaan 2

Untuk D = {1, 2, 3, 4, 5}, evaluasikan E = {x ∈ D : x genap}.

Tampilkan solusi langkah demi langkah

Uji setiap elemen DD terhadap kondisi “xx genap”:

1tidak,2ya,3tidak,4ya,5tidak.\begin{aligned} 1&\mapsto\text{tidak}, & 2&\mapsto\text{ya},\\ 3&\mapsto\text{tidak}, & 4&\mapsto\text{ya},\\ 5&\mapsto\text{tidak}. && \end{aligned}

Pertahankan hanya elemen yang memenuhi aturan:

E={2,4}.E=\{2,4\}.

Kondisi tersebut memfilter semesta DD yang dinyatakan; kondisi itu tidak menambahkan bilangan genap lain seperti 6.

Pertanyaan 3

Misalkan T = {a, b, c, d} dan V = {d, e}. Temukan T ∩ V, T ∪ V, dan |T ∪ V|.

Tampilkan solusi langkah demi langkah

Irisan berisi elemen yang ada di kedua himpunan. Hanya dd yang memenuhi:

TV={d}.T\cap V=\{d\}.

Gabungan berisi setiap elemen berbeda yang ada di salah satu himpunan:

TV={a,b,c,d,e}.T\cup V=\{a,b,c,d,e\}.

Karena itu TV=5|T\cup V|=5. Hasil yang sama mengikuti dari persamaan berikut:

T+VTV=4+21=5.|T|+|V|-|T\cap V|=4+2-1=5.

Pengurangan menghapus hitungan kedua untuk dd.

Pertanyaan 4

Dataset D = {1, 2, 3, 4} dibagi menjadi T = {1, 2}, V = {3}, dan E = {4}. Buktikan bahwa ketiga himpunan itu membentuk partisi.

Tampilkan solusi langkah demi langkah

Periksa cakupan terlebih dahulu:

TVE={1,2}{3}{4}=D.T\cup V\cup E=\{1,2\}\cup\{3\}\cup\{4\}=D.

Sekarang periksa setiap pasangan:

TV=,TE=,VE=.\begin{aligned} T\cap V &= \varnothing,\\ T\cap E &= \varnothing,\\ V\cap E &= \varnothing. \end{aligned}

Gabungan mencakup setiap elemen DD, dan tidak ada elemen yang muncul dalam dua bagian. Kedua syarat partisi terpenuhi.

Pertanyaan 5

Audit ID pelatihan/validasi melaporkan T ∩ V = ∅. Mengapa itu tidak membuktikan tidak adanya semua kebocoran data?

Tampilkan solusi langkah demi langkah

Persamaan tersebut hanya membuktikan bahwa tidak ada elemen persis yang diaudit berada di kedua himpunan. Jika elemennya adalah ID baris, dua baris berbeda masih dapat berisi salinan gambar yang sama, frame dari video yang sama, atau catatan orang yang sama.

Batas penalarannya adalah:

TIDVID=⇏semua sumber informasisaling independen.\begin{aligned} T_{\text{ID}}\cap V_{\text{ID}} &= \varnothing\\ &\not\Rightarrow \substack{\text{semua sumber informasi}\\\text{saling independen}.} \end{aligned}

Audit unit pengelompokan yang sesuai dengan risiko kebocoran—misalnya ID pasien atau ID video sumber—dan tambahkan pemeriksaan kemiripan ketika ID berbeda dapat menyimpan konten yang hampir duplikat.

Pertanyaan 6

Debug pemeriksaan partisi ini: return not (train & validation) and not (train & test). Kondisi apa yang hilang?

Tampilkan solusi langkah demi langkah

Kode tersebut memeriksa dua irisan, tetapi mengabaikan pasangan validasi/pengujian serta cakupan semesta.

Pemeriksaan tiga arah yang lengkap memerlukan:

no_overlap = not (
    (train & validation)
    or (train & test)
    or (validation & test)
)
covered = (train | validation | test) == all_ids
return no_overlap and covered

Kondisi pertama menjamin ketiga pasangan saling lepas. Kondisi kedua menjamin tidak ada ID dataset yang tidak ditugaskan. Partisi membutuhkan keduanya.

Sumber

  1. Mathematics for Machine Learning companion website
  2. Mathematics for Machine Learning book PDF
  3. Python documentation: set and frozenset types
  4. Scikit-learn documentation: data leakage