We discuss some useful advice and Q/A for machine learning/data science ‘starters’. We cover key books, courses, foundation knowledge, mathematics, and programming tools needed to kickstart the journey.
General Q/A from beginners
“I am a student of computer science/engineering. How do I get into field of machine learning/deep learning/AI?”
— You are lucky. When I was student, this field was still kind of ‘chilly’ and I never heard of it :( No matter what your main area of study is, you can read about and acquire knowledge about machine learning. And please, DO NOT go straight to register for a course just because somebody gushed about it on internet or you saw the certificate on your friend’s LinkedIn profile.
- Start with some cool videos on YouTube. Read couple of good books or articles. For example, have you read “The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World”. And I can guarantee you to fall in love with this cool interactive page about machine learning?
- Learn to clearly differentiate between buzzwords first — machine learning, artificial intelligence, deep learning, data science, computer vision, robotics. Read or listen to the talks, given by experts, on each of them. Watch this amazing video by Brandon Rohrer, an influential data scientist. Or this video about the clear definition and difference of various roles associated with data science.
- Have your goal clearly set about what you want to learn. And then, go and take a course offered by Experfy. Make sure you are comfortable with MATLAB before starting that course and you know by heart how to do a matrix multiplication. And please, do not take the deeplearning.ai courses before taking the foundational course.
- Follow some good blogs: KDnuggets, Mark Meloon’s blog about data science career, Brandon Rohrer’s blog, Open AI’s blog about their research,
- Most of all, develop a feel for it. Join some good social forums but resist the temptations to latch onto sensationalized headlines and news bytes posted. Do your own reading, understand what it is and what it is not, where it might go, and what possibilities it can open up. Then sit back and think how you can apply machine learning or imbue data science principles into your daily work. Build a simple regression model to predict the cost of your next lunch or download your electricity usage data from your energy provider and do a simple time-series plot in Excel to discover some pattern of usage. If you can get down to that kind of personal level, then the love affair is natural and guaranteed. And after you are thoroughly enamored with machine learning, you can watch this video
“What are some good books to read on AI/machine learning/deep learning?”
— There seem to be plenty of solid answers on this question. Instead of stacking up my own bias, I am inclined to point you to some top links which show most useful curated collections,
- 10 free must-read books for machine learning and data science by Matthew Mayo.
- Must Read Books for Beginners on Machine Learning and Artificial Intelligence — by AnalyticsVidhya.
- This awesome GitHub repo.
- A solid guide for all levels of practitioners from machinelearningmastery.com.
“Now tell me about some best online courses for beginners”
— Again, couple of links and some words of advice. First the links,
- Top Machine Learning MOOCs and Online Lectures: A Comprehensive Survey.
- 15 minute guide to choose effective courses for machine learning and data science.
- The Best Machine Learning Courses — Class Central Career Guides
The advice is that only you can decide the right sequence and pace of study through these MOOCs. Some people are highly attuned to take online courses and can keep themselves motivated enough to download all the programing material and practice them. Some others passionate but cannot keep awake in online video lectures. And there are plenty in between. You can get great amount of knowledge and build solid foundation as a beginner, from online courses but you have to pace them and approach them right.
“OK, so what are your special tips for taking online courses? Are paid courses/certificates worth it?”
- Study the curated lists of best courses (above) and visit them all. Should not cost you anything. List down the requirements and difficult level and the breadth of topics covered.
- Always keep a personal roadmap of things you want to learn. It should be almost like a time-series i.e. definite goals to be achieved on definite time point.
- Bring on your data scientist hat and try to fit the course with this time-series. Does it match i.e. teach you valuable concepts and tools that you want to acquire in near future? Does it go deeper into the framework and specializations you already know but want to polish further? Score the courses weighted on their utility and your personal requirement.
- Make a list of top 5 courses for a quarter. I have found it useful to think in terms of quarter.
- Now, look for cost implications and read reviews of past students on those top 5. Try to quickly judge which reviewer’s personal situation is most like yours and weight that review highly.
- I have mostly taken audited courses/free option. I paid only for the courses/certificates which I thought will give me a boost in terms of credibility in this field. Quizzes are not that important but programming assignments/Jupyter notebooks are. Most audited courses will let you download the Notebooks for free. That’s all you need. Trust me, you can make those notebooks much better than the instructor provided versions if you seriously work on them diligently.
- If you have some budget for spending, I would suggest look for local universities offering certificates or boot camp style courses with classroom options. This works for working professionals too as they are mostly delivered in the evenings or on weekends. Spend money only when you get a highly credible certificate out of it — preferably from good university affiliated camps or programs.
- If you need to brush up programming language skills from scratch, there are few focused and easy-paced courses on Experfy. Generally, these courses are designed to teach you essentials of programming in a language of your choice without the burden of deeper subject matters.
- Internet is one big university and library rolled into one. Consider and utilize any online resource — whole or piecemeal - as you need. If you don’t know anything about Gits, look for specific short courses on them. If you need to know quick web-scrapping techniques with a specific language, just watch lectures on those from a bigger course. If you really think that basic data structures are mysterious, go and take a freshman level computer science course. Harvad’s CS50 is an excellent one. Or there is even a version of it for business professionals with a different flavor.
Copying Leo Tolstoy but making an inverse of it, “every bad course is similar, every great course has an unique element of greatness about it”. Develop an eye for discovering that greatness in the top courses.
“So, what are the absolute bedrock knowledge needed to start the journey?”
— Nothing but a curiosity to learn new things and a passion to work hard for it. You have to acquire knowledge, practice, and internalize concepts as you go. But even then, some general points can be made for a structured learning approach. Again, this is from my very personal experience and therefore is subject to complete re-tuning based on your personal situation and goal.
- Make yourself comfortable with data and patterns with numbers. And accept the fact that data can come from any type of signal or source — spreadsheet financials, bank transactions, ad clicks, hospital patient records, wearable electronics, Amazon echo, factory assembly lines, customer survey. So, they can be messy, incomplete and hard to decipher and it is useful to learn how to be patient and deal with them cleverly for great models to be built later. This is not a hard knowledge but an aptitude.
- You should be very very comfortable with high-school level mathematics including basic calculus. Here is an article about it. Specifically, concepts about multi-variable functions, linear algebra, derivatives, and graphs should be clear.
- Learn principles of basic statistics by heart. Most, if not all, classical machine learning is nothing but sound statistical modeling wrapped with an interface of computer programming and optimization technique. Deep learning is a different beast and theories pertaining to it are still being developed actively. However, if you have solid grasp of basic statistics, you are far along the path of becoming a good machine learning practitioner. This is an excellent free online book to start. Or, this course from UC San Diego really nails down the basics in a fun and interesting way. Or if watching fun YouTube videos is your thing, you can try this channel.
- Familiarity with at least one high-level programming language is useful. Because, unless you are a PhD researcher in machine learning working on purely theoretical proof of some complex algorithm, you are expected to mostly use the existing machine learning algorithms, apply them in solving novel problems, and create cool predictive models based on those techniques. This requires programming hat to be put on. Nothing extraordinary needed though. Just basic familiarity with syntaxes, variables, data structures, conditionals, functions, and class definitions of a particular language. There is a high amount of debate and active discussion on the ‘best language for data science’. While the debate rages on, grab you coffee and read this insightful article to get an idea and see your choices. .
- Learn Jupyter fundamentals. This is a kickass programming and experimenting tool for a data scientist. Learn not only how to code but how to write a full technical document or report using Jupyter including images, markdown, LaTex formatting, etc. Here is a Github notebook that I put together on markdown features. Always remember, the Jupyter project started as an offshoot of IPython, but developed into a full-blown development platform with support of any number of programming languages that you can think of.
- Familiarity with Linux/command line interfaces, Gits, and Stack exchanges can be immensely helpful to get you started on the practical implementation side. Surprisingly, this is harder than it sounds. Particularly, for many working professionals like me, using Windows or Mac based enterprise level tools becomes an ingrained nature. For technical help on a software tool, we expect a shiny little electronic manual to pop up. Registering an account and posting a well-framed question on a Stack forum is too much for us. But learn them early and embrace the open-source culture. You will find that whole world is eager to solve your problem before you can even finish typing your question on Stackoverfllow :) And you will also be pleasantly surprised to see that installing a powerful software library is not as intimidating as those geeks make you believe. It is as easy as “pip install …”
That’s it for Part-I. In Part-II, I hope to cover most important Q/A on two more aspects,
- Some key machine learning/statistical modeling concepts that are useful to beginners and,
- Other much needed skills such as being visible on social/professional platforms and focusing on building stuff regularly.