Giter VIP home page Giter VIP logo

dive-into-machine-learning's Introduction


Initiatives

Before we dive in, here are some notable projects and initiatives that might interest you as well.

Related to machine learning

  • AlgorithmWatchnewsletter — "a non-profit research and advocacy organization that is committed to watch, unpack and analyze automated decision-making (ADM) systems and their impact on society."
  • daviddao/awful-ai — "Awful AI is a curated list to track current scary usages of AI — hoping to raise awareness"
  • humanetech-community/awesome-humane-tech — "Promoting solutions that improve wellbeing, freedom and society"

Code against climate change


Dive Into Machine Learning

Dive into Machine Learning

Hi there! You might find this resource helpful if:

For some great alternatives, jump to the end or check out Nam Vu's guide, Machine Learning for Software Engineers.

Of course, there is no easy path to expertise. Also, I'm not an expert! I just want to connect you with some great resources from experts. Applications of ML are all around us. I think it's in the public interest for more people to learn more about ML, especially hands-on, because there are many different ways to learn.

Whatever motivates you to dive into machine learning, if you know a bit of Python, these days you can get hands-on with a machine learning "Hello World!" in minutes.

Let's get started

Tools you'll need

If you prefer local installation

  • Python. Python 3 is the best option.
  • Jupyter Notebook. (Formerly known as IPython Notebook.)
  • Some scientific computing packages:
    • numpy
    • pandas
    • scikit-learn
    • matplotlib

You can install Python 3 and all of these packages in a few clicks with the Anaconda Python distribution. Anaconda is popular in Data Science and Machine Learning communities. (Use whichever tool works for you. If you're unsure or need more context about using conda/virtualenv/poetry/pipenv, here's a very helpful guide)

Cloud-based options

Some options you can use from your browser:

For other options, see:

Let's go!

Learn how to use Jupyter Notebook (5-10 minutes). (You can learn by screencast instead.)

Now, follow along with this brief exercise: An introduction to machine learning with scikit-learn. Do it in ipython or a Jupyter Notebook, coding along and executing the code in a notebook.

I'll wait.

What just happened?

You just classified some hand-written digits using scikit-learn. Neat huh?

Dive in

A Visual Introduction to Machine Learning

Let's learn a bit more about Machine Learning, and a couple of common ideas and concerns. Read "A Visual Introduction to Machine Learning, Part 1" by Stephanie Yee and Tony Chu.

A Visual Introduction to Machine Learning, Part 1

It won't take long. It's a beautiful introduction ... Try not to drool too much!

"A Few Useful Things to Know about Machine Learning"

OK. Let's dive deeper.

Read "A Few Useful Things to Know about Machine Learning" by Prof. Pedro Domingos. It's densely packed with valuable information, but not opaque. (Don't worry if you don't understand it all yet.) Take some time with this one.

Jargon note


Explore another notebook

Next, code along with one or more of these notebooks.

Find more great Jupyter Notebooks when you're ready:


Immerse yourself

Pick one of the courses below and start on your way.

Prof. Andrew Ng's Machine Learning is a popular and esteemed free online course. I've seen it recommended often. And emphatically.

It's recommended to grab a textbook to use as an in-depth reference. The two I saw recommended most often were Understanding Machine Learning and Elements of Statistical Learning. You only need to use one of the two options as your main reference; here's some context/comparison to help you pick which one is right for you.

Public datasets and pet projects

You might like to have a pet project to play with, on the side. When you are ready for that, you could explore one of these: Awesome Public Datasets, paperswithcode.com/datasets, datasetlist.com, KKulma/climate-change-data

Tips for this course

Tips for studying on a busy schedule

It's hard to make time available every week. So, you can try to study more effectively within the time you have available. Here are some ways to do that:

Take my tips with a grain of salt

I am not a machine learning expert. I'm just a software developer and these resources/tips were useful to me as I learned some ML on the side.

Other courses

More free online courses I've seen recommended. (Machine Learning, Data Science, and related topics.)

Getting Help: Questions, Answers, Chats

Start with the support forums and chats related to the course(s) you're taking.

Check out datascience.stackexchange.com and stats.stackexchange.com – such as the tag, machine-learning. There are some subreddits, like /r/LearningMachineLearning and /r/MachineLearning.

