Gekissimo.net - Opi ansaitsemaan rahaa webilläsi Internetissä!

Kuinka rakentaa suositusjärjestelmä TensorFlow Rankingin avulla?

Seuraava artikkeli auttaa sinua: Kuinka rakentaa suositusjärjestelmä TensorFlow Rankingin avulla?

Koneoppimisen ranking on tapa rakentaa skaalautuvia tiedonhakujärjestelmiä varsinkin kun tehtävänä on selvittää samanlaiset kohteet tietylle syöttöarvolle. Suositusjärjestelmät myös etsivät ja esittävät samanlaisia ​​kohteita useiden ominaisuuksien perusteella. TensorFlow Ranking on Python-kirjasto, joka auttaa rakentamaan oppimista ja luomaan koneoppimismalleja. Tässä artikkelissa keskustelemme siitä, kuinka voimme käyttää TensorFlow-luokitusta oppimisjärjestykseen perustuvan suositusjärjestelmän rakentamiseen. Tämä esittely on saanut inspiraationsa TensorFlow-opetusohjelmista TensorFlow Rankingista. Tärkeimmät artikkelissa käsiteltävät kohdat on lueteltu alla.

Sisällysluettelo

  1. Mikä on TensorFlow Ranking
  2. Rakennussuositusjärjestelmä
    1. Tietojen tuonti ja esikäsittely
    2. Määrittelevä malli
    3. Mallin kokoaminen
    4. Sopiva malli
    5. Ennusteen luominen

Mikä on TensorFlow Ranking?

TensorFlow Ranking on TensorFlow’n toteuttama toteutus, joka auttaa meitä luomaan LTR-malleja. LTR-mallit (Learn to Rank) ovat malleja, jotka auttavat meitä luomaan luokitusmalleja mille tahansa tiedonhakujärjestelmälle. LTR-mallinnuksessa käytämme harjoitustietoja tuoteluettelon kanssa ja nämä tuotteet on yhdistetty joihinkin osatilauksiin. Osittainen järjestyksen esitys voi olla numeerinen pistemäärä tai binääriarvio.

Tämän tyyppisen mallin päätarkoitus on ennustaa koulutusdataa muistuttavien uusien kohteiden sijoitus. TensorFlow-luokituksen avulla voimme tuottaa tällaisia ​​malleja. Näitä malleja voidaan käyttää myös erilaisissa tehtävissä, kuten yhteistyösuodatuksessa, tunneanalyysissä ja personoidussa mainonnassa. Tällaisten mallien mahdollinen arkkitehtuuri voidaan selittää seuraavalla kuvalla.

Kuvan lähde

Tämä toteutus tarjoaa myös erilaisia ​​moduuleja nopeuttamaan LTR-mallien rakentamista, jolloin nämä moduulit toimivat taustalla Keras API:lla. Koska LTR-malleilla on sovelluksensa suositusjärjestelmien luomisessa. Tässä artikkelissa aiomme käyttää tensorivirtausluokitusta suositusjärjestelmän tekemiseen. Ennen toimenpiteen aloittamista meidän on asennettava tämä toteutus, joka voidaan tehdä käyttämällä seuraavia koodirivejä.

!pip install -q tensorflow-ranking

Asennuksen jälkeen olemme valmiita ottamaan sen käyttöön työssämme.

Rakennussuositusjärjestelmä

Tässä artikkelissa aiomme tehdä suositusjärjestelmän TensorFlow-sijoituspakettien avulla, jotta voimme hyödyntää mallia elokuvien luokittelussa ja suositella niitä sitten käyttäjälle.

🔥 Empfohlen:  Apple kieltää työntekijöitä käyttämästä ChatGPT:tä – tässä syy

Tietojen tuonti ja esikäsittely

Tässä artikkelissa aiomme käyttää movielens-tietojoukkoa suositusjärjestelmien tekemiseen, joita voidaan kutsua tensorflow_dataset-moduulista.

tuo tensorflow_datasets muodossa tfds ratings_data = tfds.load(‘movielens/100k-ratings’, split=”train”) fetures_data = tfds.load(‘movielens/100k-movies’, split=”train”)

Lähtö:

Ominaisuuksien valitseminen luokitustiedoista.

arviot_tiedot = arviot_data.map(lambda x: { “elokuvan_nimi”: x[“movie_title”]”user_id”: x[“user_id”]”user_rating”: x[“user_rating”]
})

Muunnetaan iser_ids ja movie_title kokonaislukuindekseiksi.

tuo tensorflow tf-muodossa osoitteesta tensorflow.keras tuo kerrokset feature_data = fetures_data.map(lambda x: x[“movie_title”]) käyttäjät = ratings_data.map(lambda x: x[“user_id”]) user_ids_vocabulary = layers.experimental.preprocessing.StringLookup( mask_token=Ei mitään) user_ids_vocabulary.adapt(users.batch(1000)) movie_titles_vocabulary = layers.experimental.preprocessing.StringLookup. erä (1000) )

Ryhmittele käyttäjätunnuksen mukaan.

