Kursus Matematika untuk AI · Pelajaran 14 dari 180

Vektor sebagai Data AI: Bagaimana Fitur Mengubah Dokumen Menjadi Angka

Pelajari cara membaca vektor baris dan kolom, membuat vektor fitur dokumen secara manual dan dengan NumPy, serta menemukan kesalahan bentuk atau urutan fitur.

Bagikan artikel ini

“Model AI menggunakan data. Model AI menggunakan vektor.” (terjemahan) Pembaca melihat sebuah kalimat. Model numerik memerlukan sekumpulan posisi tetap yang berisi angka. Salah satu pengodean sederhana menghitung kata-kata terpilih dan menghasilkan

[2211].\begin{bmatrix} 2\\ 2\\ 1\\ 1 \end{bmatrix}.

Keempat angka itu tidak menjelaskan dirinya sendiri. Angka-angka tersebut baru berguna setelah aturan pengodean menyatakan bahwa posisi 1 menghitung ai, posisi 2 menghitung model, posisi 3 menghitung data, dan posisi 4 menghitung vector. Angka yang tersusun berurutan, bersama makna koordinatnya, membentuk vektor fitur.

Di akhir pelajaran ini, Anda akan dapat membaca vektor baris dan kolom, menafsirkan koordinatnya sebagai fitur, mengodekan dokumen kecil secara manual dan dengan NumPy, serta mendiagnosis kode yang nilainya benar tetapi urutan fitur atau bentuk array-nya salah.

Hasil belajar: Membaca vektor baris dan kolom serta menafsirkan koordinat sebagai fitur.

Pelajaran ini kembali ke Pelajaran 5: Indeks Tensor untuk AI. Di sana, indeks menjawab “posisi yang mana?” Di sini, posisi-posisi tersebut bergerak bersama sebagai satu representasi. Situs pendamping resmi Mathematics for Machine Learning mengembangkan notasi vektor baris dan kolom dalam Bagian 2.2. Dokumen, aturan pengodean, perhitungan, kode, diagram, dan penilaian di bawah ini adalah karya orisinal.

Vektor memerlukan nilai dan makna koordinat

Superskrip T\mathsf{T} berarti transpose, yang mengubah tampilan baris menjadi kolom atau tampilan kolom menjadi baris. Simbol tebal x\boldsymbol{x} menamai seluruh vektor; simbol biasa xjx_j menamai satu koordinat. Jadi,

x=[x1x2x3x4]danxT=[x1x2x3x4]\boldsymbol{x}=\begin{bmatrix}x_1\\x_2\\x_3\\x_4\end{bmatrix} \quad\text{dan}\quad \boldsymbol{x}^{\mathsf{T}}=\begin{bmatrix}x_1&x_2&x_3&x_4\end{bmatrix}

memuat empat nilai koordinat yang sama, tetapi orientasinya berbeda.

Untuk data AI, koordinat biasanya mewakili fitur yang disepakati, bukan slot anonim. Fitur adalah sifat terukur yang diberikan kepada model. Fitur dapat berupa hitungan kata, intensitas piksel, pembacaan suhu, atau sinyal yang dipelajari. Jika fjf_j menamai fitur jj, sebuah encoder ϕ\phi dapat memetakan item dd menjadi

ϕ(d)=[f1(d)f2(d)⋮fn(d)]∈Rn.\phi(d)= \begin{bmatrix} f_1(d)\\ f_2(d)\\ \vdots\\ f_n(d) \end{bmatrix} \in\mathbb{R}^{n}.

Persamaan ini memisahkan dua pekerjaan. Encoder menentukan cara mengukur tiap fitur. Vektor mempertahankan hasil pengukuran dalam urutan tetap. Setiap dokumen harus memakai fitur yang sama pada koordinat yang sama agar model berikutnya dapat membandingkan atau menggabungkan nilai tersebut secara konsisten.

Membangun vektor dokumen koordinat demi koordinat

Kodekan dokumen ini:

AI models use data. AI models use vectors.

Gunakan kosakata berurutan berikut:

(ai,model,data,vector).(\texttt{ai},\texttt{model},\texttt{data},\texttt{vector}).

Untuk contoh yang sengaja kecil ini, aturan normalisasi mengubah teks menjadi huruf kecil, menghapus tanda baca, mengubah models menjadi model, dan mengubah vectors menjadi vector. Aturan ini mengabaikan use karena kata tersebut tidak memiliki koordinat dalam kosakata tetap. Sistem teks nyata memerlukan tokenizer dan kosakata yang terdokumentasi; aturan mainan ini ditampilkan agar setiap hitungan dapat diaudit.