Don't forget about meetups. Also look for chat invitations on project pages and so on.

Some communities to know about!

Supplement: Learning Pandas well

You'll want to get more familiar with Pandas.

Supplement: Troubleshooting

These debugging tools can be used inside (or outside) a Jupyter notebook:

There are many more tools than that, but those might get you started, or might be especially useful while you're learning. Beyond learning, troubleshooting is more than just logs or debuggers, of course... there's also some MLOps links, later in this guide.

Assorted Tips and Resources

Risks - some starting points

"Machine learning systems automatically learn programs from data." Pedro Domingos, in "A Few Useful Things to Know about Machine Learning." The programs you generate will require maintenance. Like any way of creating programs faster, you can rack up technical debt.

Here is the abstract of Machine Learning: The High-Interest Credit Card of Technical Debt:

Machine learning offers a fantastically powerful toolkit for building complex systems quickly. This paper argues that it is dangerous to think of these quick wins as coming for free. Using the framework of technical debt, we note that it is remarkably easy to incur massive ongoing maintenance costs at the system level when applying machine learning. The goal of this paper is highlight several machine learning specific risk factors and design patterns to be avoided or refactored where possible. These include boundary erosion, entanglement, hidden feedback loops, undeclared consumers, data dependencies, changes in the external world, and a variety of system-level anti-patterns.

If you're reading this guide, you should read that paper. You can also listen to a podcast episode interviewing one of the authors of this paper.

That's not a comprehensive list, of course! They are just some gateways and starting-points. Know some other resources? Please share them, pull requests are welcome!

Peer review

OpenReview.net "aims to promote openness in scientific communication, particularly the peer review process."

More about OpenReview.net
  • Open Peer Review: We provide a configurable platform for peer review that generalizes over many subtle gradations of openness, allowing conference organizers, journals, and other "reviewing entities" to configure the specific policy of their choice. We intend to act as a testbed for different policies, to help scientific communities experiment with open scholarship while addressing legitimate concerns regarding confidentiality, attribution, and bias.
  • Open Publishing: Track submissions, coordinate the efforts of editors, reviewers and authors, and host… Sharded and distributed for speed and reliability.
  • Open Access: Free access to papers for all, free paper submissions. No fees.
  • Open Discussion: Hosting of accepted papers, with their reviews, comments. Continued discussion forum associated with the paper post acceptance. Publication venue chairs/editors can control structure of review/comment forms, read/write access, and its timing.
  • Open Directory: Collection of people, with conflict-of-interest information, including institutions and relations, such as co-authors, co-PIs, co-workers, advisors/advisees, and family connections.
  • Open Recommendations: Models of scientific topics and expertise. Directory of people includes scientific expertise. Reviewer-paper matching for conferences with thousands of submissions, incorporating expertise, bidding, constraints, and reviewer balancing of various sorts. Paper recommendation to users.
  • Open API: We provide a simple REST API [...]
  • Open Source: We are committed to open source. Many parts of OpenReview are already in the OpenReview organization on GitHub. Some further releases are pending a professional security review of the codebase.
  • OpenReview.net is created by Andrew McCallum’s Information Extraction and Synthesis Laboratory in the College of Information and Computer Sciences at University of Massachusetts Amherst

  • OpenReview.net is built over an earlier version described in the paper Open Scholarship and Peer Review: a Time for Experimentation published in the ICML 2013 Peer Review Workshop.

  • OpenReview is a long-term project to advance science through improved peer review, with legal nonprofit status through Code for Science & Society. We gratefully acknowledge the support of the great diversity of OpenReview Sponsors––scientific peer review is sacrosanct, and should not be owned by any one sponsor.

Production, Deployment, MLOps

If you are learning about MLOps but find it overwhelming, these resources might help you get your bearings:

Recommended awesomelists to save/star/watch:

Easier sharing of deep learning models and demos

  • 🐣 Replicate "makes it easy to share a running machine learning model"
    • Easily try out deep learning models from your browser
    • The demos link to papers/code on GitHub, if you want to dig in and see how something works
    • The models run in containers built by cog, "containers for machine learning."
      • It's an open-source tool for putting models into reproducible Docker containers.
      • You can put models in containers with just Python and YAML.
    • There's an API for Replicate to run predictions for you

