1<!DOCTYPE html> 2<html> 3<head><meta name="generator" content="Hexo 3.8.0"> 4 <meta charset="utf-8"> 5 <meta http-equiv="X-UA-Compatible" content="chrome=1"> 6 7 8 9 <title> 10 Real-time Personalization using Embeddings for Search Ranking at Airbnb 解读 | ç鸣è¾çå客 11 </title> 12 13 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> 14 15 <meta name="author" content="Minghui Wang"> 16 17 18 19 <meta name="description" content="æè¿çå°äº�Airbnbçä¸ç¯paperè·å¾äº2018å¹´KDD best paper,äºæ¯é 读并å¨ç»å å享äºä¸ï¼é¡ºä¾¿æ¬å°å客䏿¥"> 20<meta name="keywords" content="Embeddings,Recommend,Search Ranking,Airbnb,KDD best paper 2018"> 21<meta property="og:type" content="article"> 22<meta property="og:title" content="Real-time Personalization using Embeddings for Search Ranking at Airbnb 解读 | ç鸣è¾çå客"> 23<meta property="og:url" content="http://yoursite.com/2018/11/26/Real-time-Personalization-using-Embeddings-for-Search-Ranking-at-Airbnb-解读/index.html"> 24<meta property="og:site_name" content="ç鸣è¾çå客"> 25<meta property="og:description" content="æè¿çå°äº�Airbnbçä¸ç¯paperè·å¾äº2018å¹´KDD best paper,äºæ¯é 读并å¨ç»å å享äºä¸ï¼é¡ºä¾¿æ¬å°å客䏿¥"> 26<meta property="og:locale" content="default"> 27<meta property="og:image" content="http://yoursite.com/images/skipgram_listing.png"> 28<meta property="og:image" content="http://yoursite.com/images/embed1.jpeg"> 29<meta property="og:image" content="http://yoursite.com/images/embed2.jpeg"> 30<meta property="og:image" content="http://yoursite.com/images/map_table.png"> 31<meta property="og:image" content="http://yoursite.com/images/type_embedding.png"> 32<meta property="og:image" content="http://yoursite.com/images/offline_eval_emb.png"> 33<meta property="og:updated_time" content="2019-05-26T16:52:16.691Z"> 34<meta name="twitter:card" content="summary"> 35<meta name="twitter:title" content="Real-time Personalization using Embeddings for Search Ranking at Airbnb 解读 | ç鸣è¾çå客"> 36<meta name="twitter:description" content="æè¿çå°äº�Airbnbçä¸ç¯paperè·å¾äº2018å¹´KDD best paper,äºæ¯é 读并å¨ç»å å享äºä¸ï¼é¡ºä¾¿æ¬å°å客䏿¥"> 37<meta name="twitter:image" content="http://yoursite.com/images/skipgram_listing.png"> 38 39 40 41 <link rel="icon" type="image/x-icon" href="/favicon.png"> 42 43 <link rel="stylesheet" href="/css/uno.css"> 44 <link rel="stylesheet" href="/css/highlight.css"> 45 <link rel="stylesheet" href="/css/archive.css"> 46 <link rel="stylesheet" href="/css/china-social-icon.css"> 47 48</head> 49<body> 50 51 <span class="mobile btn-mobile-menu"> 52 <i class="icon icon-list btn-mobile-menu__icon"></i> 53 <i class="icon icon-x-circle btn-mobile-close__icon hidden"></i> 54 </span> 55 56 57 58<header class="panel-cover panel-cover--collapsed"> 59 60 61 <div class="panel-main"> 62 63 64 <div class="panel-main__inner panel-inverted"> 65 <div class="panel-main__content"> 66 67 68 69 <h1 class="panel-cover__title panel-title"><a href="/" title="link to homepage">ç鸣è¾çå客</a></h1> 70 <hr class="panel-cover__divider"> 71 72 73 <p class="panel-cover__description"> 74 Wang Minghui's Personal Blog 75 </p> 76 <hr class="panel-cover__divider panel-cover__divider--secondary"> 77 78 79 <div class="navigation-wrapper"> 80 81 <nav class="cover-navigation cover-navigation--primary"> 82 <ul class="navigation"> 83 84 85 86 <li class="navigation__item"><a href="/#blog" title class="blog-button">é¦é¡µ</a></li> 87 88 89 <li class="navigation__item"><a href="/about" title class>å ³äº</a></li> 90 91 92 <li class="navigation__item"><a href="/archive" title class>彿¡£</a></li> 93 94 95 </ul> 96 </nav> 97 98 <!-- ---------------------------- 99To add a new social icon simply duplicate one of the list items from below 100and change the class in the <i> tag to match the desired social network 101and then add your link to the <a>. Here is a full list of social network 102classes that you can use: 103 104 icon-social-500px 105 icon-social-behance 106 icon-social-delicious 107 icon-social-designer-news 108 icon-social-deviant-art 109 icon-social-digg 110 icon-social-dribbble 111 icon-social-facebook 112 icon-social-flickr 113 icon-social-forrst 114 icon-social-foursquare 115 icon-social-github 116 icon-social-google-plus 117 icon-social-hi5 118 icon-social-instagram 119 icon-social-lastfm 120 icon-social-linkedin 121 icon-social-medium 122 icon-social-myspace 123 icon-social-path 124 icon-social-pinterest 125 icon-social-rdio 126 icon-social-reddit 127 icon-social-skype 128 icon-social-spotify 129 icon-social-stack-overflow 130 icon-social-steam 131 icon-social-stumbleupon 132 icon-social-treehouse 133 icon-social-tumblr 134 icon-social-twitter 135 icon-social-vimeo 136 icon-social-xbox 137 icon-social-yelp 138 icon-social-youtube 139 icon-social-zerply 140 icon-mail 141 142--------------------------------> 143 144<!-- add social info here --> 145 146 147 148<nav class="cover-navigation navigation--social"> 149 <ul class="navigation"> 150 151 152 <!-- Github --> 153 <li class="navigation__item"> 154 <a href="https://github.com/wd1900" title="Huno on GitHub"> 155 <i class="icon icon-social-github"></i>
156 <span class="label">GitHub</span> 157 </a> 158 </li> 159 160 161 <!-- China social icon --> 162 163 164 <!-- <li class="navigation__item"> 165 <a href="https://github.com/wd1900" title=""> 166 <i class='icon cs-icon-douban'></i> 167 <span class="label">Douban</span> 168 </a> 169 </li> --> 170 171 <li class="navigation__item"> 172 <a href="http://weibo.com/p/1005051882909995/" title> 173 <i class="icon cs-icon-weibo"></i> 174 <span class="label">Weibo</span> 175 </a> 176 </li> 177 178 179 180 181 </ul> 182</nav> 183 184 185 186 187 </div> 188 189 </div> 190 191 </div> 192 193 <div class="panel-cover--overlay"></div> 194 </div> 195</header> 196 197 198 <div class="content-wrapper"> 199 <div class="content-wrapper__inner entry"> 200 201 202<article class="post-container post-container--single"> 203 204 <header class="post-header"> 205 206 <h1 class="post-title">Real-time Personalization using Embeddings for Search Ranking at Airbnb 解读</h1> 207 208 209 210 <div class="post-meta"> 211 <time datetime="2018-11-26" class="post-meta__date date">2018-11-26</time> 212 213 <span class="post-meta__tags tags"> 214 215 216 217 218 • æ ç¾: 219 <font class="tags"> 220 <a class="tags-link" href="/tags/Airbnb/">Airbnb</a>, <a class="tags-link" href="/tags/Embeddings/">Embeddings</a>, <a class="tags-link" href="/tags/KDD-best-paper-2018/">KDD best paper 2018</a>, <a class="tags-link" href="/tags/Recommend/">Recommend</a>, <a class="tags-link" href="/tags/Search-Ranking/">Search Ranking</a> 221 </font> 222 223 224 </span> 225 </div> 226 227 228 229 </header> 230 231 <section id="post-content" class="article-content post"> 232 <p>æè¿çå°äº�Airbnbçä¸ç¯paperè·å¾äº2018å¹´KDD best paper,äºæ¯é 读并å¨ç»å å享äºä¸ï¼é¡ºä¾¿æ¬å°å客䏿¥<br><a id="more"></a><br>æè¿çå°äº�Airbnbçä¸ç¯paperè·å¾äº2018å¹´KDD best paper <a href="http://delivery.acm.org/10.1145/3220000/3219885/p311-grbovic.pdf?ip=61.135.194.49&id=3219885&acc=OPENTOC&key=4D4702B0C3E38B35%2E4D4702B0C3E38B35%2E4D4702B0C3E38B35%2E054E54E275136550&__acm__=1543248634_1e9984a4c6d29462dd6a1428cb109404" target="_blank" rel="noopener">Real-time Personalization using Embeddings for Search<br>Ranking at Airbnb</a><br>,äºæ¯é 读并å¨ç»å å享äºä¸ï¼é¡ºä¾¿æ¬å°å客䏿¥ã<br>æ¤æä¸»è¦æ¯å¯¹è®ºæçéç¹é¨å�è¿è¡ç¿»è¯æ§å°è§£è¯»ï¼åæ¶ç©¿æçæèªå·±å¯¹åé¨åçè§£åæ³æ³ã妿é®é¢ï¼æ¬¢è¿ææ£ã</p> 233<p>ç®å卿¨è䏿¯è¾æµè¡çæ¹æ¡ï¼ä¸»è¦æ¯åºäº<code>google</code>ç<code>wide&deep</code>å¼å¯çend to endçæ¨¡åï¼uidï¼itemidä½ä¸º<code>embedding</code>è¾å ¥ å ä¸å ¶ä»åç§ç¹å¾ï¼å¹¶çéå¨wideé¨åè¿è¡ä¼åï¼æ¯å¦ä»¥<code>deepFM</code>为é¦ç模åãæä»¬èªå·±ä¹æ¯å¨è¿ä¸ªæ¹åä¸å®è·µçãè¿ç¯è®ºææ¯å åç¬è®ç»embeddingï¼ç¶åå¨�æembeddingå½ç¹å¾è¾å ¥å°rank modelä¸</p> 234<h2 id="Introduction"><a href="#Introduction" class="headerlink" title="Introduction"></a>Introduction</h2><p>æç´¢ç®æ³çç®æ å°±æ¯ä¸ºäºæåç½ç«çæ¶çï¼å¨airbnbéè¦åæ¶ä¼åå®¢äººåæ¿ä¸»ä¸¤æ¹ï¼å³ç»å®å°ç¹åæ¥æåï¼å°ä½ç½®ãä»·æ ¼ã飿 ¼åè¯ä»·çæ¹é¢å¯¹ç¨æ·æå¸å¼åçæ¿åæåãä¹è¦èèæ¿ä¸»çå好ï¼å°å¯è½ä¼æç»å®¢äººçæååéä½ï¼æ¯å¦ç¨æ·è¯ä»·å·®ï¼æå® ç©ï¼äººæ°ççåå ã</p> 235<p>å¨ä¸ä¸ªsearch sessionä¸ä¼æå¤æ¬¡ç¹å»åèç³»æ¿ä¸»ï¼è¿äºé½æ¯in-session signalsã宿¶ä¸ªæ§åæ¨èçç®æ æ¯å¨æç´¢ä¼è¯æé´ä¸ºå®¢äººå±ç°æ´å¤ç±»ä¼¼äºæä»¬è®¤ä¸ºä»ä¼åæ¬¢çæ¿é´ï¼åæ¶ï¼å¯ä»¥ç¨è´é¢ä¿¡å·ï¼å¦è·³è¿é«æåçlistingsï¼å»åå°ä¸ä¹ç¸ä¼¼çæä»¬è®¤ä¸ºä¸å欢çã</p> 236<p>å¼å ¥listing embeddings,å©ç¨è¿äºç¸ä¼¼æ§å»ä¸ºSearch Ranking Modelå建个æ§åç¹å¾,驱å¨ç¸ä¼¼listingæ¨è</p> 237<p>ç±äºä¸è¬äººä¸å¹´æ è¡ä¸å°ä¸¤æ¬¡ï¼å¨Airbnbçåºæ¯ä¸ï¼bookingæ¯å¾ç¨ççï¼å ¶ä¸å¤§éç¨æ·åªè®¢è¿ä¸æ¬¡ã为æ¤ï¼è®ç»listing_type级å«çembeddingsãåæ ·,ä¹å¦ä¹ ä¸ listing _type embeddings åä¸åé空é´çuser_type embeddings.<strong>��è¿éè¾¹çä¸ä¸ªäº®ç¹å°±æ¯user_type embeddings å list_type embeddingsæ¯�åä¸ç©ºé´ä¸çã</strong></p> 238<h3 id="åå²å·¥ä½ï¼"><a href="#åå²å·¥ä½ï¼" class="headerlink" title="åå²å·¥ä½ï¼"></a>åå²å·¥ä½ï¼</h3><ul> 239<li>Real-time Personalization</li> 240<li>Adapting Training for Congregated Search</li> 241<li>Leveraging Conversions as Global Context</li> 242<li>User Type Embeddings</li> 243<li>Rejections as Explicit Negatives</li> 244</ul> 245<h3 id="ææï¼"><a href="#ææï¼" class="headerlink" title="ææï¼"></a>ææï¼</h3><p>CTRç¸å¯¹äºç°æç模åæå20%</p> 246<hr> 247<p>å¦ä¸ææè¯´ï¼æ¥ä¸æ¥ä»ç»Listing EmbeddingsãListing_type Embeddings å User_type Embeddings</p> 248<h3 id="Listing-Embeddings"><a href="#Listing-Embeddings" class="headerlink" title="Listing Embeddings"></a>Listing Embeddings</h3><p>é¦å å®ä¹<code>session</code>ï¼ç¨æ·çç¹å»åºåå°±æ¯sessionï¼ä¸¤ä¸ªç¹å»é´è¶ è¿30minå°±æ¯ä¸ä¸ªæ°çsessionï¼æè é¢è®¢äºæ¿é´ä¹ç®æ¯ç»æäºä¸ä¸ªsessionãæ ¹æ®æ¤æ°æ®é
248å»å¦ä¹ ,使ç¨<code>skip-gram model</code>æå¤§åå¦ä¸ç®æ 彿°</p>
249<script type="math/tex; mode=display"> 250\mathcal { L } = \sum _ { s \in \mathcal { S } } \sum _ { l _ { i } \in s } \left( \sum _ { - m \geq j \leq m , i \neq 0 } \log \mathbb { P } \left( l _ { i + j } | l _ { i } \right) \right)</script>
250<p>$\mathbb { P } \left( l _ { i + j } | l _ { i } \right)$ æ¯å¨ä¸´è¿ç¹å» $l _ { i }$ æ
åµä¸ï¼åºç¨soft-maxå $l _ { i + j }$ 被ç¹å»çæ¦ç:</p>
251<script type="math/tex; mode=display"> 252\mathbb { P } \left( l _ { i + j } | l _ { i } \right) = \frac { \exp \left( \mathbf { v } _ { l _ { i } } ^ { \top } \mathbf { v } _ { l + j } ^ { \prime } \right) } { \sum _ { l = 1 } ^ { | \mathcal { V } | } \exp \left( \mathbf { v } _ { l _ { i } } ^ { \top } \mathbf { v } _ { l } ^ { \prime } \right) }</script>
252<p>�åéçå®ä¹å¾å¥½çè§£ï¼lå°±æ¯listingï¼paperä¸çlistingæçè§£å°±æ¯æ¿åï¼ï¼uå°±æ¯userï¼v代ævectorï¼å$v_ { l _ { i } }$å°±æ¯ælisting içembeddingï¼$\mathcal { V }$ä»£ææælistingséåã</p> 253<p><strong>éæºéæ ·å½åè´ä¾</strong>åä¼ ç»çskip-gramç¸åï¼äºæ¯ä¼åç®æ 彿°è½¬å为ï¼</p>
254<script type="math/tex; mode=display"> 255\underset { \theta } { \operatorname { argmax } } \sum _ { ( l , c ) \in \mathcal { D } _ { p } } \log \frac { 1 } { 1 + e ^ { - \mathbf { v } _ { c } ^ { \prime } \mathbf { v } _ { l } } } + \sum _ { ( l , c ) \in \mathcal { D } _ { n } } \log \frac { 1 } { 1 + e ^ { \mathbf { v } _ { c } ^ { \prime } \mathbf { v } _ { l } } } ï¼3ï¼</script>
255<p>�<br>$\mathcal { D }$ ææ°æ®éï¼ p为positiveï¼nå°±æ¯negativeäºã</p> 256<h4 id="Booked-Listing-as-Global-context"><a href="#Booked-Listing-as-Global-context" class="headerlink" title="Booked Listing as Global context:"></a>Booked Listing as Global context:</h4><p>session被å为两ç§:</p> 257<ol> 258<li>booked sessions ( i.e. click sessions that end with user booking a listing to stay at</li> 259<li>exploratory sessions (i.e. click sessions that do not end with booking, i.e. users were just browsing</li> 260</ol> 261<p>å¼å ¥æç»é¢è®¢çlistingä½ä¸ºå ¨å±ä¸ä¸æï¼æ è®ºå ¶æ¯å¦å¨çªå£å ï¼å¸®å©ä¼å临è¿ç¹å»listingå°é¢è®¢listingçå å ³å ³ç³»ãäºæ¯<code>booked sessions</code>çembeddingæ´æ°è§ååæï¼</p>
262<script type="math/tex; mode=display"> 263\underset { \theta } { \operatorname { argmax } } \sum _ { ( l , c ) \in \mathcal { D } _ { p } } \log \frac { 1 } { 1 + e ^ { - v _ { c } ^ { \prime } v _ { l } } } + \sum _ { ( l , c ) \in \mathcal { D } _ { n } } \log \frac { 1 } { 1 + e ^ { v _ { c } ^ { \prime } v _ { l } } } + \log \frac { 1 } { 1 + e ^ { - v _ { l _ { b } } ^ { \prime } v _ { l } } } ï¼4ï¼</script>
263<p><img src="/images/skipgram_listing.png" alt=" Skip-gram model for Listing Embeddings"></p> 264<h4 id="Adapting-Training-for-Congregated-Search"><a href="#Adapting-Training-for-Congregated-Search" class="headerlink" title="Adapting Training for Congregated Search:"></a>Adapting Training for Congregated Search:</h4><p>å¨çº¿é¢å®ä¸è¬é½æ¯å¨ä¸ä¸ªmarketéå»éæ©ï¼æ¯å¦ä½ æ³å»Londonï¼é£ä¹ä½ ä¼å¨Londonè¿ä¸ªmarketéå»éæ©ãèè´æ ·æ¬æ¯å ¨å±éæºéæ ·çï¼å¾å¯è½ä¸æ£ä¾ä¸å¨åä¸ä¸ªmarketéï¼å¯¼è´åmarketå å¦ä¹ å°çç¸ä¼¼æ§ä¸å¤å¥½ï¼ä¸ºæ¤å¼å ¥åmarketçéæºæ ·æ¬ä½ä¸ºé¢å¤çè´æ ·æ¬ã</p>
265<script type="math/tex; mode=display"> 266\underset { \theta } { \operatorname { argmax } } \sum _ { ( l , c ) \in \mathcal { D } _ { p } } \log \frac { 1 } { 1 + e ^ { - v _ { c } ^ { \prime } v _ { l } } } + \sum _ { ( l , c ) \in \mathcal { D } _ { n } } \log \frac { 1 } { 1 + e ^ { v _ { c } ^ { \prime } v _ { l } } } + \log \frac { 1 } { 1 + e ^ { - v _ { l _ { b } } ^ { \prime } v _ { l } } } + \sum _ { ( l , m_{n} ) \in \mathcal { D } _ { m_{n} } } \log \frac { 1 } { 1 + e ^ { - v _ { m_{n} } ^ { \prime } v _ { l } } } ï¼5ï¼</script>
266<h3 id="cold-start-listing-embedding"><a href="#cold-start-listing-embedding" class="headerlink" title="cold start listing embedding"></a>cold start listing embedding</h3><p>æ°æ¿åçembeddingï¼ç¨10è±éå æç¸ä¼¼çä¸ä¸ªæ¿åï¼ç±»åãä»·æ ¼èå´ï¼çembeddingå弿¥ä»£æ¿</p> 267<h3 id="Examining-Listing-Embeddings"><a href="#Examining-Listing-Embeddings" class="headerlink" title="Examining Listing Embeddings"></a>Examining Listing Embeddings</h3><p>å¨8亿çclick sessionsä¸è®ç»32ç»´embeddings,è¿è¡K-meansèç±»ï¼å¯ä»¥åç°ä½ç½®ç¸è¿çèéå¨ä¸èµ·ï¼å¯ç¥å¦ä¹ å°äºå°çä½ç½®çç¸ä¼¼æ§ãä¹å¯ä»¥çå°ç¸åç±»ååä»·æ ¼çlistingæ¯ä¸åçæ´ç¸ä¼¼,å¦ä¸å¾ï¼</p> 268<p><img src="/images/embed1.jpeg" alt="Embeddings"></p> 269<p><img src="/images/embed2.jpeg" alt=" Embeddings Evaluation Tool"></p> 270<h2 id="User-type-amp-Listing-type-Embeddings"><a href="#User-type-amp-Listing-type-Embeddings" class="headerlink" title="User-type & Listing-type Embeddings"></a>User-type & Listing-type Embeddings</h2><p>ç¨ç¨æ·é¢è®¢åºåæ¥è®ç»Embeddingï¼å¯ä»¥æè·cross-marketçç¸ä¼¼åº¦</p> 271<p>ä¸è¿è¿æ ·å¦ä¹ æä»¥ä¸ææï¼</p> 272<ul> 273<li>é¢è®¢æ¯ä¸ªä½é¢äºä»¶ï¼booking sessionsæ°æ®ç¸è¾äºclick sessionså°å¾å¤ã</li> 274<li>许å¤ç¨æ·åªé¢è®¢ä¸æ¬¡ï¼sessioné¿åº¦ä¸º1æ¯æ æ³è¢«å¦ä¹ ç</li> 275<li>对äºä»»ä½ä¸ä¸ªå®ä½ï¼è¦å¦å°ææä¹çembeddingéè¦å®ä½åºç°å¨æ°æ®ä¸è³å°5-10次</li> 276<li>ç¨æ·ä¸¤æ¬¡é¢è®¢é´éæ¶é´å¾é¿çè¯ï¼ç¨æ·èªèº«å好å¯è½ä¼æ¹åæ¯å¦å 为èä¸çæ¹åèå¯¹ä»·æ ¼ææåº¦æ¹å</li> 277</ul> 278<p>è§£å³æ¹æ¡ï¼å¼å ¥Listing_type embeddings</p> 279<p>listing Embeddings æ¯è¾éåshort-term, in sessionåºæ¯, peronalizationè¿éè¦åºäºé¿æåå²ç个æ§åï¼ç¨æ·æ¾ç»å¨çº½çº¦å伦æ¦é¢è®¢è¿ï¼ç°å¨å¨æç´¢æ´æç¶ãè¿å°±éè¦å»æ¾å°ä¸åmarketä¹é´çç¸ä¼¼æ§ï¼éè¿ç¨æ·çbooked listå¯ä»¥æè·æ¤ä¿¡æ¯ã</p> 280<p>ç»å®ä¸ä¸ªlisting_idï¼æ ¹æ®å®çä½ç½®ï¼ä»·æ ¼ï¼ç±»åï¼å®¹éï¼åºæ°çè¿è¡è§åæ å°ç¨æ°æ®é©±å¨çæ¹å¼æå¤§åæ¯ä¸ªlisting_type æ¡¶çè¦çèå´</p> 281<p>使ç¨Listing_type embeddingsæ¥è§£å³è¿ä¸ªé®é¢ãç»å®ä¸ä¸ªlisting_idï¼æ ¹æ®å®çä½ç½®ï¼ä»·æ ¼ï¼ç±»åï¼å®¹éï¼åºæ°çè¿è¡è§åæ å°ï¼ç¨æ°æ®é©±å¨çæ¹å¼æå¤§åæ¯ä¸ªlisting_type æ¡¶çè¦çèå´ãAirbnbçæ å°tableå¦ä¸ï¼<br><img src="/images/map_table.png" alt="map_table"></p> 282<h3 id="Training-Procedure"><a href="#Training-Procedure" class="headerlink" title="Training Procedure"></a>Training Procedure</h3><p><strong>æ¤å¤æè§å¾æ¯ä¸ä¸ªæ¯è¾ææ³æ³çç¹ï¼å°±æ¯å¦ä¹ å¨åä¸åé空é´ä¸çuser_typeålisting_type embedding</strong></p> 283<p>$s _ { b } = \left( u _ { t y p e _ { 1 } } l _ { t y p e _ { 1 } } , \ldots , u _ { t y p e _ { M } } l _ { t y p e _ { M } } \right) \in \mathcal { S } _ { b }$ æ¯ç¨æ·é¢è®¢åºåæ°æ®éï¼å°user_type, list_typeç»åå¨ä¸èµ·ï¼åæ¼æä¸ä¸ªåºåå³ç¸å½äºæä»ä»¬ç¡®å®å°äºä¸ä¸ªç©ºé´ä¸ã<br>äºæ¯å¨skip-gramä¸ï¼ $user_type ( u _ { t } )$为ä¸å¿é¡¹æ¶ï¼ç®æ 彿°ä¸ºï¼</p>
284<script type="math/tex; mode=display">\underset { \theta } { \operatorname { argmax } } \sum _ { \left( u _ { t } , c \right) \in \mathcal { D } _ { b o o k } } \log \frac { 1 } { 1 + e ^ { - v _ { c } ^ { \prime } \mathbf { v }_{ u _ { t }} } } + \sum _ { \left( u _ { t } , c \right) \in \mathcal { D } _ { n e g } } \log \frac { 1 } { 1 + e ^ { \mathbf { v } _ { c } ^ { \prime } \mathbf { v } _ { u_{t}} } }</script>
284<p> $listing_type ( l _ { t } )$为ä¸å¿é¡¹æ¶ï¼ç®æ 彿°ä¸ºï¼</p>
285<script type="math/tex; mode=display">\underset { \theta } { \operatorname { argmax } } \sum _ { \left( l_ { t } , c \right) \in \mathcal { D } _ { b o o k } } \log \frac { 1 } { 1 + e ^ { - v _ { c } ^ { \prime } \mathbf { v }_{ l _ { t }} } } + \sum _ { \left( u _ { t } , c \right) \in \mathcal { D } _ { n e g } } \log \frac { 1 } { 1 + e ^ { \mathbf { v } _ { c } ^ { \prime } \mathbf { v } _ { l_{t}} } }</script>
285<p><img src="/images/type_embedding.png" alt="type embeddings"></p> 286<h4 id="Explicit-Negatives-for-Rejections"><a href="#Explicit-Negatives-for-Rejections" class="headerlink" title="Explicit Negatives for Rejections"></a>Explicit Negatives for Rejections</h4><p>ä¸åä¸è¬çåºæ¯éåªèèç¨æ·å好ï¼�Airbnbçè¿ä¸ªåºæ¯æ¢è¦èèç¨æ·å好ä¹è¦èè主人çå好ãå¼å ¥æ¿ä¸»æç»è¡ä¸ºï¼ä½ä¸ºæ¿ä¸»æ¹çæ¾ç¤ºåé¦ãæç§å±é¢ä¸ä¼ä½¿å¯¹ç¨æ·ä¸ææçæ¿ä¸»åè¯åä¸è¬çå®¢äººèæ¢ï¼åå°å®¢äººè¢«æç»å çï¼æé«é¢å®æ¦çã<br>对äºè¢«æç»çåºåï¼æä»¬ä¼åçç®æ 彿°åå«å为ï¼</p>
287<script type="math/tex; mode=display">\underset { \theta } { \operatorname { argmax } } \sum _ { \left( u _ { t } , c \right) \in \mathcal { D } _ { b o o k } } \log \frac { 1 } { 1 + e ^ { - v _ { c } ^ { \prime } \mathbf { v }_{ u _ { t }} } } + \sum _ { \left( u _ { t } , c \right) \in \mathcal { D } _ { n e g } } \log \frac { 1 } { 1 + e ^ { \mathbf { v } _ { c } ^ { \prime } \mathbf { v } _ { u_{t}} } } + \sum _ { \left( u _ { t } , l_{t} \right) \in \mathcal { D } _ { reject } } \log \frac { 1 } { 1 + e ^ { \mathbf { v } _ { l_{t} } ^ { \prime } \mathbf { v } _ { u_{t}} } }</script>
287<p>and</p>
288<script type="math/tex; mode=display">\underset { \theta } { \operatorname { argmax } } \sum _ { \left( l_ { t } , c \right) \in \mathcal { D } _ { b o o k } } \log \frac { 1 } { 1 + e ^ { - v _ { c } ^ { \prime } \mathbf { v }_{ l _ { t }} } } + \sum _ { \left( u _ { t } , c \right) \in \mathcal { D } _ { n e g } } \log \frac { 1 } { 1 + e ^ { \mathbf { v } _ { c } ^ { \prime } \mathbf { v } _ { l_{t}} } } + \sum _ { \left( l _ { t } , u_{t} \right) \in \mathcal { D } _ { reject } } \log \frac { 1 } { 1 + e ^ { \mathbf { v } _ { u_{t} } ^ { \prime } \mathbf { v } _ { u_{t}} } }</script>
288<h2 id="EXPERIMENTS"><a href="#EXPERIMENTS" class="headerlink" title="EXPERIMENTS"></a>EXPERIMENTS</h2><p>è¿æ®µä¸»è¦ä»ç»äºä¸è®ç»å离线è¯ä¼°çç»èï¼ålisting Embeddings卿¿é´ç¸ä¼¼æ¨èä¸çåºç¨ï¼ä»¥åå¦ä½å°embeddingå¤ç为ç¹å¾æä¾ç»Search Ranking Modelã</p> 289<h3 id="Training-Listing-Embeddings"><a href="#Training-Listing-Embeddings" class="headerlink" title="Training Listing Embeddings"></a>Training Listing Embeddings</h3><ol> 290<li>30åé䏿´»è·åå</li> 291<li>ç§»é¤å¶ååçç¹å»ï¼å¦åçå°äº30sï¼</li> 292<li>åªä¿ç>=2 çsessions</li> 293<li>å¿åsessionï¼ç§»é¤userid</li> 294</ol> 295<p>ç¹å»ä¼è¯å为 exploratory sessions & booked sessionsãè®ç»æ°æ®ä¸booked sessionsè¿éæ ·5åè¾¾å°æå¥½ææ.</p> 296<h4 id="Setting-up-Daily-Training"><a href="#Setting-up-Daily-Training" class="headerlink" title="Setting up Daily Training"></a>Setting up Daily Training</h4><ul> 297<li>over multiple months</li> 298<li>æ¯å¤©å¼å ¥æ°ä¸å¤©ï¼å»æææ©ä¸å¤©çæ°æ®</li> 299<li>éæ°è®ç»æ¯è¦æ¯å¢éè®ç»ç°æçvectorææå¥½ã</li> 300</ul> 301<p>模åä¸ï¼day-to-day vectorçååä¸ä¼å¯¼è´çç¾ï¼å 为æç»ä½¿ç¨çæ¯embeddingsé´çç¸ä¼¼åº¦èéå ·ä½çvector</p> 302<p><strong>è¶ å</strong></p> 303<ul> 304<li>dimensionality 32</li> 305<li>window size 5</li> 306<li>iterations 10.</li> 307</ul> 308<h4 id="Offline-Evaluation-of-Listing-Embeddings"><a href="#Offline-Evaluation-of-Listing-Embeddings" class="headerlink" title="Offline Evaluation of Listing Embeddings"></a>Offline Evaluation of Listing Embeddings</h4><p>ä»é¢è®¢æ¿é´å¼å§å溯17个ç¹å»ï¼ç»è®¡é¢è®¢æ¿é´å¨å¯¹åºç¹å»æ¶å»çå¹³åä½ç½®ï¼æ¯è¾äºå¦ä¸ä¸ä¸ªçæ¬ï¼</p> 309<ol> 310<li>d32: trained using (3), </li> 311<li>d32 book: trained with bookings<br>as global context (4) </li> 312<li>d32 book + neg: trained with bookings<br>as global context and explicit negatives from same market (5)</li> 313</ol> 314<p>æç»å¯ä»¥åç°<code>d32 book + neg</code>æææå¥½ï¼å ·ä½å¦ä¸å¾ï¼</p> 315<p><img src="/images/offline_eval_emb.png" alt="Offline evaluation of Listing Embeddings"></p> 316<h4 id="Similar-Listings-using-Embeddings"><a href="#Similar-Listings-using-Embeddings" class="headerlink" title="Similar Listings using Embeddings"></a>Similar Listings using Embeddings</h4><p>Airbnb home listing pageæç¸ä¼¼æ¿æºï¼ä¼å±ç¤ºç¸åå¯ç¨æ¥æä¸ç±»ä¼¼çæ¿æº,ç¨ä½å¼¦ç¸ä¼¼åº¦ï¼æè¿é»ï¼åtop Kã</p> 317<p>A\B Testæ¾ç¤ºï¼CTRæ´ä½æå21%ï¼æå ¥ä½æ¥æçæå23%ï¼æ æ¥ææå20%ï¼ï¼å¨ç¸ä¼¼æ¿æºå¤è¿è¡æç»é¢å®çæå4.9%</p> 318<h3 id="Real-time-personalization-in-Search-Ranking-using-Embeddings"><a href="#Real-time-personalization-in-Search-Ranking-using-Embeddings" class="headerlink" title="Real time personalization in Search Ranking using Embeddings"></a>Real time personalization in Search Ranking using Embeddings</h3><p>è®ç»æ°æ® $D_{s} = (x_{i} ,y_{i}), i = 1â¦K$ï¼ Kæ¯æç´¢åè¿ålistingçåºå·ï¼$x$ç¹å¾vectorï¼$y$æ¯label</p> 319<ul> 320<li>y = 1 booked</li> 321<li>y = 0.25 contacted but no booked</li> 322<li>y = -0.4 host rejected</li> 323<li>y = 0.01 clicked</li> 324<li>y = 0 just viewed</li> 325</ul> 326<p>æ¯æ¬¡ä½¿ç¨æè¿30å¤©çæ°æ®è®ç»æ°çranking model</p> 327<p>ç¹å¾å ·ä½å¦ä¸ï¼</p> 328<blockquote> 329<p>Feature vector xi for the i-th listing result consists of listing features,<br>user features, query features and cross-features. Listing<br>features are features associated with the listing itself, such as price<br>per night, listing type, number of rooms, rejection rate, etc. Query<br>features are features associated with the issued query, such as number<br>of guests, length of stay, lead days, etc. User features are features<br>associated with the user who is conducting the search, such as<br>average booked price, guest rating, etc. Cross-features are features<br>derived from two or more of these feature sources: listing, user,<br>query. Examples of such features are query listing distance: distance<br>between query location and listing location, capacity fit: difference<br>between query number of guests and listing capacity, price difference:<br>difference between listing price and average price of userâs<br>historical bookings, rejection probability: probability that host will<br>reject these query parameters, click percentage: real-time memorization<br>feature that tracks what percentage of userâs clicks were<br>on that particular listing, etc. The model uses approximately 100<br>features. For conciseness we will not list all of them.</p> 330</blockquote> 331<p>�ä»ä»¬ä½¿ç¨äº<code>pairwise regression</code>çæè·¯å»�è®ç»äºä¸ä¸ª<code>GBDT</code>model,�使ç¨ç<a href="https://github.com/yarny/gbdt" target="_blank" rel="noopener">æ¯æLambda Rankçgbdt</a>,ç¨NDCGè¯ä¼°ã</p> 332<p><strong>Embedding Features for Search Ranking</strong><br>| Feature Name | Feature Name |<br>|âââââ|:ââââââ-:|<br>|EmbClickSim| similarity to clicked listings in Hc<br>|EmbSkipSim| similarity to skipped listings Hs<br>|EmbLongClickSim| similarity to long clicked listings Hlc<br>|EmbWishlistSim| similarity to wishlisted listings Hw<br>|EmbInqSim| similarity to contacted listings Hi<br>|EmbBookSim| similarity to booked listing Hb<br>|EmbLastLongClickSim| similarity to last long clicked listing<br>|UserTypeListingTypeSim| user type and listing type similarity</p> 333<h4 id="User-type-amp-Listing-type-Embedding-Features"><a href="#User-type-amp-Listing-type-Embedding-Features" class="headerlink" title="User-type & Listing-type Embedding Features"></a>User-type & Listing-type Embedding Features</h4><ul> 334<li>500K user types</li> 335<li>500K listing type</li> 336<li>50 million user booking sessions</li> 337</ul> 338<p><strong>Embedding Features Coverage and Importances</strong></p> 339<div class="table-container"> 340<table> 341<thead> 342<tr> 343<th>Feature Name</th> 344<th style="text-align:center">Coverage</th> 345<th>Feature Importance</th> 346</tr> 347</thead> 348<tbody> 349<tr> 350<td>EmbClickSim</td> 351<td style="text-align:center">76.16%</td> 352<td>5/104</td> 353</tr> 354<tr> 355<td>EmbSkipSim</td> 356<td style="text-align:center">78.64%</td> 357<td>8/104</td> 358</tr> 359<tr> 360<td>EmbLongClickSim</td> 361<td style="text-align:center">51.05%</td> 362<td>20/104</td> 363</tr> 364<tr> 365<td>EmbWishlistSim</td> 366<td style="text-align:center">36.50%</td> 367<td>47/104</td> 368</tr> 369<tr> 370<td>EmbInqSim</td> 371<td style="text-align:center">20.61%</td> 372<td>12/104</td> 373</tr> 374<tr> 375<td>EmbBookSim</td> 376<td style="text-align:center">8.06%</td> 377<td>46/104</td> 378</tr> 379<tr> 380<td>EmbLastLongClickSim</td> 381<td style="text-align:center">48.28%</td> 382<td>11/104</td> 383</tr> 384<tr> 385<td>UserTypeListingTypeSim</td> 386<td style="text-align:center">86.11%</td> 387<td>22/104</td> 388</tr> 389</tbody> 390</table> 391</div> 392<h4 id="Online-Experiment-Results-Summary"><a href="#Online-Experiment-Results-Summary" class="headerlink" title="Online Experiment Results Summary"></a>Online Experiment Results Summary</h4><p>å¼å ¥ embedding featuresåï¼NDCUæå2.27%ï¼booking DCUå¢é¿2.58%</p> 393<h2 id="æ¶è·-amp-åæ"><a href="#æ¶è·-amp-åæ" class="headerlink" title="æ¶è·&åæ"></a>æ¶è·&åæ</h2><ul> 394<li>æä»¬èªå·±çend to end模åæäº§ççembeddingæ¯å¦è®ç»çè¶³å¤å åææ</li> 395<li>å°è¯å¼å ¥ä»¥å ¶ä»é»è¾è®ç»çembeddings<br>ä¸ä¸å®ç´æ¥å¼å ¥embeddingï¼è®ºæä¸å¼å ¥çå®é æ¯ç¸ä¼¼åº¦</li> 396<li>è®ç»åä¸åé空é´ä¸çembeddingæ¯å¾å¥½çæ³æ³ï¼å°æ¬æ¥ä¸åçembeddingè¿è¡äºç»ä¸</li> 397<li>åå¹³å°èªèº«åºæ¯ãéæ±è¿è¡åççç»å</li> 398</ul> 399 400 </section> 401 402 403 404<section class="post-comments"> 405 <div id="disqus_thread"></div> 406
406<script type="text/javascript"> 407 var disqus_shortname = 'wd1900'; 408 /* * * DON'T EDIT BELOW THIS LINE * * */ 409 (function() { 410 var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; 411 dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js'; 412 (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); 413 })(); 414 </script>
414 415 <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> 416</section> 417 418 419 420 421</article> 422 423 424 <footer class="footer"> 425 426 <span class="footer__copyright">© 2014-2015. | ç±<a href="https://hexo.io/">Hexo</a>强åé©±å¨ | 主é¢<a href="https://github.com/someus/huno">Huno</a></span> 427 428</footer> 429 </div> 430 </div> 431 432 <!-- js files --> 433
433<script src="/js/jquery.min.js"></script>
433 434
434<script src="/js/main.js"></script>
434 435
435<script src="/js/scale.fix.js"></script>
435 436 437 438 439 440
440<script type="text/javascript" src="//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
440 441
441<script type="text/javascript"> 442 $(document).ready(function(){ 443 MathJax.Hub.Config({ 444 tex2jax: {inlineMath: [['[latex]','[/latex]'], ['\\(','\\)']]} 445 }); 446 }); 447 </script>
447 448 449 450 451 452
452<script src="/js/awesome-toc.min.js"></script>
452 453
453<script> 454 $(document).ready(function(){ 455 $.awesome_toc({ 456 overlay: true, 457 contentId: "post-content", 458 }); 459 }); 460 </script>
460 461 462 463 464 465 <!--kill ie6 --> 466<!--[if IE 6]> 467
467<script src="//letskillie6.googlecode.com/svn/trunk/2/zh_CN.js"></script>
467 468<![endif]--> 469
470<script type="text/x-mathjax-config"> 471 MathJax.Hub.Config({ 472 tex2jax: { 473 inlineMath: [ ["$","$"], ["\\(","\\)"] ], 474 skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code'], 475 processEscapes: true 476 } 477 }); 478 MathJax.Hub.Queue(function() { 479 var all = MathJax.Hub.getAllJax(); 480 for (var i = 0; i < all.length; ++i) 481 all[i].SourceElement().parentNode.className += ' has-jax'; 482 }); 483</script>
vendor: 1 bytes, line 483
483
484<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML"></script>
484 485 486</body> 487</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.