<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Bounded Rationality (Posts about Rubikloud)</title><link>http://bjlkeng.github.io/</link><description></description><atom:link href="http://bjlkeng.github.io/categories/rubikloud.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><lastBuildDate>Tue, 10 Mar 2026 20:54:58 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>The Hard Thing about Machine Learning</title><link>http://bjlkeng.github.io/posts/the-hard-thing-about-machine-learning/</link><dc:creator>Brian Keng</dc:creator><description>&lt;div&gt;&lt;p&gt;I wrote a post on the hard parts about machine learning over
at Rubikloud:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://rubikloud.com/labs/data-science/hard-thing-machine-learning/"&gt;The Hard Thing about Machine Learning&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here's a blurb:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Much of the buzz around machine learning lately has been around novel
applications of deep learning models. They have captured our imagination by
anthropomorphizing them, allowing them to dream, play games at superhuman
levels, and read x-rays better than physicians. While these deep learning
models are incredibly powerful with incredible ingenuity built into them,
they are not humans, nor are they much more than “sufficiently large
parametric models trained with gradient descent on sufficiently many
examples.” In my experience, this is not the hard part about machine
learning.&lt;/p&gt;
&lt;p&gt;Beyond the flashy headlines, the high-level math, and the computation-heavy
calculations, the whole point of machine learning — as has been with
computing and software before it — has been its application to real-world
outcomes. Invariably, this means dealing with the realities of messy data,
generating robust predictions, and automating decisions.&lt;/p&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;p&gt;Just as much of the impact of machine learning is beneath the surface, the
hard parts of machine learning are not usually sexy. I would argue that the
hard parts about machine learning fall into two areas: generating robust
predictions and building machine learning systems.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;&lt;/div&gt;</description><category>Machine Learning</category><category>Rubikloud</category><category>systems</category><guid>http://bjlkeng.github.io/posts/the-hard-thing-about-machine-learning/</guid><pubDate>Tue, 22 Aug 2017 12:32:55 GMT</pubDate></item><item><title>Building A Table Tennis Ranking Model</title><link>http://bjlkeng.github.io/posts/building-a-table-tennis-ranking-model/</link><dc:creator>Brian Keng</dc:creator><description>&lt;div&gt;&lt;p&gt;I wrote a post about building a table tennis ranking model over at Rubikloud:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="https://rubikloud.com/labs/building-table-tennis-ranking-model/"&gt;Building A Table Tennis Ranking Model&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It uses
&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Bradley%E2%80%93Terry_model"&gt;Bradley-Terry&lt;/a&gt;
probability model to predict the outcome of pair-wise comparisons (e.g. games
or matches).  I describe an easy algorithm for fitting the model (via
MM-algorithms) as well as adding a simple Bayesian prior to handle ill-defined
cases.  I even have some
&lt;a class="reference external" href="https://github.com/bjlkeng/Bradley-Terry-Model"&gt;code on Github&lt;/a&gt;
so you can build your own ranking system using Google sheets.&lt;/p&gt;
&lt;p&gt;Here's a blurb:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Many of our Rubikrew are big fans of table tennis, in fact, we’ve held an
annual table tennis tournament for all the employees for three years
running (and I’m the reigning champion). It’s an incredibly fun event where
everyone in the company gets involved from the tournament participants to
the spectators who provide lively play-by-play commentary.&lt;/p&gt;
&lt;p&gt;Unfortunately, not everyone gets to participate either due to travel and
scheduling issues, or by the fact that they miss the actual tournament
period in the case of our interns and co-op students. Another downside is
that the event is a single-elimination tournament, so while it has a clear
winner the ranking of the participants is not clear.&lt;/p&gt;
&lt;p&gt;Being a data scientist, I identified this as a thorny issue for our
Rubikrew table tennis players. So, I did what any data scientist would do
and I built a model.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;&lt;/div&gt;</description><category>Bradley-Terry</category><category>ping pong</category><category>ranking</category><category>Rubikloud</category><category>table tennis</category><guid>http://bjlkeng.github.io/posts/building-a-table-tennis-ranking-model/</guid><pubDate>Wed, 19 Jul 2017 12:51:41 GMT</pubDate></item><item><title>Beyond Collaborative Filtering</title><link>http://bjlkeng.github.io/posts/beyond-collaborative-filtering/</link><dc:creator>Brian Keng</dc:creator><description>&lt;div&gt;&lt;p&gt;I wrote a couple of posts about some of the work on recommendation systems and
collaborative filtering that we're doing at my job as a Data Scientist at
&lt;a class="reference external" href="http://www.rubikloud.com"&gt;Rubikloud&lt;/a&gt;:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="http://rubikloud.com/labs/data-science/beyond-collaborative-filtering/"&gt;Beyond Collaborative Filtering (Part 1)&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a class="reference external" href="http://rubikloud.com/labs/data-science/beyond-collaborative-filtering-part-2/"&gt;Beyond Collaborative Filtering (Part 2)&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here's a blurb:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Here at Rubikloud, a big focus of our data science team is empowering retailers
in delivering personalized one-to-one communications with their customers. A
big aspect of personalization is recommending products and services that are
tailored to a customer’s wants and needs. Naturally, recommendation systems are
an active research area in machine learning with practical large scale
deployments from companies such as Netflix and Spotify. In Part 1 of this
series, I’ll describe the unique challenges that we have faced in building a
retail specific product recommendation system and outline one of the main
components of our recommendation system: a collaborative filtering algorithm.
In Part 2, I’ll follow up with several useful applications of collaborative
filtering and end by highlighting some of its limitations.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hope you like it!&lt;/p&gt;&lt;/div&gt;</description><category>Collaborative Filtering</category><category>Machine Learning</category><category>Recommendation Systems</category><category>Rubikloud</category><guid>http://bjlkeng.github.io/posts/beyond-collaborative-filtering/</guid><pubDate>Sat, 11 Jun 2016 22:00:34 GMT</pubDate></item></channel></rss>