Deep Learning

Take note: some experts warn us not to get too far ahead of ourselves, and encourage learning ML fundamentals before moving onto deep learning. That's paraphrasing from some of the linked coursework in this guide — for example, Prof. Andrew Ng encourages building foundations in ML before studying DL. Perhaps you're ready for that now, or perhaps you'd like to get started soon and learn some DL in parallel to your other ML learnings.

When you're ready to dive into Deep Learning, here are some helpful resources.

More deep learning links

Collaborate with Domain Experts

Machine Learning can be powerful, but it is not magic.

Whenever you apply Machine Learning to solve a problem, you are going to be working in some specific problem domain. To get good results, you or your team will need "substantive expertise" / "domain knowledge." Learn what you can, for yourself... But you should also collaborate with experts. You'll have better results if you collaborate with subject-matter experts and domain experts.

Machine Learning and User Experience (UX)

I couldn't say it better:

Machine learning won’t figure out what problems to solve. If you aren’t aligned with a human need, you’re just going to build a very powerful system to address a very small—or perhaps nonexistent—problem.

That quote is from "The UX of AI" by Josh Lovejoy. In other words, You Are Not The User. Suggested reading: Martin Zinkevich's "Rules of ML Engineering", Rule #23: "You are not a typical end user"

Skilling up

What are some ways one can practice?

One way: competitions and challenges

You need practice. On Hacker News, user olympus commented to say you could use competitions to practice and evaluate yourself. Kaggle and ChaLearn are hubs for Machine Learning competitions. (You can find more competitions here or here.)

You also need understanding. You should review what Kaggle competition winners say about their solutions, for example, the "No Free Hunch" blog. These might be over your head at first but once you're starting to understand and appreciate these, you know you're getting somewhere.

Competitions and challenges are just one way to practice! Machine Learning isn't just about Kaggle competitions.

Another way: try doing some practice studies

Here's a complementary way to practice: do practice studies.

  1. Ask a question. Start exploring some data. The "most important thing in data science is the question" (Dr. Jeff T. Leek). So start with a question. Then, find real data. Analyze it. Then ...
  2. Communicate results. When you think you have a novel finding, ask for review. When you're still learning, ask in informal communities (some are linked below).
  3. Learn from feedback. Consider learning in public, it works great for some folks. (Don't pressure yourself yet though! Everybody is different, and it's good to know your learning style.)

How can you come up with interesting questions? Here's one way. Pick a day each week to look for public datasets and write down some questions that come to mind. Also, sign up for Data is Plural, a newsletter of interesting datasets. When a question inspires you, try exploring it with the skills you're learning.

This advice, to do practice studies and learn from review, is based on a conversation with Dr. Randal S. Olson. Here's more advice from Olson, quoted with permission:

I think the best advice is to tell people to always present their methods clearly and to avoid over-interpreting their results. Part of being an expert is knowing that there's rarely a clear answer, especially when you're working with real data.

As you repeat this process, your practice studies will become more scientific, interesting, and focused. Also, here's a video about the scientific method in data science.)

More machine learning career-related links

More Data Science materials

Here are some additional Data Science resources:

Aside: Bayesian Statistics and Machine Learning

From the "Bayesian Machine Learning" overview on Metacademy:

... Bayesian ideas have had a big impact in machine learning in the past 20 years or so because of the flexibility they provide in building structured models of real world phenomena. Algorithmic advances and increasing computational resources have made it possible to fit rich, highly structured models which were previously considered intractable.

Here are some awesome resources for learning Bayesian methods.

(↑ Back to top)


More ways to "Dive into Machine Learning"

Here are some other guides to learning Machine Learning.

(↑ Back to top)

dive-into-machine-learning's People

Contributors

ankitkul avatar apeeyush avatar awesome-bot avatar cailurus avatar davidlowjw avatar dmnelson avatar dribnet avatar floer32 avatar fulldecent avatar hangtwenty avatar itko avatar jeffcore avatar jlar0che avatar jldohmann avatar jurilz avatar justmarkham avatar mchristos avatar mussont avatar omachain avatar prajjwal1 avatar qhfgva avatar rasbt avatar readmecritic avatar sagardubey3 avatar schmich avatar sohamm97 avatar svaksha avatar vishwajeetv avatar xkcao avatar zuzoovn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dive-into-machine-learning's Issues