Token yang telah dinormalisasi adalah

ai, model, use, data, ai, model, use, vector

Sekarang hitung satu koordinat pada satu waktu:

x1=count⁡(ai)=2,x2=count⁡(model)=2,x3=count⁡(data)=1,x4=count⁡(vector)=1.\begin{aligned} x_1&=\operatorname{count}(\texttt{ai})=2,\\ x_2&=\operatorname{count}(\texttt{model})=2,\\ x_3&=\operatorname{count}(\texttt{data})=1,\\ x_4&=\operatorname{count}(\texttt{vector})=1. \end{aligned}

Maka,

ϕ(d)=[2211]∈R4.\phi(d)= \begin{bmatrix} 2\\2\\1\\1 \end{bmatrix} \in\mathbb{R}^{4}.
Urutan fitur yang tetap mengubah empat hitungan token bernama menjadi empat koordinat. Panah mempertahankan kontrak antara setiap label dan nilainya.
Alur dokumen menjadi vektor fiturDokumen AI models use data, AI models use vectors dinormalisasi dan dihitung terhadap fitur berurutan ai, model, data, dan vector. Vektor kolom yang dihasilkan berisi 2, 2, 1, dan 1.1 · DokumenAI models use data.AI models usevectors.huruf kecilmodels → modelvectors → vector2 · Fitur berurutan1 · ai22 · model23 · data14 · vector13 · Vektor kolom2211bentuk 4 × 1Nilai bergerak bersama labelnya: koordinat 3 berarti “hitungan data.”
Alternatif semantik: fitur berurutan dan hitungan untuk dokumen
KoordinatFiturHitunganMakna
1ai2Token ai yang telah dinormalisasi muncul dua kali.
2model2Dua kemunculan models menjadi model.
3data1Token data yang telah dinormalisasi muncul sekali.
4vector1Token vectors menjadi vector.

Diagram tersebut membuat kontrak representasi terlihat: setiap hitungan mengikuti label fiturnya menuju koordinat. Kolom itu memiliki tinggi empat entri, sehingga bentuknya 4×14\times1. Kolom tersebut tetap mewakili satu dokumen, bukan empat dokumen.

Mengapa koordinat tetap memungkinkan pembelajaran numerik

Model tidak dapat memberi perilaku yang sama pada koordinat 3 jika koordinat itu berarti data untuk satu dokumen dan vector untuk dokumen lain. Karena itu, peta fitur menetapkan dua hal di seluruh contoh:

  1. jumlah koordinat; dan
  2. fitur yang ditetapkan pada setiap koordinat.

Untuk dua dokumen mana pun dad_a dan dbd_b, nilai pada posisi jj harus merupakan jenis pengukuran yang sama, fjf_j:

ϕ(da)j=fj(da),ϕ(db)j=fj(db).\phi(d_a)_j=f_j(d_a), \qquad \phi(d_b)_j=f_j(d_b).

Inilah mekanisme di balik perangkat lunak vektorisasi teks yang umum. Dokumentasi resmi scikit-learn CountVectorizer menjelaskan kosakata sebagai pemetaan dari istilah ke indeks fitur. Metode transform-nya menggunakan kosakata tersebut untuk membuat array hitungan dokumen-istilah dengan bentuk (n_samples, n_features): satu baris per dokumen dan satu kolom per fitur kosakata.

Vektor hitungan berguna justru karena sifatnya selektif. Vektor ini mempertahankan seberapa sering fitur yang dipilih muncul. Vektor ini membuang urutan kata asli, batas kalimat, dan setiap token yang tidak ada dalam kosakata. Dua dokumen berikut

ai model data
data model ai

keduanya dipetakan ke [1,1,1,0]T[1,1,1,0]^\mathsf{T} dengan pengodean ini. Vektor yang sama berarti hitungan yang dipertahankan sama, bukan prosa atau makna yang sama.

Baris dan kolom adalah bentuk, bukan arah membaca

Vektor abstrak x\boldsymbol{x} berada di R4\mathbb{R}^{4}. Matematika biasanya menampilkan koordinatnya sebagai matriks kolom berukuran 4×14\times1:

[2211]∈R4×1.\begin{bmatrix}2\\2\\1\\1\end{bmatrix}\in\mathbb{R}^{4\times1}.

