<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">A News Recommender Engine with a Killer Sequence</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Pieter</forename><surname>Bons</surname></persName>
							<email>pieter.bons@ortec.com</email>
							<affiliation key="aff0">
								<orgName type="institution">ORTEC</orgName>
								<address>
									<addrLine>-Houtsingel 5</addrLine>
									<postCode>2719 EA</postCode>
									<settlement>Zoetermeer</settlement>
									<country key="NL">The Netherlands</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Nick</forename><surname>Evans</surname></persName>
							<email>nick.evans@ortec.com</email>
							<affiliation key="aff0">
								<orgName type="institution">ORTEC</orgName>
								<address>
									<addrLine>-Houtsingel 5</addrLine>
									<postCode>2719 EA</postCode>
									<settlement>Zoetermeer</settlement>
									<country key="NL">The Netherlands</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Peter</forename><surname>Kampstra</surname></persName>
							<email>peter.kampstra@ortec.com</email>
							<affiliation key="aff0">
								<orgName type="institution">ORTEC</orgName>
								<address>
									<addrLine>-Houtsingel 5</addrLine>
									<postCode>2719 EA</postCode>
									<settlement>Zoetermeer</settlement>
									<country key="NL">The Netherlands</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Timo</forename><surname>Van Kessel</surname></persName>
							<email>timo.vankessel@ortec.com</email>
							<affiliation key="aff0">
								<orgName type="institution">ORTEC</orgName>
								<address>
									<addrLine>-Houtsingel 5</addrLine>
									<postCode>2719 EA</postCode>
									<settlement>Zoetermeer</settlement>
									<country key="NL">The Netherlands</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">A News Recommender Engine with a Killer Sequence</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">437DCC47BD683DE71F48216204025ADE</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T20:26+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>Recommender Systems</term>
					<term>News Recommender Engine</term>
					<term>Graph Database</term>
					<term>Sequence</term>
					<term>Evaluation</term>
					<term>Collaborative filtering</term>
					<term>Real-time recommendations</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Our submission to the CLEF NewsREEL 2107 News Recommendation Evaluation Lab attempts to apply the concept of storytelling to the participating news domains. The goal is to guide the user through a series of related articles where each transition from one article to the next provides an opportunity to steer the storyline in a certain direction using recommendations. The approach employs collaborative filtering to discover an optimal sequence of articlesa killer sequence. The choices that were made by users reading two or more successive articles were stored in the graph database Neo4J. The recommendations were generated by querying this database for the most popular historic sequences containing the concerning article. For articles that were not yet part of any sequence we generated the recommendations from a dynamic set of the most recently changed publications for that domain. The performance of our combined algorithm was approximately 79% better for Click Through Rate (CTR) than the competition baseline. We investigated whether this top performance was due to unwanted behavior of the recommender, such as only answering on certain domains or times, but could not conclude that this was the case.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Introduction</head><p>The holy grail for (online) publishers is reader engagement. The more engaging the user's experience, the more likely that they will come back, increasing their loyalty to the domain during each visit until they may even become brand ambassadors. Once the consumer has crossed the barrier to enter the domain, the goal is to keep him there as long as possible. One of the important strategies to achieve this is storytelling. On the content side this requires rich and interactive media to retain the reader's attention. This can be reinforced by artificial intelligence and automation tools providing relevant personalized content to individual readers. Many types of algorithms could be considered for this job. However, traditional news recommendation algorithms rarely consider the time sequence characteristic of user browsing behaviors. Also, using strategies from other domains such as movies or music offers no solution as in these cases the order in which items are consumed is hardly relevant, while this is crucial for news articles which are much less independent from each other. Text mining may be employed to classify the articles into topics or to calculate similarities but this approach is also symmetric under the order in which articles are read.</p><p>To tackle this subtle issue, we have chosen to go with a collaborative filtering approach where the wisdom of the crowds will provide the information in which order the articles are best presented. The collective behavior of the users will uncover dominant sequences of articles that together form a powerful story. This sequence can then be suggested to new users via the recommendations causing them to stay more engaged and consume more content from the domain.</p><p>There is some related work which uses the timestamps of user-item interaction events <ref type="bibr" target="#b10">[11,</ref><ref type="bibr" target="#b12">13]</ref>. We have not based our work specifically on these papers but followed a pragmatic approach based on our experience in the online news industry.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Approach</head><p>The Living Lab Evaluation <ref type="bibr" target="#b1">[2]</ref> was performed using the open recommendation platform (ORP) provided by plista. By redirecting some of the live traffic, the ORP allows participants to test algorithms in a real environment. There are four types of events that are sent from ORP: Recommendation requests, Impressions, Item Updates, and Error Messages (such as timeout).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Fig. 1. Data processing infrastructure</head><p>Our infrastructure choices were dictated by two main requirements: 1) the system should answer recommendation requests as fast as possible, and 2) the system should be extensible and support many different algorithms running in parallel. In order to satisfy both these requirements it was necessary to decouple the processing of recommendation requests from the processing of impressions, clicks and item updates. We settled on Apache Kafka <ref type="bibr" target="#b0">[1]</ref> to implement this decoupling. As can be seen in Errore. L'origine riferimento non è stata trovata. all requests are first processed by a Node.js <ref type="bibr" target="#b8">[9]</ref> server. All requests are stored in MongoDB <ref type="bibr" target="#b2">[3]</ref> for tracking and debugging. If the request is a recommendation request, the recommendations are gathered and returned. If the request is an impression, a click or an item update, the request is published to a Kafka topic. The recommendation algorithms can subscribe to this topic and process the necessary information as it becomes available. This decoupling ensures that the time to answer a recommendation request is not affected by the number or nature of the recommendation algorithms. We found that a single Node.js process was enough to adequately handle all the recommendation requests (note that Node.js processes are always single threaded).</p><p>The setup we used for this contest relied only on two recommendation algorithms: most recent (the baseline) and killer sequence. Recommendations were taken from killer sequence if available and otherwise from most recent. In the future, once more recommendation algorithms have been implemented, we would like to experiment with a meta-algorithm for selecting the algorithm from which recommendations should be used for a particular request. Therefore, our infrastructure already takes multiple algorithms into account.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.1">Killer sequence algorithm</head><p>For each new item update event an article node is generated in the Neo4J graph database <ref type="bibr" target="#b9">[10]</ref>. A flag is also set to indicate whether the article is available for recommendations. This flag can be altered by later item updates with the same id.</p><p>Based on the impression events we keep track of user sessions. When an impression event is received, a new session is created containing the user ID and the article ID in the REDIS <ref type="bibr" target="#b3">[4]</ref> database with an expiration time of 60 seconds. When a second impression with the same id is handled within these 60 seconds, the session is updated with the new article ID and a relation is set in Neo4J between the first and the second article nodes signifying that these two articles were read in this specific order by the user. The sequence can grow to as many articles as the user consumes as long as there is less than 60 seconds between the events so the session does not expire. The replies to the recommendation requests are generated by querying the Neo4J graph database for the strongest sequence containing the concerning article. The top X results are returned and the ID's are sent to the ORP. We employ a breadth-first search of only one layer deep because it could be undesirable to skip an article in the sequence that forms a news story. To make the recommendation more personalized, we would like to incorporate the historical sequence of a user into the search but in the current implementation this information is no longer available since the we store the sum of all interactions and not the individual actions.</p><p>When the graph query does not return any recommendations because the article is not yet part of a sequence, a fallback recommendation is used randomly taken from a dynamic set of the most recently changed articles per domain, as implemented in the example code provided for the challenge.</p><p>The expiration time of 60 seconds was chosen arbitrarily and we expect that optimizing it will improve the performance of the algorithm.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Results and analysis</head><p>By participating in the CLEF NewsREEL 2107 Task 1 we were able to test our algorithm in a real-life environment and compare our algorithm to other algorithms. Originally, multiple test periods were planned and a single evaluation period was available at the end. However, due to technical issues on both sides, given by corporate environments, we started straight into the final evaluation period.</p><p>In Table <ref type="table" target="#tab_0">1</ref> we show the overall results of CLEF NewsREEL 2107 Task 1. Our algorithm is ORLY_KS and is shown in bold, while the baseline algorithm is shown as BL2Beat. Our algorithm performs 79% better than the baseline, and scores the highest CTR of all algorithms with more than 1000 widget impressions. Overall, the CTRs are higher than during CLEF NewsREEL 2016, where the highest CTR reported was 1.23% <ref type="bibr" target="#b5">[6]</ref>. One recommendation widget could contain multiple items, with the num-bers of items not always being the same. Only one recommendation item per page could be clicked for a refresh to trigger, hence the CTR for items is always lower than for widgets. Because the item/widget ratio for our recommender is the lowest of all recommenders, the per item CTR is even slightly higher being 82% better than the baseline. However, the amount of widgets impressions for our recommender is quite a bit lower than the baseline and some other algorithms.</p><p>From previous years of CLEF NewsREEL (e.g. <ref type="bibr" target="#b7">[8]</ref>) it is known that CTR ratios can differ hugely between different times and different domains. Therefore, answering a selective number of recommendation requests or having a different sampling of the available requests could make the CTR ratios incomparable. We will therefore focus our analysis on finding out if we inadvertently achieved a high CTR by answering selectively. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1">Response time analysis</head><p>One of the properties of a good real-time news recommendation system is having a fast response time, preferably within 100 milliseconds. Also, since the ORP might drop recommendations after 100 ms, we decided to log the performance of our response times. The results are shown on a density plot in Fig. <ref type="figure">3</ref>. In 99.9% of the cases we responded within 90 milliseconds, and on average we responded in 7 milliseconds. Given that our recommender was located at the same hosting provider (Hetzner Online GmbH), 10 milliseconds is more than enough for transfer times. Therefore it is very unlikely that response time problems played a role in having less widget recommendations.</p><p>Fig. <ref type="figure">3</ref>. Density plot of response times for our recommender during evaluation on a log-scale. Data gathering starts during the contest at 2017-04-28.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2">Weekly results and error reports</head><p>ORP provided us with an API to query the weekly results during the contest. The results are shown in Table <ref type="table" target="#tab_1">2</ref>. While our error ratios (in bold) for both weeks are higher than most recommenders, other recommenders like RIADI_nehyb have even higher error ratios but are able to produce more impressions. The most likely explanation for the connection problems was that our corporate policy asked for a firewall of the TCP port in case an insecure connection was used. As the connection was insecure, the port was firewalled and whitelisted only certain IP addresses. However, in week 1 certain IP addresses were not whitelisted, while in the second week servers were added by plista, which were whitelisted only after a small delay.</p><p>In Table <ref type="table" target="#tab_2">3</ref> we show the error notifications received by our server. The amount of content errors received exactly matches with 1415 instances. Probably, these content errors were caused by a deploy on 2017-06-28. Strangely, connection errors also seem to match somewhat, while it is usually impossible for a server to communicate such an error in case of a firewall blocking the connection. The number of timeouts errors is negligible.</p><p>Overall, the number of errors is still quite low and does not prevent other recommenders from achieving high numbers of impressions. Also, the errors are not only related to recommendation requests, but also to other requests. We therefore assume that the impact from these errors was quite low.  </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.3">Returning the wrong (number of) recommendations</head><p>A possible cause for not having the lowest number of recommendation items per widget is that our recommender simply does not return enough recommendations. As we stored almost all recommendations our recommender did in MongoDB, it was possible to investigate these. We also record which algorithm did the recommendation. In Table <ref type="table" target="#tab_3">4</ref> the results of this analysis are shown. It is clearly visible that something went wrong during a deploy with a re-implementation of the baseline recommender (Most recent) in Redis. The idea of this re-implementation was to be able to restart the recommender without losing state, however it contained an off-by-one error. Therefore, it usually returned a recommendation more than requested. We however expect that returning one recommendation too many is not a huge problem, as ORP usually requests more recommendations than it needs anyway. Most likely the extra recommendation was simply ignored.</p><p>It is also shown that our killer sequence recommender more frequently gives less recommendation than requested. In some cases it handed out 0 recommendations which was fixed later on and probably explains the difference between outgoing and incoming recommendations. In case both recommenders cannot obtain a result, no result was returned. In case the killer sequence recommender had fewer than requested recommendations, we did not add results from the baseline recommender. This might explain why our algorithm had the lowest item/widget ratio. In case an article is received from ORP it also contains a flag indication whether this article is recommendable. Articles with a flag other than 0 are not considered recommendable, however the baseline implementation ignores this flag when recommending, in both the Java and Node.js versions of the example code supplied by the organization. Also it does not check whether it recommends the same article multiple times.</p><p>In Table <ref type="table">5</ref> we show an analysis of whether a recommendation contains an unrecommendable article or a duplicated recommendation. Especially the baseline recommender almost always does this. This is no surprise, as it does not check the commendable flag and returns from a set of recently updated articles. Out of 698340 received article updates, 460743 (66%) contain an non-recommendable article. If selecting 6 or 7 from these updates the probability of getting a non-recommendable article is quite high. Also, it is likely that the same article is updated multiple times within a short period, resulting in duplicate recommendations in 22% of the cases.</p><p>While our killer sequence never returned duplicates, it also failed to check the status flag which we did store in Neo4J. Therefore, it did return non-recommendable articles in 23% of the cases.</p><p>All in all there is a huge room for improvement in returning valid recommendation results. However, given that the baseline recommender makes the same mistakes a lot of the time, we do not believe this is the cause for having less widget impressions. Table <ref type="table">5</ref>. Different situations for different sub-algorithms, percentages are for total recommendations given by the sub-algorithm. A recommendation is considered ok if it has only recommendations for articles with status=0 and no duplicates. Ok &lt;6 means that there are less than 6 recommendations returned, while Ok &gt;6 means there are more than 6 recommendations returned. Given that almost all requests were for 6 recommendations, Ok 6 with 6 returned recommendations, and no invalid or duplicate articles is probably preferable. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>3.4</head><p>So why did we do less widget impressions?</p><p>The above analysis did not yield a conclusive result into the cause of having fewer impressions. Also, some recommenders in Table <ref type="table" target="#tab_0">1</ref> do significantly more impressions than the baseline recommender does. We therefore assume that the variation of impressions between different recommenders is probably also the result of some nonrandom preference within the ORP platform.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">Discussion</head><p>Currently the killer sequence algorithm behaves the same for every user. Given that not all users will have the same preferences, it is probably beneficial to personalize the algorithm towards certain user behavioral patterns. For example, instead of giving all follow relations the same weight, it is likely beneficial to give follow relations of similar users a higher weight. This would of course require a metric of similarity between users or a grouping of the users, where relations from the same user group are given more weight for the current user. We expect that a personalized version of the killer sequence will increase the performance.</p><p>It is also likely that trends are not static over time. Currently we do not take into account temporal trends in the data, but it is likely that it would be better to take the time when paths occurred into account. For example, it would be possible to use a decay function which gives less weight to paths that have taken place a long time ago.</p><p>In many machine learning problems, an ensemble multiple algorithms performs better than a single algorithm <ref type="bibr" target="#b5">[6]</ref>. Our infrastructure already takes into account the possibility of using an ensemble of algorithms and using a meta-algorithm, however currently it uses just two algorithms and a very simple meta-algorithm. This of course offers many possibilities for using a better ensemble.</p><p>Due to the test setup, it was unfortunately impossible to track which sub-algorithm leaded to which results. In the world of Real Time Bidding <ref type="bibr" target="#b11">[12]</ref>, it is commonplace to have a unique identifier for a certain impression, which is used throughout the whole interaction, for example also when an impression is clicked. In this case it would have been quite beneficial for the evaluation to have both a unique identifier, and the recommender used to give the impression as attributes in the protocol. As this was not the case, we can only estimate the performance of the Killer Sequence sub-algorithm. Fortunately our algorithm did not require a direct feedback loop of how well the recommendations where doing, as such would have been impossible. Debugging and click attribution would be greatly improved if a future version of the ORP supported attributes for unique identifiers.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">Conclusion</head><p>The CLEF NewsREEL 2107 Task 1 provided a unique opportunity to test our killer sequence recommender in a real-life situation, and compare the results with other recommenders. It turned out that our killer sequence recommender performed 79% better than the baseline recommender. This resulted in the top position among the recommenders with more than 1000 recommendations. That could have been caused due to bad behavior, such as only answering requests only for certain high CTR domains or times. We investigated whether this higher than expected performance was due to unwanted behavior of the recommender, but could not conclude that this was the case. Therefore, it appears that our algorithm performs very well in the test environment.</p><p>There are still many ideas left for improvement of the results. A future version of the recommender should avoid non-recommendable articles, duplicate articles within the recommendation, or returning fewer results than needed. Also, personalization of the killer sequence recommender and ensemble recommendation is expected to yield better results.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Fig. 2 .</head><label>2</label><figDesc>Fig. 2. A schematic overview of the event handling for the killer sequence algorithm.</figDesc><graphic coords="4,192.27,147.40,211.85,166.59" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0"><head></head><label></label><figDesc></figDesc><graphic coords="2,124.70,417.39,352.97,164.70" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head>Table 1 .</head><label>1</label><figDesc>Overall results of algorithms in CLEF NewsREEL 2107 Task 1 sorted by CTR.</figDesc><table><row><cell>Name</cell><cell>Clicks</cell><cell>Widgets</cell><cell>CTR</cell><cell>Items</cell><cell>ctrItem</cell><cell>Items /</cell><cell>% CTR</cell></row><row><cell></cell><cell></cell><cell>shown</cell><cell></cell><cell>shown</cell><cell></cell><cell>Widget</cell><cell>base-</cell></row><row><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell>line</cell></row><row><cell>Riadi_NV_01</cell><cell>12</cell><cell>443</cell><cell>2.709%</cell><cell>1380</cell><cell>0.8696%</cell><cell>3.1151</cell><cell>232%</cell></row><row><cell>ORLY_KS</cell><cell>896</cell><cell>42786</cell><cell>2.094%</cell><cell>130221</cell><cell>0.6881%</cell><cell>3.0435</cell><cell>179%</cell></row><row><cell>ody4</cell><cell>1139</cell><cell>72601</cell><cell>1.569%</cell><cell>230896</cell><cell>0.4933%</cell><cell>3.1803</cell><cell>134%</cell></row><row><cell>IRS5</cell><cell>58</cell><cell>3708</cell><cell>1.564%</cell><cell>11856</cell><cell>0.4892%</cell><cell>3.1974</cell><cell>134%</cell></row><row><cell>ody5</cell><cell>1268</cell><cell>81245</cell><cell>1.561%</cell><cell>255663</cell><cell>0.4960%</cell><cell>3.1468</cell><cell>133%</cell></row><row><cell>ody3</cell><cell>813</cell><cell>59227</cell><cell>1.373%</cell><cell>184052</cell><cell>0.4417%</cell><cell>3.1076</cell><cell>117%</cell></row><row><cell>ody2</cell><cell>875</cell><cell>63950</cell><cell>1.368%</cell><cell>199547</cell><cell>0.4385%</cell><cell>3.1204</cell><cell>117%</cell></row><row><cell>IT5</cell><cell>925</cell><cell>68582</cell><cell>1.349%</cell><cell>214922</cell><cell>0.4304%</cell><cell>3.1338</cell><cell>115%</cell></row><row><cell>Eins</cell><cell>817</cell><cell>61524</cell><cell>1.328%</cell><cell>191647</cell><cell>0.4263%</cell><cell>3.1150</cell><cell>114%</cell></row><row><cell>yl-2</cell><cell>747</cell><cell>60814</cell><cell>1.228%</cell><cell>192207</cell><cell>0.3886%</cell><cell>3.1606</cell><cell>105%</cell></row><row><cell>WIRG</cell><cell>600</cell><cell>49830</cell><cell>1.204%</cell><cell>154419</cell><cell>0.3886%</cell><cell>3.0989</cell><cell>103%</cell></row><row><cell>ody1</cell><cell>810</cell><cell>68768</cell><cell>1.178%</cell><cell>214406</cell><cell>0.3778%</cell><cell>3.1178</cell><cell>101%</cell></row><row><cell>BL2Beat</cell><cell>726</cell><cell>62052</cell><cell>1.170%</cell><cell>193014</cell><cell>0.3761%</cell><cell>3.1105</cell><cell>100%</cell></row><row><cell>RIADI_pn</cell><cell>879</cell><cell>77723</cell><cell>1.131%</cell><cell>244334</cell><cell>0.3598%</cell><cell>3.1437</cell><cell>97%</cell></row><row><cell>IL</cell><cell>813</cell><cell>79120</cell><cell>1.028%</cell><cell>249492</cell><cell>0.3259%</cell><cell>3.1533</cell><cell>88%</cell></row><row><cell>RIADI_nehyb</cell><cell>764</cell><cell>75535</cell><cell>1.011%</cell><cell>236322</cell><cell>0.3233%</cell><cell>3.1286</cell><cell>86%</cell></row><row><cell>Has logs</cell><cell>6</cell><cell>816</cell><cell>0.735%</cell><cell>2610</cell><cell>0.2299%</cell><cell>3.1985</cell><cell>63%</cell></row><row><cell>ody0</cell><cell>166</cell><cell>23023</cell><cell>0.721%</cell><cell>72599</cell><cell>0.2287%</cell><cell>3.1533</cell><cell>62%</cell></row><row><cell>RIADI_hyb</cell><cell>2</cell><cell>349</cell><cell>0.573%</cell><cell>1146</cell><cell>0.1745%</cell><cell>3.2837</cell><cell>49%</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_1"><head>Table 2 .</head><label>2</label><figDesc>Weekly results of algorithms in CLEF NewsREEL 2107 Task 1 sorted by overall CTR. Note that counts for both weeks are almost, but not precisely matched with overall results.</figDesc><table><row><cell>Name</cell><cell></cell><cell cols="2">Evaluation week 1</cell><cell></cell><cell></cell><cell></cell><cell cols="2">Evaluation week 2</cell></row><row><cell></cell><cell>clicks</cell><cell>im-</cell><cell cols="2">CTR Con-</cell><cell>Con-</cell><cell>clicks</cell><cell>im-</cell><cell>CTR Con-</cell><cell>Con-</cell></row><row><cell></cell><cell></cell><cell>pressi</cell><cell cols="2">nect</cell><cell>tent</cell><cell></cell><cell>pressi</cell><cell>nect</cell><cell>tent</cell></row><row><cell></cell><cell></cell><cell>ons</cell><cell cols="2">error</cell><cell>error</cell><cell></cell><cell>ons</cell><cell>error</cell><cell>error</cell></row><row><cell>Riadi_NV_01</cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell>12</cell><cell cols="2">443 2.709% 7204</cell><cell>4576</cell></row><row><cell>ORLY_KS</cell><cell cols="5">367 18930 1.939% 3836 1415</cell><cell cols="3">529 23931 2.211% 3355</cell><cell>0</cell></row><row><cell>ody4</cell><cell cols="3">571 36917 1.547%</cell><cell>583</cell><cell>0</cell><cell cols="3">560 35404 1.582%</cell><cell>465</cell><cell>0</cell></row><row><cell>IRS5</cell><cell cols="3">58 3708 1.564%</cell><cell>902</cell><cell>31</cell><cell></cell><cell></cell></row><row><cell>ody5</cell><cell cols="3">608 41515 1.465%</cell><cell>630</cell><cell>0</cell><cell cols="3">655 39449 1.660%</cell><cell>994</cell><cell>0</cell></row><row><cell>ody3</cell><cell cols="4">392 29983 1.307% 1113</cell><cell>0</cell><cell cols="3">417 29035 1.436%</cell><cell>531</cell><cell>0</cell></row><row><cell>ody2</cell><cell cols="3">457 32751 1.395%</cell><cell>624</cell><cell>0</cell><cell cols="3">416 30995 1.342%</cell><cell>489</cell><cell>0</cell></row><row><cell>IT5</cell><cell cols="3">438 33766 1.297%</cell><cell>498</cell><cell>12</cell><cell cols="3">482 34534 1.396%</cell><cell>466</cell><cell>8</cell></row><row><cell>Eins</cell><cell cols="3">405 32207 1.257%</cell><cell>867</cell><cell>0</cell><cell cols="3">411 29024 1.416%</cell><cell>109</cell><cell>0</cell></row><row><cell>yl-2</cell><cell cols="3">401 32572 1.231%</cell><cell>331</cell><cell>84</cell><cell cols="3">343 27891 1.230%</cell><cell>63</cell><cell>84</cell></row><row><cell>WIRG</cell><cell cols="4">316 27031 1.169% 4001</cell><cell>55</cell><cell cols="3">284 22882 1.241% 2595</cell><cell>1</cell></row><row><cell>ody1</cell><cell cols="3">413 35382 1.167%</cell><cell>590</cell><cell>0</cell><cell cols="3">397 33141 1.198%</cell><cell>499</cell><cell>0</cell></row><row><cell>BL2Beat</cell><cell cols="4">322 29535 1.090% 1740</cell><cell>402</cell><cell cols="3">405 32586 1.243%</cell><cell>548</cell><cell>0</cell></row><row><cell>RIADI_pn</cell><cell cols="3">409 37488 1.091%</cell><cell>334</cell><cell>13</cell><cell cols="3">470 40184 1.170%</cell><cell>93</cell><cell>0</cell></row><row><cell>IL</cell><cell cols="3">388 40345 0.962%</cell><cell>752</cell><cell>8</cell><cell cols="3">422 38526 1.095%</cell><cell>765</cell><cell>7</cell></row><row><cell>RIADI_nehyb</cell><cell cols="4">326 36414 0.895% 24847</cell><cell>578</cell><cell cols="3">437 38858 1.125%</cell><cell>969</cell><cell>46</cell></row><row><cell>Has logs</cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell>6</cell><cell cols="2">816 0.735%</cell><cell>12</cell><cell>0</cell></row><row><cell>ody0</cell><cell cols="4">103 12982 0.793% 17815</cell><cell>0</cell><cell cols="3">61 9828 0.621%</cell><cell>0</cell><cell>0</cell></row><row><cell>RIADI_hyb</cell><cell>2</cell><cell cols="3">349 0.573% 82787</cell><cell>0</cell><cell></cell><cell></cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_2"><head>Table 3 .</head><label>3</label><figDesc>Error codes received. Unfortunately, these can also occur outside of recommendation requests.</figDesc><table><row><cell>Error code</cell><cell>Constant</cell><cell>Count</cell></row><row><cell>455</cell><cell>ERRCODE_CONNECTION_FAILED</cell><cell>6658</cell></row><row><cell>442</cell><cell>ERRCODE_FORMAT_INVALID</cell><cell>1415</cell></row><row><cell>408</cell><cell>ERRCODE_CONNECTION_TIMEOUT</cell><cell>76</cell></row><row><cell>Total</cell><cell></cell><cell>8149</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_3"><head>Table 4 .</head><label>4</label><figDesc>Number of recommendations versus recommendation limit for different algorithms. Returning 7 recommendations is the result of an off-by-one bug.</figDesc><table><row><cell># rec's</cell><cell>0</cell><cell>1</cell><cell>2</cell><cell>3</cell><cell>4</cell><cell>5</cell><cell>6</cell><cell>7</cell><cell>Total</cell><cell>%</cell></row><row><cell>K. Sequence</cell><cell cols="6">526 2358 1384 1140 1114 929</cell><cell>66061</cell><cell></cell><cell>73512</cell><cell>42.93%</cell></row><row><cell>Most Recent</cell><cell></cell><cell>24</cell><cell>85</cell><cell>30</cell><cell>12</cell><cell>23</cell><cell cols="2">35141 62415</cell><cell>97730</cell><cell>57.07%</cell></row><row><cell>All Outgoing</cell><cell cols="10">526 2382 1469 1170 1126 952 101202 62415 171242 100.00%</cell></row><row><cell>All Incoming</cell><cell></cell><cell></cell><cell></cell><cell>8</cell><cell></cell><cell cols="2">8 172144</cell><cell></cell><cell>172160</cell><cell></cell></row></table></figure>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<title/>
		<author>
			<persName><forename type="first">Apache</forename><surname>Kafka</surname></persName>
		</author>
		<ptr target="https://kafka.apache.org/,lastaccesed" />
		<imprint>
			<date type="published" when="2017-06-01">2017/06/01</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Towards a living lab for information retrieval research and development</title>
		<author>
			<persName><forename type="first">L</forename><surname>Azzopardi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Balog</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">International Conference of the Cross-Language Evaluation Forum for European Languages</title>
				<meeting><address><addrLine>Heidelberg</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2011">2011</date>
			<biblScope unit="page" from="26" to="37" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<monogr>
		<author>
			<persName><forename type="first">K</forename><surname>Banker</surname></persName>
		</author>
		<title level="m">MongoDB in action</title>
				<imprint>
			<publisher>Manning Publications Co</publisher>
			<date type="published" when="2011">2011</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<monogr>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">L</forename><surname>Carlson</surname></persName>
		</author>
		<title level="m">Redis in Action</title>
				<imprint>
			<publisher>Manning Publications Co</publisher>
			<date type="published" when="2013">2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">CLEF NewsREEL 2016: Image based Recommendation</title>
		<author>
			<persName><forename type="first">F</forename><surname>Corsini</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Larson</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Working Notes of CLEF 2016 -Conference and Labs of the Evaluation forum</title>
				<meeting><address><addrLine>Évora, Portugal</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2016-09-08">5-8 September, 2016. 2016</date>
			<biblScope unit="page" from="618" to="827" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Ensemble methods in machine learning</title>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">G</forename><surname>Dietterich</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">International workshop on multiple classifier systems</title>
				<meeting><address><addrLine>Heidelberg</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2000">2000</date>
			<biblScope unit="page" from="1" to="15" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Overview of NewsREEL&apos;16: Multidimensional Evaluation of Real-Time Stream-Recommendation Algorithms</title>
		<author>
			<persName><forename type="first">B</forename><surname>Kille</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Lommatzsch</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><forename type="middle">G</forename><surname>Gebremeskel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Hopfgartner</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Larson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Seiler</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Malagoli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Serény</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Brodt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">P</forename><surname>Vries</surname></persName>
		</author>
		<author>
			<persName><surname>De</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Experimental IR Meets Multilinguality, Multimodality, and Interaction -7th International Conference of the CLEF Association, CLEF 2016</title>
		<title level="s">Proceedings</title>
		<meeting><address><addrLine>Évora, Portugal</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2016">September 5-8, 2016. 2016</date>
			<biblScope unit="page" from="311" to="331" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<monogr>
		<author>
			<persName><forename type="first">B</forename><surname>Kille</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Lommatzsch</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Turrin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Serény</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Larson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Brodt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Seiler</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Hopfgartner</surname></persName>
		</author>
		<title level="m">Overview of CLEF newsreel 2015: News recommendation evaluation lab</title>
				<imprint>
			<date type="published" when="2015">2015</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Node.js: Using JavaScript to build high-performance network programs</title>
		<author>
			<persName><forename type="first">S</forename><surname>Tilkov</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Vinoski</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Internet Computing</title>
		<imprint>
			<biblScope unit="volume">14</biblScope>
			<biblScope unit="issue">6</biblScope>
			<biblScope unit="page" from="80" to="83" />
			<date type="published" when="2010">2010</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">A programmatic introduction to neo4j</title>
		<author>
			<persName><forename type="first">J</forename><surname>Webber</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 3rd annual conference on Systems, programming, and applications: software for humanity</title>
				<meeting>the 3rd annual conference on Systems, programming, and applications: software for humanity</meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2012">2012</date>
			<biblScope unit="page" from="217" to="218" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">Temporal recommendation on graphs via long-and short-term preference fusion</title>
		<author>
			<persName><forename type="first">L</forename><surname>Xiang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Q</forename><surname>Yuan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Zhao</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Chen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">X</forename><surname>Zhang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Q</forename><surname>Yang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Sun</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 16th ACM SIGKDD international conference on Knowledge discovery and data mining</title>
				<meeting>the 16th ACM SIGKDD international conference on Knowledge discovery and data mining</meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2010">2010</date>
			<biblScope unit="page" from="723" to="732" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">Real-time bidding for online advertising: measurement and analysis</title>
		<author>
			<persName><forename type="first">S</forename><surname>Yuan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Wang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">X</forename><surname>Zhao</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the Seventh International Workshop on Data Mining for Online Advertising</title>
				<meeting>the Seventh International Workshop on Data Mining for Online Advertising</meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2013">2013</date>
			<biblScope unit="page">3</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">An intelligent recommender system using sequential web access patterns</title>
		<author>
			<persName><forename type="first">B</forename><surname>Zhou</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">C</forename><surname>Hui</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Chang</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Cybernetics and Intelligent Systems</title>
				<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2004">2004. 2004</date>
			<biblScope unit="volume">1</biblScope>
			<biblScope unit="page" from="393" to="398" />
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