Link to that great article on Machine Learning Mastery, but with caveats/framing

Submitted by @vishwajeetv

This guide sets pragmatic philosophy towards becoming a machine learning developer.

But I need to add some framing or caveats. From #38 ... I said:

"Dive into Machine Learning" is very carefully curated so far ... While the Brownlee article has a similar hack-first focus, I have issues with Brownlee's tone. I'm trying to put myself in the shoes of someone who has more experience with ML, and did get a PhD in it.

Maybe this is my issue: this article provides advice that may help some developers get into machine learning ... yet it has a lot of attitude, and that attitude is discouraging towards inquiry and curiosity. If everyone had the attitude of this article (at least, at some of its moments) ... there would be no machine learning field for developers to get into; nobody would get into math or research let alone something as "un-pragmatic" as machine learning research!

I will mull this over a bit. Sorry to delay :) Appreciate the PR, for sure

Add link to course Data 8: The Foundations of Data Science from UC Berkeley

I agree that hacking is the way you get started. But after going through the same process I struggled for some foundation later.

The Data 8 course and the inferential thinking textbook cover the foundations of data science. The course was designed for undergrads because students were struggling with concepts once taking advance topics at the grad level.

Also, the idea behind the course came from Prof. Micheal Jordon who is also linked to AMP Lab (the birth place for Spark).

PS: This is the only textbook with atleast a definition of Data Science compared to the Venn diagram which now has potentially 7-8 versions.

Wanted to confirm if you want to include this information:

  • Atleast a link
  • Or link with some description highlighting the importance of this course
  • Using the definition of data science as mentioned in the text book (separate PR)

I can raise a PR based on your response.

Validate pull requests with Travis

Hello, I wrote a tool that can validate README links (valid URLs, not duplicate). It can be run when someone submits a pull request.

It is currently being used by

Examples

If you are interested, connect this repo to https://travis-ci.org/ and add a .travis.yml file to the project.

See https://github.com/dkhamsing/awesome_bot for options, more information
Feel free to leave a comment 😄

edx course on Data 8

UC Berkeley now offering their Data 8 course via edX(MOOC) platform. Update the Data 8 section accordingly.

Add about the numpy arrays

The numpy array takes 13 milliseconds for its execution in an expression while a normal array takes about
several seconds for its operation

edX course on Data8

UC Berkeley now offering their Data 8 course via edX(MOOC) platform. Update the Data 8 section accordingly.

Note: The previous issue #105 with the same name was not resolved, so opening again.

Add Table of Contents at the Beginning of README

I think it's better for README to have a table of contents, with clickables to jump directly to each of the high-level section headline.
I feel it's a good first task for me as a rookie open-source contributor. Kindly remind me of do's and dont's regarding making changes and pull requests.

Video series about scikit-learn designed for machine learning beginners

Hello! I have a suggestion for the repo, and thought an issue might be the best place to post it.

I created a video series about scikit-learn, designed specifically for Python users with no background in machine learning or scikit-learn. I thought it might be useful for your readers. Here are the relevant links:

GitHub repo containing the notebooks - https://github.com/justmarkham/scikit-learn-videos
each notebook is related to a video - https://www.youtube.com/playlist?list=PL5-da3qGB5ICeMbQuqbbCOQWcS6OYBr5A
each notebook is also related to a blog post - http://blog.kaggle.com/author/kevin-markham/

If you'd like a quick overview of the series, it can be found here:
http://blog.kaggle.com/2015/04/08/new-video-series-introduction-to-machine-learning-with-scikit-learn/

As a side note, the first video in the series isn't really about scikit-learn, it's just an introduction to how machine learning "works". Thus, it could be worth a separate link in your repo:
https://www.youtube.com/watch?v=elojMnjn4kk&list=PL5-da3qGB5ICeMbQuqbbCOQWcS6OYBr5A&index=1

Anyway, I'm happy to answer any questions and appreciate your consideration!

Jupyter: go through guide, ensure compatibility

Prodded by this comment on DataTau.

I replied ...

