🥇Cara Membuat Recommendation Engine Optimization Pada Blog

Panduan Lengkap Recommendation Engine Optimization ( REO ) - Di dunia saat ini, setiap pelanggan dihadapkan pada banyak pilihan. Misalnya, Jika saya mencari buku untuk dibaca tanpa gagasan spesifik tentang apa yang saya inginkan, ada berbagai kemungkinan bagaimana pencarian saya berjalan. Saya mungkin membuang banyak waktu browsing di internet dan menjelajahi berbagai situs berharap untuk mendapatkan emas. Saya mungkin mencari rekomendasi dari orang lain.

Tetapi jika ada situs atau aplikasi yang dapat merekomendasikan saya buku berdasarkan apa yang telah saya baca sebelumnya, itu akan sangat membantu. Alih-alih membuang-buang waktu di berbagai situs, saya bisa login dan voila! 10 buku yang direkomendasikan disesuaikan dengan selera saya.
Cara Membuat Recommendation Engine Optimization ( REO )
Inilah yang dilakukan mesin rekomendasi dan kekuatan mereka sedang dimanfaatkan oleh sebagian besar bisnis saat ini. Dari Amazon hingga Netflix, Google hingga Goodreads, mesin rekomendasi adalah salah satu aplikasi teknik pembelajaran mesin yang paling banyak digunakan.

Pada artikel ini, kita akan membahas berbagai jenis algoritma mesin rekomendasi dan dasar-dasar pembuatannya dengan Python. Kita juga akan melihat matematika di balik cara kerja algoritma ini. Akhirnya, kami akan membuat mesin rekomendasi kami sendiri menggunakan faktorisasi matriks

1. Apa itu mesin rekomendasi ( Recommendation Engine Optimization )?
Hingga baru-baru ini, orang umumnya cenderung membeli produk yang direkomendasikan kepada mereka oleh teman-teman mereka atau orang yang mereka percayai. Ini digunakan untuk menjadi metode pembelian utama ketika ada keraguan tentang produk. Tetapi dengan munculnya era digital, lingkaran itu telah diperluas untuk memasukkan situs online yang menggunakan semacam mesin rekomendasi.

Mesin rekomendasi memfilter data menggunakan algoritma yang berbeda dan merekomendasikan item yang paling relevan kepada pengguna. Pertama-tama ia menangkap perilaku pelanggan di masa lalu dan berdasarkan hal itu, merekomendasikan produk yang mungkin akan dibeli oleh pengguna.

Jika pengguna yang sama sekali baru mengunjungi situs e-commerce, situs itu tidak akan memiliki riwayat masa lalu dari pengguna itu. Jadi, bagaimana situs merekomendasikan produk kepada pengguna dalam skenario seperti itu? Salah satu solusi yang mungkin adalah merekomendasikan produk terlaris, yaitu produk yang banyak diminati. Solusi lain yang mungkin dapat merekomendasikan produk yang akan membawa keuntungan maksimum untuk bisnis.

Jika kami dapat merekomendasikan beberapa item kepada pelanggan berdasarkan kebutuhan dan minat mereka, itu akan menciptakan dampak positif pada pengalaman pengguna dan menyebabkan kunjungan sering. Oleh karena itu, bisnis saat ini sedang membangun mesin rekomendasi yang cerdas dan cerdas dengan mempelajari perilaku masa lalu penggunanya.

Sekarang kami memiliki intuisi mesin rekomendasi, sekarang mari kita lihat bagaimana mereka bekerja.

2. Bagaimana cara kerja mesin rekomendasi?
Sebelum kita menyelami lebih dalam topik ini, pertama-tama kita akan memikirkan bagaimana kami dapat merekomendasikan item kepada pengguna:

Kami dapat merekomendasikan item ke pengguna yang paling populer di antara semua pengguna

Kami dapat membagi pengguna menjadi beberapa segmen berdasarkan preferensi mereka (fitur pengguna) dan merekomendasikan item kepada mereka berdasarkan pada segmen tempat mereka berada.

Kedua metode di atas memiliki kekurangan. Dalam kasus pertama, item yang paling populer akan sama untuk setiap pengguna sehingga semua orang akan melihat rekomendasi yang sama. Sementara dalam kasus kedua, dengan meningkatnya jumlah pengguna, jumlah fitur juga akan meningkat. Jadi mengklasifikasikan pengguna ke berbagai segmen akan menjadi tugas yang sangat sulit.

