Show HN: Python Machine Learning – A Crash Course
github.com
github.com
For me, this type of tutorial doesn't stick. I found the explanations in Joel Grus' book, which were accompanied by succinct, idiomatic Python implementations of the algorithms, much easier to understand.
- choosing the right algorithm(s) for the specific task and data at hand
- tuning hyperparameters
- interpreting preliminary results and/or the output of statistical tests
- chasing down and cleaning data(!!)
- deploying the resulting ML pipeline into something more maintainable than a GitHub repo of inconsistently named Jupyter Notebooks strewn with hardcoded paths to CSV files and dangerously obsolete documentation written by employees who have since left your company.
But I agree I wish there was more resources on that, it seems to be just a trial and error process.
Anyways I had to research a little into the subject and what I found is that there isn't a straightforward approach to choosing algorithms. I could be mistaken, but I believe the best approach for you would be to get intimate knowledge from every ml algorithm and maybe use a cheatsheet to guide you, but ultimately only knowing well your data set (distribution of classes, occurrences, which traits are better for which categorization you want to do etc..) will bring you farther than looking for a recipe for choosing an algorithm.
1. Find out what kind of information that is wanted from the model and what kind of data you have available that could help with this. 1b) And note down other requirements for the solution.
2. Find out how to formulated the information needs in terms of a well-understood and well-researched problem.
3. Find out what the current best performant and well-understood solutions are for this problem. Usually through a literature search.
4. Choose a few candidates, and rank them wrt your particular requirements.
5. Test out 1-3 of them
This is a business-needs-first, top-down type method. Prior knowledge of the details of a lot of algorithms not needed. Ability to understand terminology and quickly identify relevant material/papers critical. A good overview of common problem formulations and methods will build over time, and speeds things up immensely.
General ML: supervised vs unsupervised, K-means clustering, linear regression, logistic regression, maybe several enseble learning methods based on trees.
NNs: backpropagation, gradient descent, tensorflow, a bit about meta-param selection, CNNs (basically, just ImageNet), sometimes RNNs are mentioned.
This is all pretty entry-level and covered many times over, but, surprisingly, that's pretty much it. Discussion of models pretty much stops at ImageNet. I rarely see RBM or autoencoder, and pretty much nothing about how real problems are encoded into inputs and outputs.
I am ashamed to admit, but I still don't really understand how AlphaZero, AlphaStar or various language models (GPT, BERT) really work. Is there something good on that, maybe?
>> docker run -it --rm -v $(realpath ~/notebooks):/tf/notebooks -p 8888:8888 tensorflow/tensorflow:latest-py3-jupyter
One note, which may be confusing for beginning learners: why to choose one fitting method (e.g. least squares) over another (e.g. gradient descent)? Especially so, as libraries often pack a lot of alternatives.
Wait, that was annoying and didn't contribute to the discussion. Huh, really makes you think.
You could have let it be, but instead you derailed things further. All good, I learned something new about ellipsis + periods from someone else’s response.