Mentranspose tampilan kolom itu menghasilkan vektor baris:

[2211]∈R1×4.\begin{bmatrix}2&2&1&1\end{bmatrix}\in\mathbb{R}^{1\times4}.

Bentuk pertama memiliki empat baris dan satu kolom; bentuk kedua memiliki satu baris dan empat kolom. Tidak ada orientasi yang mengubah penetapan koordinat-ke-fitur. Entri pertama tetap milik ai, entri kedua milik model, dan seterusnya.

RepresentasiBentuk tertulisBentukOrientasi
Vektor kolom[2,2,1,1]T[2,2,1,1]^\mathsf{T}4×14\times1empat baris, satu kolom
Vektor baris[2,2,1,1][2,2,1,1]1×41\times4satu baris, empat kolom
Array NumPy 1-Dnp.array([2, 2, 1, 1])(4,)belum memiliki sumbu baris/kolom

Baris terakhir merupakan batas implementasi yang penting. Array NumPy satu dimensi memiliki satu sumbu dengan panjang 4. Array itu bukan array baris atau kolom dua dimensi. Dokumentasi resmi NumPy tentang ndarray mendefinisikan shape sebagai tuple yang memuat ukuran setiap dimensi array, sedangkan ndim menghitung sumbu. Untuk shape == (4,), hanya ada satu sumbu.

NumPy membuat orientasi eksplisit dengan menambahkan sumbu

Contoh yang dapat dieksekusi berikut mencerminkan perhitungan manual:

from collections import Counter

import numpy as np

document = "AI models use data. AI models use vectors."
vocabulary = ("ai", "model", "data", "vector")

raw_tokens = document.lower().replace(".", "").split()
normalization = {"models": "model", "vectors": "vector"}
tokens = [normalization.get(token, token) for token in raw_tokens]
counts = Counter(tokens)

x = np.array([counts[feature] for feature in vocabulary], dtype=np.int64)
column = x.reshape(-1, 1)
row = x.reshape(1, -1)

print("features:", vocabulary)
print("values:", x.tolist())
print("1-D shape:", x.shape)
print("column shape:", column.shape)
print("row shape:", row.shape)
print("x.T shape:", x.T.shape)

Output yang telah diverifikasi adalah:

features: ('ai', 'model', 'data', 'vector')
values: [2, 2, 1, 1]
1-D shape: (4,)
column shape: (4, 1)
row shape: (1, 4)
x.T shape: (4,)

Dokumentasi resmi numpy.reshape menyatakan bahwa reshape yang kompatibel menghasilkan array dengan bentuk baru tanpa mengubah datanya. Di sini, reshape(-1, 1) meminta NumPy menyimpulkan jumlah baris dan membuat satu kolom; reshape(1, -1) meminta satu baris dan menyimpulkan jumlah kolom.

Output terakhir memperlihatkan bug yang umum. Dokumentasi resmi numpy.transpose menetapkan bahwa mentranspose array 1-D menghasilkan view yang tidak berubah. Tidak ada sumbu kedua untuk ditukar. Gunakan x[:, np.newaxis] atau x.reshape(-1, 1) untuk membuat bentuk (4, 1), dan gunakan x[np.newaxis, :] atau x.reshape(1, -1) untuk membuat bentuk (1, 4).

Tiga array yang tampak benar dapat menggambarkan data yang berbeda

Bentuk hanyalah separuh kontrak. Urutan fitur menyediakan separuh lainnya. Misalkan satu pipeline menyatakan

F=(ai,model,data,vector)F=(\texttt{ai},\texttt{model},\texttt{data},\texttt{vector})

dan menyimpan [2,2,1,1]T[2,2,1,1]^\mathsf{T}. Pipeline lain menyatakan

G=(data,vector,ai,model)G=(\texttt{data},\texttt{vector},\texttt{ai},\texttt{model})

tetapi mengirimkan urutan angka yang sama tanpa mengurutkannya ulang. Dalam GG, koordinat pertama menyatakan dua kemunculan data, padahal itu salah untuk dokumen tersebut. Array memiliki panjang dan dtype yang diharapkan, sehingga validasi bentuk saja tidak akan menangkap kesalahan semantik.

Perubahan yang benar dari FF ke GG harus memindahkan setiap nilai bersama labelnya:

