Beyond Apps: A Developer’s Guide to Getting Started in Machine Learning
This is part one of a series of blog posts detailing my journey as a mobile app developer getting into machine learning. I am primarily an iOS developer, and I’ve dubbed 2018 My Year of Machine Learning. Before deciding to begin this process, I was held back by quite a few barriers and misconceptions about what the field really is, what it would take to get started, and how much of a paradigm shift it would be. I hope that by the end of this blog post you will have some clarity on some of the major considerations in starting machine learning, as well as possible next steps for you to begin your own journey.
As developers, we’ve been able to solve many problems using mobile apps: social networking, bill payments, food ordering and delivery, and e-commerce, to mention but a few. Machine learning presents us with various opportunities to solve very unique types of problems. For example, machine learning can be applied to business to predict stock prices, or to sports management to predict which quarterback the Cleveland Browns should draft next, or to health care to predict disease outbreaks and to automatically classify image data like scans and x-rays, etc. (Or in other cases: to identify hotdogs!)
Now to the crux of this post: as a developer, how do I get started in machine learning? A few questions come to mind when considering the field of machine learning. These include:
- Do I need math to get started in machine learning? How much math?
- What language should I use?
- What framework should I learn?
- What development and debugging tools should I use?
- What courses should I take?
Let’s go ahead and address each of these questions.
Do I need math to get started in machine learning?
Short answer: yes. Math is very important. However, this might be the wrong question. The relevance of having an extensive understanding of advanced (“beyond basic”) mathematical concepts really depends on what your goals going into the field are. If you’re interested in taking a more academic approach, studying advanced data science, and researching and building the underlying algorithm and frameworks, then yes, a solid understanding of linear algebra, statistics, multivariate calculus, and other mathematical concepts is definitely required. If your goal is mainly to get started in machine learning / data science in order to work in the industry (entry level), then an in-depth knowledge of math is not really required. A basic grasp of freshman-level statistics will be quite sufficient, as you will be able to utilize a lot of modern machine learning tools/libraries to do math. Of course, being strong in math will generally help you - the key message here is simply that it is not a requirement for getting started in machine learning. Just like an iOS developer can make use of AFNetworking library to make a highly functioning app without knowing the inner workings of the library, so can you as a machine learning developer make use of various libraries to make calculations. When you started iOS/Android development, you probably didn’t start with learning how to build your own networking library from scratch, so why take that approach with machine learning? You can always continue to learn and master more math as you go.
With that being said, libraries are not everything. As a developer, you will have to know the different types of algorithms in machine learning, including when and how to use them to solve problems, to make excellent products; just like you currently do in mobile development. Not that bad, right?
If math is not really a prerequisite, then what is?
Data analysis. The most important skill required in order to begin to master machine learning as a beginner is the ability to gather data, prepare data, explore data, and visualize data. There are several resources that can help get you up to speed with data visualization, data wrangling, and data aggregation. For example, if you were doing machine learning in Python, you should consider learning Base Python, Pandas, or Matplotlib. Proficiency in data analysis will adequately prepare you to create production ready machine learning products.
What language should I use?
In mobile development, the platforms constrained us to which languages are available for development: Swift and Objective C for iOS, Java and Kotlin for Android. In machine learning, however, we face a delicate conversation about which language we should focus our efforts on: Python? or R? or C/C++? There are probably several opinions on the interwebs that swear that a particular language is the best for machine learning. Maybe Python? However, those kinds of assertions should not be taken as fact. It really depends on several factors, like what your background is (what languages you’re already familiar with), and, more importantly, what problem you’re trying to solve. Languages are just a means to an end. Notwithstanding, in my experience so far, Python seems to be the easiest language to get started with in machine learning. It is the most popular language, and has a lot of libraries and a vibrant developer community around it.
What frameworks should I learn?
Choosing a framework is one of the most challenging and confusing aspects of starting out in machine learning, as there are a plethora of very good choices to pick from. However, just like deciding on which language to use, deciding on which framework to use still really depends on the kind of problem you wish to solve. The best way to really approach this is to read about the various options that are available, their strengths, weaknesses, and most common use cases. Some of the popular frameworks are TensorFlow, Torch, Caffe2, Keras, Microsoft CNTK, Amazon Machine Learning, Theano, etc. TensorFlow for example, is an open source project developed by the Google Brain team, and is most appropriate for research and development. Caffe2 is a lightweight, modular, and scalable deep learning framework open sourced by Facebook. Caffe2 is a good fit for building applications; Caffe2 has a lot of quick-start tutorials on its website that will help you start developing fairly quickly. During my process so far, I’ve come across several articles that shed more light on things to consider when picking the right framework. You can take a look at these for further reading:
- Choosing an Open Source Machine Learning Library: TensorFlow, Theano, Torch, scikit-learn, Caffe — Altexsoft
- Top 10 Machine Learning Frameworks — Prompt Cloud
- A Look at Popular Machine Learning Frameworks — Redmonk
What development and debugging tools should I use?
This was not a particularly big concern for me. Depending on the language you’ve decided to use, there are several well-done development and debugging tools for machine learning. For example, if you’re working with Python, some popular development environments are PyCharm, PyDev, Spyder, and Jupyter Notebook. A basic text editor like Visual Studio Code or Atom can do the trick as well. You can try them out and see which one(s) you prefer. Of course, the same applies to other languages as well.
What courses should I take?
There are A LOT of courses, articles, talks, and books on machine learning; some for beginners, and others for the more advanced. As we’re focusing on getting started here, I’ll highlight some of the courses and resources I’ve found very helpful so far. Here they are:
- Machine Learning — Standford University & Coursera — Andrew Ng: This course is by far the most recommended (and positively/excellently reviewed) course for beginners in machine learning. Professor Andrew Ng is an accomplished individual in machine learning known for his key role in the Google Brain project. He is the co-founder of Coursera and Chief Scientist and Vice President at Baidu. This course includes videos, readings, quizzes, and graded assignments to go along with the lectures. And in case you’re still worried about your math background, this course also teaches the necessary math topics like linear regression and linear algebra. Self-paced and free too! 10/10
- Introduction to Machine Learning — Udacity: A free 10-week course taught by Katie Malone and Sebastian Thurn. Just like every Udacity course (nanodegree), this course is very well structured. I haven’t taken this course yet, but the reviews are very encouraging.
And if you prefer to take a more gradual approach, you can focus on integrating machine learning into your iOS and Android apps. Here are a few resources that can help you hit the ground running:
iOS Developer:
- Introducing Core ML
- Core ML in depth
- Vision Framework: Building on Core ML
- Natural Language Processing and your Apps
Android Developer:
- Google’s Vision on Machine Learning
- Machine Learning Everywhere: Android Apps with Intelligence — Margaret Maynard-Reid
- Neural Networks API
- Android Neural Networks API Sample
Thanks for taking the time to read this post! I hope this has helped demystify machine learning for you, so you can begin creating amazingly intelligent solutions to world problems. Happy trails on your machine learning journey! ❤
Further reading:
- The real prerequisite for machine learning isn’t math, it’s data analysis — Sharp Sight Labs
- The Mathematics of Machine Learning — Wale Akinfaderin
- What is the best programming language for Machine Learning? — Christina Voskoglou
- Best Programming Language for Machine Learning — Jason Brownlee
- The Most Popular Language For Machine Learning Is … — Jean Francois Puget
- Top 10 machine learning frameworks — Big Data Made Simple
- What Machine Learning Can and Can’t Do — Mark Boyd
- 8 Fun Machine Learning Projects For Beginners — EliteDataScience