When I first started putting this together, it was still just -- ipython notebook, and other notebooks. The unifying effort of Jupyter hadn't been released yet. I need to catch up here... After I know the full picture about how Jupyter is different from ipython notebook, any compatibility issues, etc., I will make a full pass through the guide to update anything needing updates.

Need a section about Deep Learning intro/way-out/next-steps if people are interested ... from someone who knows what they are talking about !

(braindump)

I've largely avoided having much deep learning links or neural nets links ... because it seems like it can be dangerous for beginners to jump ahead to those when they are not ready. I don't know enough about deep learning to really situate this beside just a couple links in a list ... let alone situate it in a sober, smart way :)

Recently, this MIT book about Deep Learning has been published, and judging by reactions it seems like a worthwhile resource to link to. I still don't want "everything and the kitchen sink" but this would be a good "essential resource" on the subject. Or maybe an expert knows a better choice.

So. Might want a small subsection to link to these two things, with the appropriate one or two sentence caveat that these are advanced topics, refer back to the pyramid showing that algorithm is least important (for many problems), etc etc. Maybe link to a Talking Machines episode too to give the appropriate context.

Can someone revise/ add color to the big data section ...?

There is already a section about Big Data but it needs some revision.

I've accumulated a couple links I want to throw in, but I may need assistance from an expert to keep this section tiny.

Preview of the revised links (add onto the links to Apache Spark etc. -- those will remain there)

Need advice about how to evaluate your proficiency

Please don't sell yourself as a Machine Learning expert while you're still in the Danger Zone. Don't build bad products or publish junk science. This guide can't tell you how you'll know you've "made it" into Machine Learning competence ... let alone expertise. It's hard to evaluate proficiency without schools or other institutions. This is a common problem for self-taught people. Your best bet may be: expert peers.

If you know a good way to evaluate Machine Learning proficiency, please submit a Pull Request to share it with us.

Need to tell people how they know they're out of the Danger Zone or how they know they are hire-able.

[notes to self/ thinking out loud] regarding human learning styles - "impasse-driven learning"

in this ticket, 'learning' refers to humans learning a topic, in general - it is not machine-learning hehe

I learned Python by hacking first, and getting serious later. [...] If this is your style, join me in getting a bit ahead of yourself

I've recently learned the term/concept of "impasse-driven learning" and it was a 💡 for me. Realized this is my preferred learning style. Some interesting papers exist (though I'm surprised how few): https://scholar.google.com/scholar?q=impasse-driven+learning

this guide is oriented towards that learning style. so I had the thought of adding a small note or link that points that out.

Include Orange in tools

I suggest to add Orange to the tools references.
Orange is an open source machine learning and data visualization for novice and expert.
Provides an interactive data analysis workflows with a large toolbox.

machine-learning-module -- add somewhere ?

This is a machine learning module I found here:

http://www.dcs.gla.ac.uk/~girolami/Machine_Learning_Module_2006/week_2/Lectures/wk_2_lect_2.pdf

None of this material is mine, it has all been created by Professor. M. A .Girolami.
This is hands down the best machine-learning tutorials I have found on the web, and I was afraid
the university link would be taken down, so now its on github.

i hope you enjoy this as much as i did.

https://github.com/josephmisiti/machine-learning-module

Bayesian methods

PULL REQUESTS WELCOME!

We already have this ...

Here's an IPython Notebook book about Probabilistic Programming and Bayesian Methods for Hackers: "An intro to Bayesian methods and probabilistic programming from a computation/understanding-first, mathematics-second point of view."

I've come across markdregan/Bayesian-Modelling-in-Python and it looks great. Should probably add a link to this, right around the quote above. But then it might be good to have a word or two link to some explanation of the exact relationship of Bayesian Modeling to ML ...

the inline link should link to 1+ of these:

Deep Frameworks/ TensorFlow vs. Theano vs. Torch

I should get wise to TensorFlow vs. Theano vs. Torch then update this snip of verbiage...

TensorFlow seems like a really big deal. [...]

maybe to something like

TensorFlow seems like a really big deal. It has to have its own bullet point. Now, it's still not magic. And it's not the only Deep Learning framework. But. You can bet people will do exciting things with TensorFlow, Theano, Torch and other machine learning frameworks that make complex algorithms more successful. Just remember: "More data beats a cleverer algorithm" (Domingos).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.