key_func = lambda x: user_ids_vocabulary(x[“user_id”]) reduktorin_toiminto = lambda-avain, tietojoukko: dataset.batch(100) train = ratings_data.group_by_window(key_func=key_func, Reduction_func=reduce_func, window_size=100)

Täällä voimme tarkistaa tietojemme muodon.

print(train) for x in train.take(1): for key, arvo x.items(): print(f”Shape of {key}: {value.shape}”) print(f”Esimerkkiarvot { avain}: {arvo[:5].numpy()}”) print()

Lähtö:

Luodaan joukko tarroja ja ominaisuuksia

kirjoittamalla import Dict, Tuple def _features_and_labels( x: Dict[str, tf.Tensor]) -> Tuple[Dict[str, tf.Tensor]tf.Tensor]: labels = x.pop(“user_rating”) return x, labels train = train.map(_features_and_labels) train = train.apply( tf.data.experimental.dense_to_ragged_batch(batch_size=32))

Täällä yllä olevissa koodeissa meillä on käyttäjätunnusten ja elokuvien nimikkeiden tensorit muotojonossa [32, none]. Määritellään malli.

Määrittelevä malli

from tensorflow.keras import Malliluokka RankingModel(Malli): def __init__(self, user_vocab, movie_vocab): super().__init__() self.user_vocab = user_vocab self.movie_vocab = movie_vocab self.user_embed = layers.Embedding_embed. (), 64) self.movie_embed = kerrokset. Embedding(movie_vocab.vocabulary_size(), 64) def call(self, Features: Dict[str, tf.Tensor]) -> tf.Tensor: embeddings_user= self.user_embed(self.user_vocab(features[“user_id”])) embeddings_movie = self.movie_embed( self.movie_vocab(features[“movie_title”])) return tf.reduce_sum(embeddings_user * embeddings_movie, axis=2)

Tässä yllä olevissa koodeissa olemme määrittäneet luokan, jossa määritimme funktion, joka asettaa käyttäjän ja elokuvan sanaston ja upotukset, ja kutsufunktion, joka määrittää, kuinka sijoitus lasketaan. Lopputuloksena meillä on pistetuotteet käyttäjien upottamista ja elokuvien upotuksia.

Mallin kokoaminen

tuonti tensorflow_ranking as tfr from tensorflow.keras tuonti optimoijien malli = RankingModel(user_ids_vocabulary, movie_titles_vocabulary) optimoija = optimoijat.Adagrad(0.5) loss = tfr.keras.losses.get( loss=tfr.keras.losses.RankingLgedossMAX, ragsso Tosi) eval_metrics = [
tfr.keras.metrics.get(key=”ndcg”, name=”metric/ndcg”, ragged=True),
tfr.keras.metrics.get(key=”mrr”, name=”metric/mrr”, ragged=True)
]
model.compile(optimizer=optimizer, loss=loss, metrics=eval_metrics

🔥 Empfohlen:  Datatieteen rekrytointiprosessi Yulussa

Yllä olevassa olemme käyttäneet sijoitushäviötä mallin koulutuksessa ja sijoitusmittauksia mallin arvioinnissa TensorFlow-rankingpaketista. Myös sijoitusmittareista määritimme normalisoidun diskontatun kumulatiivisen vahvistuksen ja keskimääräisen vastavuoroisen sijoituksen.

Mallin sovitus

historia = malli.fit(juna, aikakaudet=9)

Lähtö:

Yllä olevassa olemme kouluttaneet koottua malliamme tiedoilla 9 aikakaudella. Katsotaanpa mallin historiaa

historia.historia

Historiassa voimme nähdä, että mallin menetys on niin suuri, koska käytämme luokitteluongelmissa ranking-kohtaista softmax-häviötä, joka eroaa softmax-häviöstä. Tämä menetys nostaa listan kaikki oleelliset kohteet, joilla on paremmat mahdollisuudet kuin merkityksettömillä kohteilla.

Ennusteen luominen

elokuvan_nimikkeille ominaisuudessa_data.batch(2000): break inputs = { “user_id”: tf.expand_dims(tf.repeat(“26”, repeats=movie_titles.shape[0]), akseli=0), “elokuvan_nimi”: tf.expand_dims(movie_titles, axis=0) } scores = malli(syötteet) titles = tfr.utils.sort_by_scores(scores,
[tf.expand_dims(movie_titles, axis=0)])[0]
print(f”10 suosituinta suositusta käyttäjälle 26: {titles[0, :10]}”)

Lähtö:

Tässä yllä olevissa koodeissa olemme luoneet luettelon käyttäjistä ja elokuvista, joista olemme luoneet syötteen käyttäjänumerolla 26. Syöte- ja pistemäärämallin käyttäminen on suositellut 10 elokuvan nimeä käyttäjälle 26.

Viimeiset sanat

Tässä artikkelissa olemme keskustelleet TensorFlow-luokittelusta, joka on TensorFlow’n toteutus mallinnuksen luokittelun oppimiseen. Tämän moduulin avulla olemme luoneet suositusjärjestelmän movielens-tietojoukolle.

Viitteet