UI Auto-optimization
UI optimization & personalization via Machine Learning
Goal
Scale up our ability to test and optimize user engagement and monetization in Yahoo Recommends widgets.
Solution
Use Machine Learning techniques to auto-optimize the visual treatment of Yahoo Recommends widgets, resulting in higher CTR and RPM.
Topics
Personalization
Machine Learning
UX Strategy
User Research
Data Visualization
Project background
Yahoo
November 2014 – May 2015
Lead designer
UX Strategy pitch deck
Use case framework to coordinate man and machine
Initially, we and our customers thought of the product as a series of one-off activities. As we gained customers, both their needs and ours changed. We needed a way to scale our efforts. But, first we needed to understand all of the use cases in order to figure out how to set priorities among the options for modifying widgets. I put together this matrix to structure those use cases, and to help facilitate our system architecture discussion.
Proof of concept
After we nailed down our initial system components, we needed a test. One widget was buried in the middle of a very busy page. We decided to run a proof of concept to find the best font size and font weight.
Variations tested
Results
The algorithm settled on 15px/normal as the best font size and weight. We also saw a trend line that looked promising, and possibly repeatable.
We didn’t notice when we started the test, but the customer embedded this widget inside of a fixed-height iframe, so the system’s ability to work optimize in the face of unknown constraints was extremely exciting to us. One of our main goals was to save us the manual effort of chasing down each widget’s configuration to set up a decent test. So we decided to go ahead and build the full system.
Research interview protocol
While the engineers built out the system, I started working on gathering more info from our customers. We were going to need a way to allow them some level of input in order to make the optimization align with their business goals, and communicate the system’s behavior to them (in a visualization that could scale up to millions or more variations).
Dashboard
I made a series of partial-color wireframes to explore some key questions:
How might we give users some control without making the system too complicated?
How might we visualize performance of a potentially extremely big data set?
The project was killed around here, but I came up with six options.