RSSAmplifier

Blog

Ethan Rosenthal

Recent content on Ethan Rosenthal

ethanrosenthal.comRSS feed ↗59 posts

Latest posts

Introducing confingy

I’m incredibly excited to finally introduce confingy to the world. GitHub: https://github.com/runwayml/confingy Docs: https://runwayml.github.io/confingy This is a library that solves a problem that I’ve had for over a decade at every company at which I’ve worked. The library is also the answer to my previous blog post, Why can’t we separate YAML from ML? . Major shoutout…

Stop talking about reproducibility

I’m not saying reproducibility is an unworthy aspiration. I merely have issues with the word itself. It’s a misnomer that distracts from the real goals. You often hear about the need for “reproducible science”, or better yet, a “crisis of reproducibility” in science, particularly in the social sciences. Nobody really cares about whether somebody else can exactly…

Why can't we separate YAML from ML?

As for the ever popular Python vs R vs Julia vs Scala... It's already been decided and the right answer is YAML. It ever has ML in the name ! 😉 [image or embed] — Alex Gude ( @alexgude.com ) October 27, 2024 at 5:23 PM Why can’t I just write code? I’m coming up on 10 years, and half as many jobs, in data science and machine learning. No matter what, in every role, I find myself…

Portable Quarto Reports

TPS Report Like many Python data people, If I need to put together a proper analysis or report, I typically reach for Jupyter notebooks. I don’t like to reach for it. I want my analysis to be quick enough that I can run a couple lines of code in an IPython console and call it a day. But that’s never the case. And as we know, analysis begets analysis, and we’re going to need to…

Big Company Bachelor's

I recently wrapped up 4 years at a Big Company. During that time, I switched teams once, I transitioned from an Individual Contributor (IC) to an Engineering Manager (EM), the company name changed from Square to Block, and the number of employees increased from something like 5,000 to 15,000. Those numbers may seem small potatoes compared to many other Big Companies. For me, having only worked…

Do you actually need a vector database?

Spoiler alert: the answer is maybe! Although, my inclusion of the word “actually” betrays my bias. Vector databases are having their day right now. Three different vector DB companies have raised money on valuations up to $700 million ( paywall link ). Surprisingly, their rise in popularity is not for their “original” purpose in recommendation systems, but rather as an…

About

Bio Ethan Rosenthal lives in New York City and works at Runway . Prior to Runway, he worked in big tech , freelance consulted , and worked at some startups . Before working in tech, Ethan got a PhD in Physics from Columbia University building atomic-resolution microscopes to study superconductors. Contact I prefer email: hello at ethanrosenthal dot com You can also find me on GitHub , Bluesky ,…

Data scientists work alone and that's bad

In Need of a Good Editr Growing up, I had always considered myself a decent writer based on my decent grades in English class. My sophomore year English teacher made it very clear that I did not, in fact, know how to properly write. All of my essays were returned riddled with red-inked edits culminating in low scores. This was disheartening. Thankfully, there was a solution! These essay edits…

Ego, Identity, and Rationalization

Physics is a macho field. Not physically. Take a look at your average physics student. Physics is academically macho. Physics majors love to scoff at the other sciences. Biology’s just bullshit. Where’s the math?! Chemistry is all memorization, whereas Physics derives the quantum numbers from first principles. “Soft” science? That’s not science. Even within Physics,…

ML Monitoring with Materialize

In my last post , I strongly encouraged monitoring Machine Learning (ML) models with streaming databases. In this post, I will demonstrate an example of how to do this with Materialize . If you would like to skip to the code, I have put everything in this post into AIspy , a repo on GitHub. DTCase Study Let’s assume that we are a machine learning practitioner who works for Down To Clown, a…

Let's Continue Bundling into the Database

A very silly blog post came out a couple months ago about The Unbundling of Airflow . I didn’t fully read the article, but I saw its title and skimmed it enough to think that it might’ve been too thin of an argument to hold water but just thick enough to clickbait the VC world with the word “unbundling” while simultaneously Cunningham’s Law-ing the data world. There…

Bayesian Rock Climbing Rankings

Just like every other scientist, engineer, or Matt , I’m pretty into rock climbing. Being carless in NYC, I primarily climb indoors. One of the first things that you learn when going to a climbing gym is that you don’t get to grab on to every “hold” (the bright plastic things on the wall). Different colored holds correspond to different “routes”, and you…

Everything Gets a Package: My Python Data Science Setup