urutan fitur1234Fai:2model:2data:1vector:1Gdata:1vector:1ai:2model:2\begin{array}{c|cccc} \text{urutan fitur} & 1 & 2 & 3 & 4\\\hline F & \texttt{ai}:2 & \texttt{model}:2 & \texttt{data}:1 & \texttt{vector}:1\\ G & \texttt{data}:1 & \texttt{vector}:1 & \texttt{ai}:2 & \texttt{model}:2 \end{array}

Jadi vektor dalam urutan GG adalah [1,1,2,2]T[1,1,2,2]^\mathsf{T}.

Dua kasus batas lain memperjelas definisi ini:

  • Jika dokumen tidak memuat satu pun istilah kosakata, dokumen tersebut dipetakan ke vektor nol [0,0,0,0]T[0,0,0,0]^\mathsf{T}. Dimensinya tetap 4; nol adalah nilai koordinat, bukan koordinat yang hilang.
  • Ketika n=1n=1, vektor baris dan vektor kolom sama-sama memiliki bentuk 1×11\times1 setelah transpose. Kasus satu koordinat menyembunyikan perbedaan orientasi yang terlihat, sehingga merupakan contoh debugging bentuk yang buruk.

Representasi baru siap ketika nilai, label fitur, dan bentuk yang diharapkan cocok. Pelajaran 15 akan menjumlahkan vektor komponen demi komponen. Operasi itu masuk akal karena koordinat jj pada kedua masukan mengacu pada jenis sinyal yang sama—invarian yang ditetapkan di sini.

Uji pemahaman Anda

Pertanyaan 1

Misalkan x = [4, 0, −2]ᵀ, dengan fitur berurutan (clicks, purchases, returns). Nyatakan dimensi vektor dan tafsirkan setiap koordinat.

Tampilkan solusi langkah demi langkah

Ada tiga koordinat berurutan, jadi x∈R3\boldsymbol{x}\in\mathbb{R}^{3} dan dimensi vektor adalah 3.

Cocokkan posisi dengan label fitur secara berurutan:

  1. x1=4x_1=4 berarti empat clicks;
  2. x2=0x_2=0 berarti nol purchases; dan
  3. x3=−2x_3=-2 berarti fitur returns bernilai −2-2 menurut pengodean yang dinyatakan.

Nilai ketiga yang negatif mungkin memerlukan konteks domain—mungkin merupakan fitur yang dipusatkan atau perubahan bersih, bukan hitungan mentah—tetapi tidak mengubah dimensi atau urutan koordinat vektor.

Pertanyaan 2

Dengan kosakata berurutan (ai, model, data, vector), kodekan “Data guides a model; data helps AI.” Hitung hanya empat istilah kosakata setelah diubah menjadi huruf kecil dan tanda baca dihapus.

Tampilkan solusi langkah demi langkah

Setelah diubah menjadi huruf kecil dan tanda baca dihapus, token relevan yang telah dinormalisasi adalah

data, model, data, ai

Hitung dalam urutan kosakata, bukan urutan dokumen:

x1=count⁡(ai)=1,x2=count⁡(model)=1,x3=count⁡(data)=2,x4=count⁡(vector)=0.\begin{aligned} x_1&=\operatorname{count}(\texttt{ai})=1,\\ x_2&=\operatorname{count}(\texttt{model})=1,\\ x_3&=\operatorname{count}(\texttt{data})=2,\\ x_4&=\operatorname{count}(\texttt{vector})=0. \end{aligned}

Jadi vektor dokumen adalah x=[1,1,2,0]T\boldsymbol{x}=[1,1,2,0]^\mathsf{T}. Istilah kosakata yang tidak ada menyumbang nilai nol; koordinatnya tetap ada.

Pertanyaan 3

Sebuah vektor [3, 1, 0]ᵀ menggunakan urutan fitur (cat, dog, bird). Layanan kedua mengharapkan (bird, cat, dog). Nilai apa yang harus dikirim, dan mengapa mengirim [3, 1, 0]ᵀ tanpa perubahan itu salah?

Tampilkan solusi langkah demi langkah

Pertama, pasangkan setiap nilai asli dengan labelnya:

cat:3,dog:1,bird:0.\texttt{cat}:3,\qquad \texttt{dog}:1,\qquad \texttt{bird}:0.

Sekarang baca nilai itu dalam urutan layanan kedua:

(bird,cat,dog)⟶[0,3,1]T.(\texttt{bird},\texttt{cat},\texttt{dog}) \longrightarrow [0,3,1]^\mathsf{T}.

