I am a PhD candidate in Computational & Mathematical Engineering at Stanford University, working with Professor Stephen Boyd. My research focus is on modeling and solving large-scale optimization problems and on finding and exploiting structure in high dimensional data, with applications in marketing, finance, demographic modeling, and medical informatics.
My recent work on generalized low rank models (GLRMs) extends principal components analysis (PCA) to embed tabular data sets with heterogeneous (numerical, Boolean, categorical, and ordinal) types into a low dimensional space, providing a coherent framework for compressing, denoising, and imputing missing entries. My other favorite problems to ponder include how to parallelize optimization algorithms for general cone programs, ways to use graph partitioning to improve the convergence of distributed optimization algorithms, and how to decide which entry to query next in a matrix-completion setting.
I've developed of a number of open source tools for modeling and solving convex optimization problems, including Convex.jl, one of the top ten tools in the Julia language for technical computing, and am a member of the JuliaOpt organization, which curates high quality optimization software.
News and Links
- January 2015: I'm representing PhD students on Stanford's School of Engineering Future Committee. We're working to develop a road-map for the future of engineering at Stanford over the next 20 years. Where do you think engineering should be heading?
- December 2014: SigmoidalProgramming is a new Julia package I've developed for maximizing a sum of sigmoids. For many problems, the code runs more than 6000 times faster than my original SIGOPT solver in Python. This speedup is largely due to the tight integration between the Julia language and a variety of LP solvers written in C. (Thanks, JuliaOpt!)
- November 2014: Thanks to the HPTCDL organizers for a great conference!
- September 2014: Generalized Low Rank Models extend the idea of PCA to handle arbitrary data sets consisting of numerical, Boolean, categorical, ordinal, and other data types. Our paper on GLRMs presents approximately half of machine learning as facets of a single class of models, and gives unified algorithms and interpretations. Comments welcome! You can also make your own models and try it out.
- June 2014: We've just released Convex.jl, a Julia module for modeling and solving convex optimization problems. For more information, see the documentation or the paper, or watch my talk at JuliaCon.
- May 2014: Thanks to the Stanford VPGE for selecting me as a 2014 Gerald J. Lieberman Fellow!
- February 2014: Julia is a beautiful new language for scientific computing: syntax like MATLAB and speed like C. I've been working on a native implementation of sparse matrix multiplication in julia. For a matrix with a billion nonzeros, its performance on 6 processors is the same as that of Intel's MKL, and it retains linear parallel scaling up to 40 processes.
- January 2014: Welcome to CVX101: we're teaching 10,000 students convex optimization.
- December 2013: How can you predict the growth of a cell when genes critical for metabolism are knocked out? Using L1 regularization, of course. It turns out it works surprisingly well.
- June 2013: I'm teaching EE364a: Convex Optimization this summer. The class will be half-flipped, and thereby more interactive. (The final will also be shorter.)
- May 2013: I've just released SIGOPT, a python module for sigmoidal programming. Bug reports welcome. Update February 2015: pyGLPK is no longer supported on Mac OSX, breaking the dependencies of SIGOPT. I've released a (>= 6000x) faster version of the package in Julia here.
- May 2013: If you're trying to maximize a sum of sigmoids, you might be interested inthis paper. It's an NP hard problem, but surprisingly easy to solve (usually). Here are slides describing the algorithm , and another deck with a stronger focus on politics.
- April 2013: Interested in rationalizing Stanford's class schedule? I'm working with the registrar's office to design a schedule minimizing conflicts. Email me if you'd like to help out!
- January 2011: I'm a teaching assistant for EE364a: Convex Optimization.
- October 2011: As a member of Stanford's Committee on Graduate Studies, I'll be working to improve policies governing the substance and process of graduate education. We also oversee the creation and renewal of graduate interdisciplinary programs.
- October 2011: As a consultant for the analytics team at Obama for America, I'm working to use social network data as well as more traditional information in voter files to reach out to voters more effectively. From the social science side, Gerber, Green, and Larimer demonstrate a remarkably effective means to mobilize voters using social networks.
- September 2011: I taught the ICME discrete math refresher course. My slides are posted here. I tried to make the class more interesting for people of widely varying levels by asking students to collaborate on problems, so that those who knew the solutions could help teach and guide those for whom the material was new. If you took the class, I'd love to hear what you thought: this survey should take about 3 minutes to complete.
- September 2011: Just got back from the 40th anniversary conference of the Association for Women in Mathematics. It was wonderful to see so many female mathematicians in one place, and wonderful to experience the normalcy of a mathematical world composed entirely of women. Andrea Bertozzi gave a fantastic talk on the mathematics of crime. [Full Paper]
- August 2011: In a collaboration with Paea LePendu and Nigam Shah at the Stanford Medical School, we used millions of doctors' notes from both Stanford University Hospital and other outpatient facilities to automatically detect off-label drug usage. Understanding how doctors prescribe medications should allow doctors to recognize and treat drug interactions and other adverse effects more quickly. Our work will be featured in the proceedings of Joint Summits on Translational Medicine in San Francisco this March.
- July 2011: Electronic health records (EHR) are rapidly replacing paper as the requirements from Obama's health care reform come into force. But doctors find themselves unable to find the information they need in unwieldly and unsearchable EHR systems, or to share their records with other doctors. Apixio is working to help doctors search and share health records. During a summer internship, I developed a tool to help their search engine learn how doctors use medical language in practice. This tool extracts structured information about problems, medications, and procedures from the unstructured text of doctors' notes.
- June 2011: I just got back from a weekend "hacking for humanity" at Random Hacks of Kindness, Silicon Valley. My team created a website to match volunteers with NGOs according to their skills, location and availability.
- March 2011: I taught the introductory lecture on Spectral Graph Theory in CME305. Here are my lecture notes.
- January 2011: I'm a teaching assistant for CME305: Discrete Mathematics and Algorithms. For a proof that things that seem NP-hard are not necessarily so, see this paper.
- January 2011: I am a Community Associate in the Rains Houses at Stanford. The CA program is designed to help build community among graduate students.
- September - December 2010: I am attending a workshop on Modern Trends in Optimization and Its Application at IPAM .
- June 2010: I passed the ICME qualifying exams.
- April 2010: I was awarded a Graduate Research Fellowship from the National Science Foundation.