I make Python packages for everything. Big projects obviously get a package, but so does every tiny analysis. Spinning up a quick jupyter notebook to check something out? Build a package first. Oh yeah, and every package gets its own virtual environment. Let’s back up a little bit so that I can tell you why I do this. After that, I’ll show you how I do this. Notably, my workflow is set…

Autoretraining is Easy if You Skip the Hard Parts

You Can Not Measure What You Do Not Care To Manage When I started my first data scientist job in 2015, the team I joined had a recommendation system that would run every night to compute new recommendations for all users of our platform. This was the easiest way to handle the cold start problem. At the next company I worked at, we had a rule that every machine learning model must be setup to…

Alignimation: Differentiable, Semantic Image Registration with Kornia

I had a kid at the start of the year. Hold for applause Well, not me personally, but my wife did. I only tell you this in order to tell you that I took a picture of my wife every week that she was pregnant. We thought maybe it’d be interesting to look back at these pictures one day. She wore the same outfit and faced the same direction for each picture, although the background occasionally…

Sandwich Data Science 2: Electric Boogaloo

I told myself I wouldn’t do it again. The last time nearly broke me. And yet, just when I thought I was out, they pull me back in . Against my better judgement, I did another sandwich data science project. Thankfully, this one was significantly simpler. An Impenetrable Menu I work at Square , and their NYC office is in SoHo. While there are many reasons not to go into the office nowadays,…

A Serverless Event Collector