Mengirim [3,1,0]T[3,1,0]^\mathsf{T} tanpa perubahan akan menyatakan bird: 3, cat: 1, dan dog: 0. Bentuknya akan lolos, tetapi setiap koordinat membawa makna fitur yang salah.

Pertanyaan 4

Klasifikasikan bentuk (5,), (1, 5), dan (5, 1) sebagai array NumPy 1-D, array baris, atau array kolom. Lalu nyatakan mana yang berdimensi dua.

Tampilkan solusi langkah demi langkah

Hitung entri dalam setiap tuple bentuk:

  • (5,) berisi satu sumbu sepanjang 5, jadi merupakan array NumPy 1-D tanpa orientasi baris atau kolom eksplisit.
  • (1, 5) berisi dua sumbu: satu baris dan lima kolom. Ini adalah array baris.
  • (5, 1) berisi dua sumbu: lima baris dan satu kolom. Ini adalah array kolom.

Dua yang terakhir berdimensi dua karena tuple bentuknya berisi dua ukuran sumbu. Ketiganya menyimpan lima nilai skalar, sehingga jumlah nilai tersimpan saja tidak menentukan orientasi.

Pertanyaan 5

Mengapa x.T gagal mengubah x = np.array([2, 2, 1, 1]) menjadi array kolom? Berikan satu ekspresi yang benar-benar membuat bentuk (4, 1).

Tampilkan solusi langkah demi langkah

Array x memiliki bentuk (4,), yang berarti hanya memiliki satu sumbu. Transpose dapat mengatur ulang sumbu yang sudah ada, tetapi tidak ada sumbu kedua untuk ditukar dengan sumbu pertama. Karena itu, x.T.shape tetap (4,).

Tambahkan sumbu secara eksplisit:

column = x[:, np.newaxis]
print(column.shape)  # (4, 1)

Irisan tersebut memilih keempat nilai pada sumbu yang ada, sedangkan np.newaxis membuat sumbu kedua dengan panjang 1. x.reshape(-1, 1) merupakan konstruksi bentuk yang ekuivalen untuk contoh ini.

Pertanyaan 6

Dua kalimat dipetakan ke vektor hitungan yang sama [1, 1, 1, 0]ᵀ dengan kosakata (ai, model, data, vector). Apa yang dapat Anda simpulkan, dan apa yang tidak dapat disimpulkan?

Tampilkan solusi langkah demi langkah

Kesamaan koordinat memungkinkan kita menyimpulkan bahwa encoder mempertahankan empat hitungan yang sama untuk kedua kalimat:

ai:1,model:1,data:1,vector:0.\texttt{ai}:1,\quad \texttt{model}:1,\quad \texttt{data}:1,\quad \texttt{vector}:0.

Kita tidak dapat menyimpulkan bahwa kalimat asli memakai urutan kata, tata bahasa, kata tambahan, atau makna yang sama. Representasi hitungan membuang sifat-sifat tersebut. Kesamaan vektor terkodekan berarti kesamaan fitur yang dipertahankan, bukan bukti bahwa dokumen sumber identik.

Pertanyaan 7

Sebuah dokumen tidak memuat satu pun dari empat istilah kosakata dan dipetakan ke [0, 0, 0, 0]ᵀ. Apakah vektor kehilangan dimensinya? Jelaskan hasilnya dan satu keterbatasannya.

Tampilkan solusi langkah demi langkah

Tidak. Vektor tersebut tetap memiliki empat koordinat berurutan, sehingga tetap merupakan elemen R4\mathbb{R}^{4}. Setiap koordinat ada dan bernilai nol:

0=[0000].\boldsymbol{0}= \begin{bmatrix}0\\0\\0\\0\end{bmatrix}.

Hasil itu hanya mengatakan bahwa tidak satu pun fitur kosakata yang dipilih muncul menurut aturan encoder. Hasil itu tidak mengatakan bahwa dokumen kosong atau tidak bermakna. Dokumen mungkin berisi banyak kata di luar kosakata, yang sengaja diabaikan oleh representasi ini.

Sumber

  1. Mathematics for Machine Learning companion website
  2. Mathematics for Machine Learning book PDF
  3. NumPy documentation: the N-dimensional array
  4. NumPy documentation: numpy.reshape
  5. NumPy documentation: numpy.transpose
  6. scikit-learn documentation: CountVectorizer