Funkce jsou informace o akcích a kontextu.
Služba pro přizpůsobování funguje tak, že se naučí, co by aplikace měla zobrazit uživatelům v daném kontextu.
Přizpůsobení používá funkce, které jsou informace o aktuálním kontextu pro výběr nejlepší Akce. Tyto funkce reprezentují všechny informace, které si myslíte, abyste mohli dosáhnout vyšší ceny. Funkce mohou být velmi obecné nebo specifické pro položku.
Můžete mít například funkci o:
- Uživatel , jako je například
Sports_Shopper. Nemělo by to být individuální ID uživatele. - Obsah , jako je například, pokud se jedná o, a,
DocumentaryMovieTV Seriesnebo zda je položka maloobchodního prodeje v obchodě k dispozici. - Aktuální časové období, jako je například den v týdnu.
Přizpůsobené aplikace nepředepisuje, neomezuje ani neopravují funkce, které můžete odeslat pro akce a kontext:
- Některé funkce můžete pro některé akce Odeslat, a ne pro ostatní, pokud je nemáte. Například televizní série může mít atributy filmy.
- Některé funkce mohou být k dispozici pouze několikrát. Například mobilní aplikace může poskytovat další informace než webová stránka.
- V průběhu času můžete přidat nebo odebrat funkce týkající se kontextu a akcí. Přizpůsobování se dál učí od dostupných informací.
- Musí existovat alespoň jedna funkce pro daný kontext. Přizpůsobení nepodporuje prázdný kontext. Pokud zadáte pouze pevný kontext pokaždé, přichycení zvolí akci pro hodnocení pouze ohledně funkcí v akcích.
- V případě funkcí kategorií nemusíte definovat možné hodnoty a nemusíte předem definovat rozsahy pro číselné hodnoty.
Podporované typy funkcí
Přizpůsobení podporuje funkce typu String, numeric a Boolean. Je velmi pravděpodobné, že vaše aplikace bude většinou používat řetězcové funkce s několika výjimkami.
jak volba typu funkce ovlivní Machine Learning v přizpůsobování
- Řetězce: u typů řetězců se každá kombinace klíče a hodnoty považuje za funkci One-Hot (například Žánr: "ScienceFiction" a Žánr: "dokumentace" vytvoří dvě nové vstupní funkce pro model strojového učení.
- Číslo: v případě, že se jedná o velikost, je třeba použít číselné hodnoty, které by měly proporcionálně ovlivnit výsledek přizpůsobení. To je velmi závislé na scénáři. Ve zjednodušeném příkladu, například při přizpůsobení maloobchodního prostředí, může být NumberOfPetsOwned funkce, která je numerická, protože může chtít, aby lidé se dvěma nebo 3 domácími osobami ovlivnili výsledek přizpůsobení dvakrát nebo třikrát, a to v rozsahu 1 PET. Funkce, které jsou založeny na numerických jednotkách, ale u kterých není význam lineární – například stáří, teplota nebo výška osoby – jsou nejlépe kódované jako řetězce. Například DayOfMonth by byl řetězec s "1", "2"... "31". Pokud máte mnoho kategorií, může být kvalita funkcí obvykle vylepšena pomocí rozsahů. Například stáří může být kódováno jako "stáří": "0-5", "stáří": "6-10" atd.
- Logické hodnoty odeslané s hodnotou false fungují jako v případě, že jste byly odeslány vůbec.
Funkce, které nejsou k dispozici, by měly být z požadavku vynechány. Vyhněte se posílání funkcí s hodnotou null, protože se při výuce modelu zpracuje jako stávající a s hodnotou null.
Kategorizace funkcí s obory názvů
Přizpůsobování přebírá funkce uspořádané do oborů názvů. V aplikaci určíte, zda jsou obory názvů použity a co mají být. Obory názvů slouží k seskupení funkcí podobného tématu nebo funkcí, které pocházejí z určitého zdroje.
Následují příklady oborů názvů funkcí používaných aplikacemi:
- User_Profile_from_CRM
- Čas
- Mobile_Device_Info
- http_user_agent
- VideoResolution
- UserDeviceInfo
- Počasí
- Product_Recommendation_Ratings
- current_time
- NewsArticle_TextAnalytics
Obory názvů funkcí můžete pojmenovat podle vlastních konvencí, pokud jsou platné klíče JSON. Obory názvů slouží k uspořádání funkcí do různých sad a k jednoznačnému využití funkcí s podobnými názvy. Obory názvů si můžete představit jako předponu, která je přidána do názvů funkcí. Obory názvů nemůžou být vnořené.
V následujících JSON,, user , environment device a activity jsou obory názvů funkcí.
Poznámka
V současné době důrazně doporučujeme používat názvy pro obory názvů funkcí, které jsou založené na kódování UTF-8 a začínají s různými písmeny. Například,, user environment device a activity začněte s u , e , a d a . V současné době by obory názvů se stejnými prvními znaky mohly způsobit kolizi v indexech použitých pro strojové učení.
Objekty JSON můžou zahrnovat vnořené objekty JSON a jednoduché vlastnosti nebo hodnoty. Pole lze zahrnout pouze v případě, že položky pole jsou čísla.
{
"contextFeatures": [
{
"user": {
"profileType":"AnonymousUser",
"latlong": ["47.6,-122.1"]
}
},
{
"environment": {
"dayOfMonth": "28",
"monthOfYear": "8",
"timeOfDay": "13:00",
"weather": "sunny"
}
},
{
"device": {
"mobile":true,
"Windows":true
}
},
{
"activity" : {
"itemsInCart": 3,
"cartValue": 250,
"appliedCoupon": true
}
}
]
}
Omezení ve znakových sadách pro obory názvů
Řetězec, který použijete pro pojmenování oboru názvů, musí splňovat určitá omezení:
- Nemůže to být Unicode.
- Můžete použít některé z tisknutelných symbolů s kódy < 256 pro názvy oborů názvů.
- Nemůžete použít symboly s kódy < 32 (netisknutelný), 32 (Space), 58 (dvojtečka), 124 (pipe) a 126 – 140.
- Nesmí začínat podtržítkem (_), jinak se tato funkce bude ignorovat.
Jak nastavit efektivnější nastavení funkcí pro přizpůsobení
Dobrá sada funkcí pomáhá přizpůsobovat, jak předpovědět akci, která bude řídit nejvyšší odměnu.
Zvažte odeslání funkcí rozhraní API pro řazení přizpůsobeného rozhraní, které se řídí těmito doporučeními:
Pro funkce, které nejsou velikostí, použijte kategorií a typy řetězců.
K dispozici je dostatek funkcí pro přizpůsobení. Přesnější cílení obsahu vyžaduje, aby bylo potřeba víc funkcí.
Existuje dostatek funkcí různých hustot. Funkce je zhuštěná , pokud je v několika intervalech seskupeno mnoho položek. Například tisíce videí mohou být klasifikovány jako "Long" (více než 5 minut dlouhé) a "krátká" (méně než 5 minut). Toto je velmi zhuštěná funkce. Na druhé straně stejné tisíce položek mohou mít atribut nazvaný "title", který téměř nikdy nebude mít stejnou hodnotu z jedné položky do druhé. Toto je velmi nezhuštěná nebo zhuštěná funkce.
Funkce vysoké hustoty pomáhá přizpůsobování odvodit z jedné položky do druhé. Pokud ale existuje jenom několik funkcí a jsou moc husté, přizpůsobené aplikace se pokusí přesně cílit na obsah, který se dá vybrat jenom v několika intervalech.
Vylepšení sad funkcí
Proveďte analýzu chování uživatele provedením vyhodnocení offline. To vám umožní podívat se na minulá data a zjistit, jaké funkce jsou silně přispívající k kladným rozdílům, které přispívají méně. Můžete se podívat, jaké funkce vám pomáhají, a bude až do vaší aplikace, abyste našli lepší funkce pro odeslání do přizpůsobeného nástroje, aby bylo možné ještě víc zlepšit výsledky.
Tyto části jsou běžné postupy pro vylepšení funkcí odesílaných na přizpůsobení.
Udělejte větší zhuštěné funkce
Je možné vylepšit sady funkcí jejich úpravou, aby byly větší a více nebo méně zhuštěné.
Například časové razítko dolů na druhou je velmi zhuštěná funkce. Je možné, že je možné provést více hustě (v platnosti) tím, že rozklasifikujete časy do "ráno", "poledne", "odpoledne" atd.
Informace o poloze také obvykle těží z vytváření širších klasifikací. Například Latitude-Longitude souřadnici, jako je například lat: 47,67402 ° N, Long: 122,12154 ° W, je příliš přesný a vynutí, aby se model dozvěděl o zeměpisné šířce a délce jako odlišné rozměry. Při pokusu o přizpůsobení na základě informací o poloze pomáhá seskupovat informace o poloze ve větších sektorech. Snadným způsobem, jak to provést, je zvolit vhodnou přesnost zaokrouhlení pro Lat-Long čísla a seskupit zeměpisnou šířku a délku do "oblastí" tím, že je provedete do jednoho řetězce. Dobrým způsobem, jak vyjádřit 47,67402 ° N, Long: 122,12154 ° W v oblastech, přibližně pár kilometrů na šířku by bylo "umístění": "34.3, 12,1".
Rozbalení sad funkcí s použitím extrapolace informací
Můžete také získat více funkcí tak, že si myslíte neprozkoumatelné atributy, které mohou být odvozeny z informací, které už máte. Je například možné, že při smyšlené personalizaci seznamu filmů víkendový vs. pracovní den vyjádří jiné chování než uživatelé? Čas může být rozšířený tak, aby měl atribut "weekend" nebo "weekday" (víkendový nebo pracovní den). Podnětují národní kulturní svátky pozornost k určitým typům filmů? Například atribut "Jejich" je užitečný na místech, kde je relevantní. Je možné, že dešťové počasí má významný dopad na výběr filmu pro mnoho lidí? S časem a místem může služba počasí tyto informace poskytnout a můžete je přidat jako další funkci.
Rozšíření sad funkcí s umělou inteligencí a kognitivními službami
Umělá inteligence a funkce připravená k Cognitive Services může být velmi výkonným doplněk služby Personalizér.
Předzpracování položek pomocí služeb umělé inteligence můžete automaticky extrahovat informace, které budou pravděpodobně relevantní pro přizpůsobení.
Například:
- Soubor filmu můžete spustit prostřednictvím souboru Video Indexer, který extrahuje prvky scény, text, mínění a mnoho dalších atributů. Tyto atributy pak mohou být více hustoty, aby odrážely charakteristiky, které původní metadata položky neměla.
- Obrázky je možné spouštět prostřednictvím rozpoznávání objektů, tváří zabarvení atd.
- Informace v textu je možné rozšířit extrahováním entit, mínění, rozbalením entit Bing znalostním grafem atd.
Můžete použít několik dalších Azure Cognitive Services, například
Akce představují seznam možností.
Každá akce:
- Má ID události. Pokud už máte ID události, měli byste ho odeslat. Pokud ID události nemáte, neposílejte ho, personalizátor vám ho vytvoří a vrátí ho v odpovědi na požadavek Rank (Pořadí). ID je přidružené k události Rank (Pořadí), nikoli k uživateli. Pokud vytvoříte ID, bude identifikátor GUID fungovat nejlépe.
- Obsahuje seznam funkcí.
- Seznam funkcí může být velký (stovky), ale doporučujeme vyhodnotit efektivitu funkcí a odebrat funkce, které přispívají k získání odměny.
- Funkce v akcích mohou nebo nemusí mít žádnou korelaci s funkcemi v kontextu používaném personalizérem.
- Funkce pro akce mohou být přítomné v některých akcích, a ne v jiných.
- Funkce pro určité ID akce mohou být dostupné jeden den, ale později budou nedostupné.
Algoritmy strojového učení služby Personalizér budou mít lepší výkon, pokud existují stabilní sady funkcí, ale pokud se sada funkcí v průběhu času změní, volání funkce Rank neselžou.
Při použití akce Ranking (Hodnocení) neposílejte více než 50 akcí. Pokaždé to může být stejných 50 akcí, nebo se mohou změnit. Pokud máte například katalog produktů s 10 000 položkami pro aplikaci elektronického obchodování, můžete použít doporučovací nebo filtrovací modul k určení 40 nejlepších položek, které může zákazník potřebovat, a pomocí Personalizátoru najít tu, která vygeneruje největší odměnu (například uživatel přidá do košíku) pro aktuální kontext.
Příklady akcí
Akce, které odešlete do rozhraní API pořadí, budou záviset na tom, co se pokoušíte přizpůsobit.
Tady je několik příkladů:
| Účel | Akce |
|---|---|
| Přizpůsobte si, který článek je zvýrazněný na zpravodajských webech. | Každá akce je potenciální zpravodajský článek. |
| Optimalizace umísťování reklam na webu | Každá akce bude rozložení nebo pravidla pro vytvoření rozložení pro reklamy (například nahoře, vpravo, malé obrázky, velké obrázky). |
| Zobrazení přizpůsobeného pořadí doporučených položek na nákupním webu | Každá akce je konkrétní produkt. |
| Navrchněte prvky uživatelského rozhraní, jako jsou filtry, které se mají použít na konkrétní fotku. | Každá akce může být jiný filtr. |
| Zvolte odpověď chatbota, která objasní záměr uživatele nebo navrhne akci. | Každá akce je možností, jak interpretovat odpověď. |
| Zvolte, co se má zobrazit v horní části seznamu výsledků hledání. | Každá akce je jedním z prvních několika výsledků hledání. |
Příklady funkcí pro akce
Tady jsou dobré příklady funkcí pro akce. To bude hodně záviset na každé aplikaci.
- Funkce s charakteristikou akcí. Jedná se například o film nebo televizní seriál?
- Funkce týkající se způsobu, jakým uživatelé s touto akcí v minulosti reagovat Tento film například většinou viděli lidé s demografickými daty A nebo B, obvykle se nehraje víc než jednou.
- Funkce týkající se charakteristik toho, jak uživatel vidí akce. Obsahuje například plakát pro film zobrazený v miniaturě tváře, auta nebo krajinu?
Načtení akcí z klientské aplikace
Funkce z akcí obvykle pocházejí ze systémů pro správu obsahu, katalogů a systémů doporučení. Vaše aplikace zodpovídá za načtení informací o akcích z příslušných databází a systémů, které máte. Pokud se vaše akce nezmění nebo se pokaždé načtou, bude to mít zbytečný dopad na výkon, můžete do aplikace přidat logiku ukládání těchto informací do mezipaměti.
Zabránění seřazení akcí
V některých případech existují akce, které nechcete uživatelům zobrazovat. Nejlepší způsob, jak zabránit tomu, aby byla akce seřazena jako nejvyšší, je nezahrňte ji do seznamu akcí do rozhraní API pořadí.
V některých případech se může později ve vaší obchodní logice určit pouze v případě, že se uživateli zobrazí výsledná akce volání rozhraní API pořadí. V těchto případech byste měli použít inaktivní události.
Formát JSON pro akce
Při volání funkce Rank (Pořadí) odešlete několik akcí, ze které si můžete vybrat:
Objekty JSON mohou obsahovat vnořené objekty JSON a jednoduchou vlastnost/hodnoty. Pole lze zahrnout pouze v případě, že jsou položkami pole čísla.
{
"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
}
]
}
]
}
Příklady kontextových informací
Informace o kontextu závisí na jednotlivých aplikacích a případech použití, ale obvykle mohou zahrnovat například tyto informace:
- Demografické a profilové informace o uživateli
- Informace extrahované z hlaviček protokolu HTTP, jako je například uživatelský agent, nebo odvozené z informací PROTOKOLU HTTP, jako jsou reverzní geografická vyhledávání na základě IP adres.
- Informace o aktuálním čase, jako je den v týdnu, víkend nebo ne, ráno nebo odpoledne, svátková sezóny atd.
- Informace extrahované z mobilních aplikací, jako je umístění, pohyb nebo úroveň baterie.
- Historické souhrny chování uživatelů – například jaké jsou filmové žánry, které tento uživatel prohlížel nejvíce.
Vaše aplikace zodpovídá za načítání informací o kontextu z relevantních databází, senzorů a systémů, které máte. Pokud se kontextové informace nezmění, můžete do aplikace přidat logiku pro ukládání těchto informací do mezipaměti před jejich odesláním do rozhraní API rank.
Formát JSON pro kontext
Kontext je vyjádřen jako objekt JSON, který se odesílá do rozhraní API pořadí:
Objekty JSON mohou obsahovat vnořené objekty JSON a jednoduchou vlastnost/hodnoty. Pole lze zahrnout pouze v případě, že jsou položkami pole čísla.
{
"contextFeatures": [
{
"user": {
"name":"Doug"
}
},
{
"state": {
"timeOfDay": "noon",
"weather": "sunny"
}
},
{
"device": {
"mobile":true,
"Windows":true,
"screensize": [1680,1050]
}
}
}
]
}