Two years ago, I tried to build a SaaS product for monitoring machine learning models. Luckily for you, that product went nowhere , so I figured I ought to share some code rather than let it continue to fester in a private GitHub repo. The monitoring service was designed to ingest data related to model predictions and model outcomes (aka “gold labels” aka “ground truth” aka…

Feature Stores for Self-Service Machine Learning

Features stores are now becoming a thing . Google Cloud is supporting Feast, an open source feature store, AWS announced the SageMaker Feature Store in December 2020, and tecton.ai raised a $35 Million Series B in the same month. While it’s going to be a while, I think that feature stores will do to machine learning what data warehouses did to analytics. Just as any department can now…

Cold Air Calories

When you breathe in cold air, your body warms up that air. Simultaneously, your body temperature will lower slightly but then eventually come back to its basal temperature of $\sim$98.6$^\circ$ F (37 $^\circ$ C). Your body must expend energy to raise the temperature back up. I was thinking about this and wondered: How many calories do we burn just by raising the temperature of cold air that we…

Optimal Peanut Butter and Banana Sandwiches

I was personally useless for most of the Spring of 2020. There was a period of time, though, after the peak in coronavirus cases here in NYC and before the onslaught of police violence here in NYC that I managed to scrounge up the motivation to do something other than drink and maniacally refresh my Twitter feed. I set out to work on something completely meaningless. It was almost therapeutic to…

Starting Up and Shutting Down, Quickly

There is no shortage of stories about tech founders achieving face-melting wealth from startup success. Bless their hearts. On the other side are stories with unhappy endings of founders sacrificing everything for the sake of their startup. I hate those stories. This story lies smack-dab in the middle. There is zero money made and minimal money lost. This is a story of how I had an idea that I was…

Doing Freelance Data Science Consulting in 2019

About 15 months ago, I left my full-time job as a machine learning team lead with the goal of doing independent / freelance data science consulting. Since then, I’ve gotten a lot of questions about what that means and entails. I have not found too much information about this type of work, other than Greg Reda’s fantastic post . I hope this blog post answers some of those questions for…

Links

You can find me on GitHub , Twitter , LinkedIn , and email (hello at ethanrosenthal dot com) Talks Having suffered through years of dry physics talks during my academic days, I’m on a mission to give data science talks that are engaging and interesting while still delivering technical insights for the audience. Past Talks Time series for scikit-learn people , PyData NYC 2019, ( slides )…

Production Machine Learning Survey Results

Having built machine learning products at two different companies with very different engineering cultures, I’ve made all of the following wrong assumptions All other data orgs do things like my company, so we’re doing fine. My org is way behind other orgs. My org is uniquely advanced, so we can rest on our laurels. In order to escape the small bubble of my existence, I posted a survey…

Time Series for scikit-learn People (Part III): Horizon Optimization

In my previous posts in the “time series for scikit-learn people” series, I discussed how one can train a machine learning model to predict the next element in a time series. Often, one may want to predict the value of the time series further in the future. In those posts, I gave two methods to accomplish this. One method is to train the machine learning model to specifically predict…

Hedging Academia and Liberalizing Physics PhD Programs

A recent Twitter thread got me thinking back to the frustrations I felt working towards gaining non-research employment during the last year of my physics PhD program at Columbia University from 2014-2015. While I tried to participate in the thread, I had way too many thoughts for Twitter. A blog post felt more appropriate, so here it is. In summary, the thread was about the failure of physics PhD…

spacecutter: Ordinal Regression Models in PyTorch

How would you build a machine learning algorithm to solve the following types of problems? Predict which medal athletes will win in the olympics. Predict how a shoe will fit a foot (too small, perfect, too big). Predict how many stars a critic will rate a movie. If you reach into your typical toolkit, you’ll probably either reach for regression or multiclass classification. For regression,…

Bio

Welcome! I am a New York City-based data person. On this site, you can learn more about me , read my data blog , wade through some idle thoughts , take a tour through an old, hand-coded website from my Physics days, or even venture out of nerd world and onto my boat . Honestly, though, the blog is the main point. Here are some greatest hits to get you started: Optimal Peanut Butter and Banana…

Quick and Dirty Serverless Integer Programming

We all know that Python has risen above its humble beginnings such that it now powers billion dollar companies . Let’s not forget Python’s roots, though! It’s still an excellent language for running quick and dirty scripts that automate some task. While this works fine for automating my own tasks because I know how to navigate the command line, it’s a bit much to ask a…

Time Series for scikit-learn People (Part II): Autoregressive Forecasting Pipelines

In this post, I will walk through how to use my new library skits for building scikit-learn pipelines to fit, predict, and forecast time series data. We will pick up from the last post where we talked about how to turn a one-dimensional time series array into a design matrix that works with the standard scikit-learn API. At the end of that post, I mentioned that we had started building an ARIMA…

Time Series for scikit-learn People (Part I): Where's the X Matrix?

When I first started to learn about machine learning, specifically supervised learning, I eventually felt comfortable with taking some input $\mathbf{X}$, and determining a function $f(\mathbf{X})$ that best maps $\mathbf{X}$ to some known output value $y$. Separately, I dove a little into time series analysis and thought of this as a completely different paradigm. In time series, we don’t…

Matrix Factorization in PyTorch

Update 7/8/2019: Upgraded to PyTorch version 1.0. Removed now-deprecated Variable framework Update 8/4/2020: Added missing optimizer.zero_grad() call. Reformatted code with black Hey, remember when I wrote those ungodly long posts about matrix factorization chock-full of gory math? Good news! You can forget it all. We have now entered the Era of Deep Learning, and automatic differentiation shall…

From Analytical to Numerical to Universal Solutions

I’ve been making my way through the recently released Deep Learning textbook (which is absolutely excellent), and I came upon the section on Universal Approximation Properties. The Universal Approximation Theorem (UAT) essentially proves that neural networks are capable of approximating any continuous function (subject to some constraints and with upper bounds on compute). Meanwhile, I have…

Rec-a-Sketch: a Flask App for Interactive Sketchfab Recommendations

After the long series of previous posts describing various recommendation algorithms using Sketchfab data, I decided to build a website called Rec-a-Sketch which visualizes the different algorithms’ recommendations. In this post, I’ll describe the process of getting this website up and running on AWS with nginx and gunicorn. Goal The goal of the website was two-fold. I wanted to view…

Using Keras' Pretrained Neural Networks for Visual Similarity Recommendations

To close out our series on building recommendation models using Sketchfab data , I will venture far from the previous [posts’]({{ ref “/blog/implicit-mf-part-2” >}}) factorization-based methods and instead explore an unsupervised, deep learning-based model. You’ll find that the implementation is fairly simple with remarkably promising results which is almost a smack in the…

Learning to Rank Sketchfab Models with LightFM

In this post we’re going to do a bunch of cool things following up on the last post introducing implicit matrix factorization. We’re going to explore Learning to Rank, a different method for implicit matrix factorization, and then use the library LightFM to incorporate side information into our recommender. Next, we’ll use scikit-optimize to be smarter than grid search for cross…

Intro to Implicit Matrix Factorization: Classic ALS with Sketchfab Models

Last post I described how I collected implicit feedback data from the website Sketchfab . I then claimed I would write about how to actually build a recommendation system with this data. Well, here we are! Let’s build. I think the best place to start when looking into implicit feedback recommenders is with the model outlined in the classic paper “ Collaborative Filtering for Implicit…

Likes Out! Guerilla Dataset!

– Zack de la Rocha tl;dr -> I collected an implicit feedback dataset along with side-information about the items. This dataset contains around 62,000 users and 28,000 items. All the data lives here inside of this repo. Enjoy! In a previous post , I wrote about how to use matrix factorization and explicit feedback data in order to build recommendation systems. This is data where a user has…

Towards optimal personalization: synthesisizing machine learning and operations research

Last post I talked about how data scientists probably ought to spend some time talking about optimization (but not too much time - I need topics for my blog posts!). While I provided a basic optimization example in that post, that may have not been so interesting, and there definitely wasn’t any machine learning involved. Right now, I think that the most exciting industrial applications of…

I'm all about ML, but let's talk about OR

You’ve studied machine learning, you’re a dataframe master for massaging data, and you can easily pipe that data through a bunch of machine learning libraries. You go for a job interview at a SAAS company, you’re given some raw data and labels and asked to predict churn, and come on - are these guys even trying? You generate the shit out of some features, you overfit the hell out…

Explicit Matrix Factorization: ALS, SGD, and All That Jazz

In my last post , I described user- and item-based collaborative filtering which are some of the simplest recommendation algorithms. For someone who is used to conventional machine learning classification and regression algorithms, collaborative filtering may have felt a bit off . To me, machine learning almost always deals with some function which we are trying to maximize or minimize. In simple…

Intro to Recommender Systems: Collaborative Filtering

I’ve written before about how much I enjoyed Andrew Ng’s Coursera Machine Learning course. However, I also mentioned that I thought the course to be lacking a bit in the area of recommender systems. After learning basic models for regression and classification, recommmender systems likely complete the triumvirate of machine learning pillars for data science. Working at an ecommmerce…

Yet Another PhD to Data Science Post (Part III)

This is the final part in my series on going from PhD to Data Science (parts I and II ). As previously mentioned, while I was demoing my Insight project at companies, I also spent a good bit of time studying for interviews. The technical areas of study for interviews can be largely grouped as Computer Science (CS) Machine Learning (ML) Statistics SQL I’ll first review some resources for…

Yet Another PhD to Data Science Post (Part II)

Welcome to Part II of my journey from academic to industry data scientist. In my previous post , I wrote of my preparation leading up to the application to Insight Data Science . I will now talk about the Insight application process, the actual program, and demoing my project at companies. I will save studying for interviews and the actual interview process for the final post . Application to…

Yet Another PhD to Data Science Post (Part I)

The internet is awash with posts by former PhD students who have succesfully transitioned into data scientist roles in industry (see here , here , here , and tangentially here ). I loved reading these posts while studying for job interviews because I felt like the more I saw examples of sucessful transitions, the more likely it seemed that such feats were actually achievable. I am going to try to…

Festival Chatter (Part 4) - Some Simple Sentiment Analysis

I think this post will probably conclude my Festival Chatter series on analyzing Bonnaroo tweets in Python ( part 1 , part 2 , part 3 ). I’ve had a lot of fun messing around with this dataset, but I think it’s time to move on to playing with something else. For this last post, though, I will show some simple sentiment analysis of the collected tweets. There are a whole bunch of issues…

Festival Chatter (Part 3) - Bonnaroo Analysis in the Fourth Dimension

In this series of posts ( part 1 , part 2 ), I have been showing how to use Python and other data scientist tools to analyze a collection of tweets related to the 2014 Bonnaroo Music and Arts Festival. So far, the investigation has been limited to summary data of the full dataset. The beauty of Twitter is that it occurs in realtime, so we can now peer into the fourth dimension and learn about…

Festival Chatter (Part 2) - Evaluating Band Popularity from Bonnaroo Tweets

In my previous post , I wrote about how I collected tweets about the Bonnaroo Music and Arts Festival during the entirety of the festival. There are a wide range of questions that could be answered by this dataset, like Do people spell worse as they become more intoxicated throughout the night? Does text sentiment decline as people go more days without bathing? Who in the world tweets from a…

Festival Chatter (Part 1) - Collecting Bonnaroo Tweets from the Streaming Twitter API

It seems like summer music festivals get more and more popular every year. I guess this could be the subject of its own post, but let’s stick with my personal anecdotal evidence for the time being. I remember only a handful of music festivals in the U.S. when I was in high school - Bonnaroo, All Good, 10,000 Lakes, and Coachella. I am sure that there were others, but it was nowhere near as…

Setting up a website and separate blog repository hosted on GitHub

As the title of the blog suggests, I would like to use this space to write about anything “data”-related that piques my interest. Likely, this will consist of personal and academic projects. As the title of this post suggests, I would like to explain how I created this blog and my website . Setting up the website - ethanrosenthal.com During my 5 years at Columbia, I have sporadically…