Masalah utama di sini adalah bahwa kami tidak dapat menyesuaikan rekomendasi berdasarkan minat khusus pengguna. Sepertinya Amazon merekomendasikan Anda membeli laptop hanya karena dibeli oleh mayoritas pembeli. Tapi untungnya, Amazon (atau perusahaan besar lainnya) tidak merekomendasikan produk menggunakan pendekatan yang disebutkan di atas. Mereka menggunakan beberapa metode pribadi yang membantu mereka dalam merekomendasikan produk secara lebih akurat.
3.Membangun mesin rekomendasi menggunakan faktorisasi matriks
Mari kita mendefinisikan fungsi untuk memprediksi peringkat yang diberikan oleh pengguna ke semua film yang tidak diberi peringkat olehnya.
class MF():
    # Initializing the user-movie rating matrix, no. of latent features, alpha and beta.
    def __init__(self, R, K, alpha, beta, iterations):
        self.R = R
        self.num_users, self.num_items = R.shape
        self.K = K
        self.alpha = alpha
        self.beta = beta
        self.iterations = iterations
    # Initializing user-feature and movie-feature matrix
    def train(self):
        self.P = np.random.normal(scale=1./self.K, size=(self.num_users, self.K))
        self.Q = np.random.normal(scale=1./self.K, size=(self.num_items, self.K))
        # Initializing the bias terms
        self.b_u = np.zeros(self.num_users)
        self.b_i = np.zeros(self.num_items)
        self.b = np.mean(self.R[np.where(self.R != 0)])
        # List of training samples
        self.samples = [
        (i, j, self.R[i, j])
        for i in range(self.num_users)
        for j in range(self.num_items)
        if self.R[i, j] > 0
        ]
        # Stochastic gradient descent for given number of iterations
        training_process = []
        for i in range(self.iterations):
        np.random.shuffle(self.samples)
        self.sgd()
        mse = self.mse()
        training_process.append((i, mse))
        if (i+1) % 20 == 0:
            print("Iteration: %d ; error = %.4f" % (i+1, mse))
        return training_process
    # Computing total mean squared error
    def mse(self):
        xs, ys = self.R.nonzero()
        predicted = self.full_matrix()
        error = 0
        for x, y in zip(xs, ys):
            error += pow(self.R[x, y] - predicted[x, y], 2)
        return np.sqrt(error)
    # Stochastic gradient descent to get optimized P and Q matrix
    def sgd(self):
        for i, j, r in self.samples:
            prediction = self.get_rating(i, j)
            e = (r - prediction)
            self.b_u[i] += self.alpha * (e - self.beta * self.b_u[i])
            self.b_i[j] += self.alpha * (e - self.beta * self.b_i[j])
            self.P[i, :] += self.alpha * (e * self.Q[j, :] - self.beta * self.P[i,:])
            self.Q[j, :] += self.alpha * (e * self.P[i, :] - self.beta * self.Q[j,:])
    # Ratings for user i and moive j
    def get_rating(self, i, j):
        prediction = self.b + self.b_u[i] + self.b_i[j] + self.P[i, :].dot(self.Q[j, :].T)
        return prediction
    # Full user-movie rating matrix
    def full_matrix(self):
        return mf.b + mf.b_u[:,np.newaxis] + mf.b_i[np.newaxis:,] + mf.P.dot(mf.Q.T)
Langkah selanjutnyaElasticsearch bukan hanya backend yang sangat kuat untuk rekomendasi, tetapi juga sangat fleksibel! Ada banyak opsi untuk meningkatkan sistem rekomendasi kami sambil menjaga backend elasticsearch. Menang!

Langkah 1:
Kami dapat menggunakan algoritma yang lebih canggih seperti ALS untuk membuat indikator untuk rekomendasi kami dan kami memasukkan indikator ini ke dalam elasticsearch. Ini menyederhanakan penilaian rekomendasi menjadi pencarian sederhana saat kami melakukan pekerjaan berat pada fase pelatihan, mis. menggunakan Spark. Dengan cara ini elasticsearch hanyalah lapisan presentasi performan dari indikator kami yang dihitung sebelumnya untuk rekomendasi yang relevan. Anda dapat menambahkan ini dengan mudah ke katalog produk yang ada sebagai metadata baru.

Langkah 2:
Saat ini kami menggunakan bendera biner dalam array produk yang berarti setiap produk dalam array produk berkontribusi pada skor JLH secara merata. Tanpa banyak perubahan, kami dapat menggunakan beberapa metrik untuk menilai kejadian produk itu sendiri untuk menangkap sinyal yang lebih kaya. Kita bisa menggunakan jumlah klik. Atau bahkan lebih baik kita bisa menggunakan skor klik dengan menormalkan klik dengan rata-rata klik yang diharapkan melalui tingkat lokasi halaman yang menghasilkan klik. Misalnya. dalam daftar hasil pencarian, kami dapat menghitung RKPT yang diharapkan untuk item di posisi pertama, kedua dll. Kami kemudian dapat menghitung perubahan besarnya JLH dari jumlah skor metrik item, bukan jumlah sederhana mereka.

Langkah 3:
Pengguna biasanya menghasilkan serangkaian acara yang relevan untuk rekomendasi, mis. mengklik beberapa item atau menambahkan beberapa produk ke keranjang. Layak menambahkan cache interaksi pengguna ke mesin rekomendasi Anda (1) untuk membuat permintaan pencarian yang lebih kompleks menggunakan serangkaian acara dan (2) membuat delta antara proses batch ETL yang memperbarui indeks elasticsearch Anda dan interaksi pengguna yang terjadi sejak penyegaran terakhir dari mesin rekomendasi Anda.

Menggunakan urutan kejadian untuk menghasilkan rekomendasi dapat membantu dengan (1) menciptakan hasil yang lebih relevan dan (2) meningkatkan populasi latar depan untuk menghasilkan lebih banyak jumlah kejadian bersamaan jika volume lalu lintas rendah atau katalog yang sangat besar. Hanya perlu perubahan kecil ke kueri elasticsearch untuk beralih ke kueri harus:
es.search (
   index = index, doc_type = doc_type,
   body = {
     "permintaan": {
       "bool": {
         "harus": [
           {"term": {"products": "apple"}},
           {"term": {"products": "pony"}},
         ],
         "minimum_should_match": 1,
       }
     },
     "aggs": {
       "rekomendasi": {
         "significant_terms": {
           "bidang": "produk",
           "mengecualikan": ["apel", "pony"],
           "min_doc_count": 10
         }
       }
     }
   }
)
Parameter minimum_should_match memungkinkan Anda untuk mengoptimalkan antara meningkatkan ukuran populasi latar depan atau membuat hasilnya lebih relevan dengan mencocokkan pengguna dengan peningkatan kesamaan.

0 Belum ada Komentar untuk "🥇Cara Membuat Recommendation Engine Optimization Pada Blog"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel