Környezet és műveletek
Fontos
2023. szeptember 20-tól nem hozhat létre új Personalizer-erőforrásokat. A Personalizer szolgáltatás 2026. október 1-jén megszűnik.
A Personalizer úgy működik, hogy megtanulja, mit kell megjelenítenie az alkalmazásnak a felhasználók számára egy adott környezetben. A környezet és a műveletek a Két legfontosabb információ, amelyet átad a Personalizernek. A környezet az aktuális felhasználóval vagy a rendszer állapotával kapcsolatos információkat jelöli, a műveletek pedig a választható lehetőségek.
Környezet
A környezet információi az egyes alkalmazásoktól és használati esetektől függenek, de általában tartalmazhatnak olyan információkat, mint például:
- A felhasználó demográfiai és profiladatai.
- HTTP-fejlécekből, például felhasználói ügynökből kinyert vagy HTTP-információkból, például ip-címeken alapuló fordított földrajzi keresésekből kinyert információk.
- Információk az aktuális időpontról, például a hét napjáról, hétvégéről vagy nem, reggelről vagy délutánról, ünnepi szezonról vagy nem, stb.
- Mobilalkalmazásokból kinyert információk, például hely, mozgás vagy akkumulátor töltöttségi szint.
- A felhasználók viselkedésének korábbi összesítései – például azok a filmes műfajok, amelyeket a felhasználó a legjobban megtekintett.
- A rendszer állapotával kapcsolatos információk.
Az alkalmazás feladata a környezettel kapcsolatos információk betöltése a megfelelő adatbázisokból, érzékelőkből és rendszerekből. Ha a környezeti adatok nem változnak, hozzáadhat logikát az alkalmazásban az információk gyorsítótárazásához, mielőtt elküldené azokat a Rank API-nak.
Műveletek
A műveletek a lehetőségek listáját jelölik.
Rangsorolási műveletek esetén ne küldjön 50-nél több műveletet. Lehet, hogy minden alkalommal ugyanaz az 50 művelet, vagy változhatnak. Ha például egy e-kereskedelmi alkalmazás 10 000 elemből álló termékkatalógusával rendelkezik, javaslatot vagy szűrőmotort használhat annak meghatározására, hogy melyik 40-et szeretné az ügyfél, és a Personalizer használatával keresse meg azt, amelyik a jelenlegi környezetben a legjobb jutalmat hozza létre.
Példák műveletekre
A Rank API-nak küldött műveletek attól függenek, hogy mit próbál személyre szabni.
Íme néhány példa:
Cél | Művelet |
---|---|
Személyre szabhatja, hogy melyik cikk van kiemelve egy hírweboldalon. | Minden művelet egy lehetséges hírcikk. |
Webhely hirdetéselhelyezésének optimalizálása. | Minden művelet egy elrendezés vagy szabály lesz, amely elrendezést hoz létre a hirdetésekhez (például felül, a jobb oldalon kis képeket, nagyméretű képeket). |
A javasolt elemek személyre szabott rangsorolásának megjelenítése egy vásárlási webhelyen. | Minden művelet egy adott termék. |
Javasoljon felhasználói felületi elemeket, például szűrőket, amelyek egy adott fényképre vonatkoznak. | Előfordulhat, hogy minden művelet más szűrő. |
Válassza ki a csevegőrobot válaszát a felhasználói szándék tisztázásához, vagy javasoljon egy műveletet. | Minden művelet lehetőséget ad a válasz értelmezésére. |
Válassza ki, hogy mit jelenítsen meg a keresési eredmények listájának tetején | Minden művelet a keresési eredmények közül az egyik. |
Műveletek betöltése az ügyfélalkalmazásból
A műveletek funkciói általában tartalomkezelő rendszerekből, katalógusokból és ajánlórendszerekből származhatnak. Az alkalmazás felelős azért, hogy betöltse a műveletekkel kapcsolatos információkat a megfelelő adatbázisokból és rendszerekből. Ha a műveletek nem változnak, vagy minden alkalommal betöltik őket, szükségtelen hatással van a teljesítményre, hozzáadhat logikát az alkalmazásban az információk gyorsítótárazásához.
Műveletek rangsorolásának megakadályozása
Bizonyos esetekben vannak olyan műveletek, amelyeket nem szeretne megjeleníteni a felhasználók számára. A legjobb módja annak, hogy megakadályozza a műveletet a rangsorolásban, ha hozzáadja azt a Kizárt műveletek listához, vagy nem adja át a Rangsor kérésnek.
Bizonyos esetekben előfordulhat, hogy nem szeretné, hogy az események alapértelmezés szerint betanuljanak. Más szóval csak egy adott feltétel teljesülése esetén szeretné betaníteni az eseményeket. A weblap személyre szabott része például a fold alatt található (a felhasználóknak görgetniük kell a személyre szabott tartalommal való interakció előtt). Ebben az esetben a teljes oldalt rendereli, de csak azt szeretné, hogy a felhasználó görgetésekor betanítsa az eseményt, és lehetősége van a személyre szabott tartalommal való interakcióra. Ezekben az esetekben halasztani kell az eseményaktiválást , hogy elkerülje az olyan alapértelmezett jutalomesemények (és betanítások) hozzárendelését, amelyekkel a végfelhasználónak nem volt lehetősége interakcióba lépni.
Funkciók
A környezet és a lehetséges műveletek leírása funkciókkal történik. A funkciók minden olyan információt képviselnek, amelyet fontosnak tart, hogy a döntési folyamat maximalizálja a jutalmakat. Jó kiindulópont, ha azt képzeljük, hogy minden időbélyegen a legjobb műveletet kell kiválasztania, és felteheti magának a kérdést: "Milyen információra van szükségem egy tájékozott döntés meghozatalához? Milyen információk érhetők el a környezet és az egyes lehetséges műveletek leírásához?" A funkciók lehetnek általánosak vagy egy adott elemre jellemzőek.
A Personalizer nem írja elő, nem korlátozza vagy nem javítja ki, hogy milyen szolgáltatásokat küldhet a műveletekhez és a környezethez:
- Idővel hozzáadhat és eltávolíthat a környezettel és a műveletekkel kapcsolatos funkciókat. A Personalizer továbbra is tanul a rendelkezésre álló információkból.
- Kategorikus funkciók esetén nincs szükség a lehetséges értékek előre definiálására.
- Numerikus funkciók esetén nem szükséges előre definiálni a tartományokat.
- Az aláhúzásjellel
_
kezdődő funkciónevek figyelmen kívül lesznek hagyva. - A funkciók listája nagy (több száz) lehet, de javasoljuk, hogy egy tömör funkciókészlettel kezdjen, és szükség szerint bővítse.
- a műveletfunkciók összefüggésben lehetnek a környezeti funkciókkal, vagy nem.
- A nem elérhető funkciókat ki kell hagyni a kérelemből. Ha egy adott szolgáltatás értéke nem érhető el egy adott kéréshez, hagyja ki a kérés funkcióját.
- Kerülje a null értékű szolgáltatások küldését. A null érték sztringként lesz feldolgozva, amelynek értéke "null", ami nem kívánatos.
Ez rendben van, és természetes, hogy a funkciók idővel változnak. Ne feledje azonban, hogy a Personalizer gépi tanulási modellje az általa látott funkciók alapján alkalmazkodik. Ha minden új funkciót tartalmazó kérést küld, a Personalizer modellje nem fogja tudni használni a korábbi eseményeket az aktuális esemény legjobb műveletének kiválasztásához. A "stabil" funkciókészlet (ismétlődő funkciókkal) segít a Personalizer gépi tanulási algoritmusainak teljesítményében.
Környezeti funkciók
- Előfordulhat, hogy egyes környezeti funkciók csak az idő egy részében érhetők el. Ha például egy felhasználó be van jelentkezve az online élelmiszerbolt webhelyére, a környezet a vásárlási előzményeket leíró funkciókat fogja tartalmazni. Ezek a funkciók nem érhetők el a vendégfelhasználók számára.
- Legalább egy környezeti funkciónak kell lennie. A Personalizer nem támogatja az üres környezetet.
- Ha a környezeti funkciók minden kérés esetében azonosak, a Personalizer a globálisan legjobb műveletet választja.
Műveletfunkciók
- Nem minden műveletnek kell ugyanazokat a funkciókat tartalmaznia. Az online élelmiszerbolt forgatókönyvében például a mikrovázható popcorn "főzési idő" funkcióval rendelkezik, míg az uborka nem.
- Előfordulhat, hogy egy adott műveletazonosító funkciói egy nap elérhetők lesznek, de később elérhetetlenné válnak.
Példák:
Az alábbiakban jó példákat talál a műveleti funkciókra. Ezek sok minden alkalmazástól függenek.
- A műveletek jellemzőivel rendelkező funkciók. Például egy film vagy egy tévésorozat?
- Funkciók arról, hogy a felhasználók hogyan használhatták ezt a műveletet a múltban. Ezt a filmet például többnyire az A vagy A demográfiai csoporthoz tartozók láthatják, általában csak egyszer játsszák le.
- A felhasználók által a műveletek megtekintésének jellemzőivel kapcsolatos funkciók. Például a miniatűrben látható film plakátja tartalmazza az arcokat, az autókat vagy a tájakat?
Támogatott szolgáltatástípusok
A Personalizer támogatja a sztringek, numerikus és logikai típusok funkcióit. Valószínű, hogy az alkalmazás többnyire sztringszolgáltatásokat fog használni néhány kivétellel.
A funkciótípusok hatása a gépi tanulásra a Personalizerben
- Sztringek: A sztringtípusok esetében a rendszer minden kulcs-érték (funkciónév, funkcióérték) kombinációt egy gyakori elérésű funkcióként kezeli (például kategória:"Termék" és kategória:"Hús" belsőleg a gépi tanulási modell különböző funkcióiként jelenik meg).
- Numerikus: Csak akkor használjon numerikus értékeket, ha a szám olyan nagyság, amely a személyre szabás eredményét arányosan befolyásolja. Ez nagyon függ a forgatókönyvtől. A numerikus egységeken alapuló, de nem lineáris jelentésű funkciók – például az Életkor, a Hőmérséklet vagy a Személymagasság – a legjobban kategorikus sztringekként vannak kódolva. Az Age például "Age":"0-5", "Age":"6-10" stb. kódolható. A magasság lehet "Height": "<5'0", "Height": "5'0-5'4", "Height": "5'5-5'11", "Height":"6'0-6-4", "Height":">6'4".
- Logikai
- Csak numerikus tömbök támogatottak.
Jellemzőkiemelés
- Kategorikus és sztringtípusokat használjon a nem nagyságú szolgáltatásokhoz.
- Győződjön meg arról, hogy elegendő szolgáltatás áll rendelkezésre a személyre szabásához. Minél pontosabban megcélozza a tartalmat, annál több funkcióra van szükség.
- A különböző sűrűségek jellemzői vannak. A funkció sűrű, ha sok elem néhány gyűjtőbe van csoportosítva. Például több ezer videó besorolható "Hosszú" (több mint 5 perc hosszú) és "Rövid" (5 perc alatt hosszú) kategóriába. Ez egy nagyon sűrű funkció. Ugyanakkor ugyanaz a több ezer elem rendelkezhet egy "Cím" nevű attribútummal, amelynek szinte soha nem lesz ugyanaz az értéke egyik elemről a másikra. Ez egy nagyon nem sűrű vagy ritka funkció.
A nagy sűrűségű funkciókkal a Personalizer extrapolálhatja a tanulást egyik elemről a másikra. Ha azonban csak néhány funkció van, és túl sűrűek, a Personalizer megpróbálja pontosan megcélezni a tartalmat, és csak néhány gyűjtő közül lehet választani.
A funkciók tervezésével és formázásával kapcsolatos gyakori problémák
- Szolgáltatások küldése magas számossággal. Olyan egyedi értékekkel rendelkező funkciók, amelyek valószínűleg nem ismétlődnek meg sok esemény során. Például egy adott személyre (például névre, telefonszámra, hitelkártyaszámra, IP-címre) vonatkozó PII-t nem szabad használni a Personalizerrel.
- Felhasználói azonosítók küldése nagy számú felhasználóval, nem valószínű, hogy ezek az információk relevánsak a Personalizer-tanulás szempontjából az átlagos jutalompontszám maximalizálása érdekében. A felhasználói azonosítók küldése (még akkor is, ha nem PII) valószínűleg több zajt ad a modellhez, és nem ajánlott.
- Egyedi értékek küldése, amelyek ritkán fordulnak elő többször, mint néhányszor. Javasoljuk, hogy magasabb szintű részletességgel gyűjtse be a funkciókat. Ha például olyan funkciókkal rendelkezik, mint például
"Context.TimeStamp.Day":"Monday"
vagy"Context.TimeStamp.Hour":13
hasznos lehet, mivel csak 7, illetve 24 egyedi érték van. Azonban nagyon pontos,"Context.TimeStamp":"1985-04-12T23:20:50.52Z"
és rendkívül sok egyedi értéket tartalmaz, ami nagyon megnehezíti a Personalizer számára, hogy tanuljon belőle.
Funkciókészletek fejlesztése
Elemezze a felhasználói viselkedést egy funkció-kiértékelési feladat futtatásával. Ez lehetővé teszi a múltbeli adatok megtekintését, hogy lássa, milyen funkciók járulnak hozzá jelentős mértékben a pozitív jutalmakhoz, illetve azokéhoz, amelyek kevésbé járulnak hozzá. Láthatja, hogy milyen funkciók segítenek, és ön és az alkalmazás fogja segíteni, hogy jobb funkciókat találjon, amelyeket elküldhet a Personalizernek, hogy még tovább javítsa az eredményeket.
Funkciókészletek bővítése mesterséges intelligenciával és Azure AI-szolgáltatásokkal
A mesterséges intelligencia és a használatra kész Azure AI-szolgáltatások nagyon hatékony kiegészítői lehetnek a Personalizernek.
Az elemek mesterségesintelligencia-szolgáltatások használatával történő előfeldolgozásával automatikusan kinyerheti azokat az információkat, amelyek valószínűleg relevánsak a személyre szabáshoz.
Példa:
- A Video Indexerrel mozgóképfájlt futtathat a jelenetelemek, a szöveg, a hangulat és sok más attribútum kinyeréséhez. Ezek az attribútumok ezután sűrűbbé tehetők, hogy tükrözzék azokat a jellemzőket, amelyekkel az eredeti elem metaadatai nem rendelkeztek.
- A képek futtathatók az objektumészlelésen, az arcokon a hangulaton keresztül stb.
- A szöveg információi bővíthetők entitások, hangulatok és entitások kibontásával a Bing tudásgráfjával.
Számos más Azure AI-szolgáltatást is használhat, például
Beágyazások használata szolgáltatásként
A különböző Machine Learning-modellek beágyazásai a Personalizer befolyásoló funkcióinak bizonyultak
- Beágyazások nagy nyelvi modellekből
- Beágyazások az Azure AI Vision-modellekből
Névterek
A funkciók rendszerezhetők névterek használatával (a környezet és a műveleti funkciók szempontjából is relevánsak). A névterek a funkciók témakör, forrás vagy bármely más, az alkalmazásban értelmezhető csoportosítás szerint csoportosíthatók. Ön határozza meg, hogy a névterek használatban vannak-e, és hogy mik legyenek. A névterek különböző csoportokba rendezik a szolgáltatásokat, és hasonló nevű szolgáltatásokat egyértelműsítenek. A névterek a funkciónevekhez hozzáadott "előtagként" is felfoghatók. A névterek nem ágyazhatók be.
Az alábbiakban példákat láthat az alkalmazások által használt szolgáltatásnévterekre:
- User_Profile_from_CRM
- Idő
- Mobile_Device_Info
- http_user_agent
- VideoResolution
- DeviceInfo
- Időjárás
- Product_Recommendation_Ratings
- current_time
- NewsArticle_TextAnalytics
Névtér elnevezési konvenciók és irányelvek
- A névterek nem ágyazhatók be.
- A névtereknek egyedi ASCII-karakterekkel kell kezdődniük (UTF-8-alapú névterek használatát javasoljuk). Az azonos első karakterekkel rendelkező névterek ütközéseket okozhatnak, ezért erősen ajánlott, hogy a névterek olyan karakterekkel kezdődjenek, amelyek különböznek egymástól.
- A névterek megkülönböztetik a kis- és nagybetűket. Például
user
User
különböző névtereknek minősülnek. - A szolgáltatásnevek megismételhetők a névterek között, és külön szolgáltatásként lesznek kezelve
- A következő karakterek nem használhatók: < 32 (nem nyomtatható), 32 (szóköz), 58 (kettőspont), 124 (cső) és 126–140 kód.
- A rendszer figyelmen kívül hagyja az aláhúzással
_
kezdődő összes névteret.
JSON-példák
Műveletek
Rang hívásakor több műveletet is elküld, amelyek közül választhat:
A JSON-objektumok tartalmazhatnak beágyazott JSON-objektumokat és egyszerű tulajdonságokat/értékeket. A tömbök csak akkor vehetők fel, ha a tömbelemek számok.
{
"actions": [
{
"id": "pasta",
"features": [
{
"taste": "salty",
"spiceLevel": "medium",
"grams": [400,800]
},
{
"nutritionLevel": 5,
"cuisine": "italian"
}
]
},
{
"id": "ice cream",
"features": [
{
"taste": "sweet",
"spiceLevel": "none",
"grams": [150, 300, 450]
},
{
"nutritionalLevel": 2
}
]
},
{
"id": "juice",
"features": [
{
"taste": "sweet",
"spiceLevel": "none",
"grams": [300, 600, 900]
},
{
"nutritionLevel": 5
},
{
"drink": true
}
]
},
{
"id": "salad",
"features": [
{
"taste": "salty",
"spiceLevel": "low",
"grams": [300, 600]
},
{
"nutritionLevel": 8
}
]
}
]
}
Környezet
A környezet a Rank API-nak küldött JSON-objektumként van kifejezve:
A JSON-objektumok tartalmazhatnak beágyazott JSON-objektumokat és egyszerű tulajdonságokat/értékeket. A tömbök csak akkor vehetők fel, ha a tömbelemek számok.
{
"contextFeatures": [
{
"state": {
"timeOfDay": "noon",
"weather": "sunny"
}
},
{
"device": {
"mobile":true,
"Windows":true,
"screensize": [1680,1050]
}
}
]
}
Névterek
A következő JSON-ban, user
, environment
és device
activity
névterek.
Feljegyzés
Határozottan javasoljuk, hogy az UTF-8 alapú és különböző betűkkel kezdődő funkciónévterekhez használjon neveket. Például, , , és kezdje a következővelu
: , e
, d
és a
.activity
device
environment
user
Az azonos első karakterekkel rendelkező névterek ütközéseket okozhatnak.
{
"contextFeatures": [
{
"user": {
"profileType":"AnonymousUser",
"Location": "New York, USA"
}
},
{
"environment": {
"monthOfYear": "8",
"timeOfDay": "Afternoon",
"weather": "Sunny"
}
},
{
"device": {
"mobile":true,
"Windows":true
}
},
{
"activity" : {
"itemsInCart": "3-5",
"cartValue": "250-300",
"appliedCoupon": true
}
}
]
}