This course covers the applied/coding side of algorithmics in machine learning and deep learning, with a smidgen of evolutionary algorithms.
Syllabus: What is machine learning (ML), Python, applying ML, supervised learning, dimensionality reduction, unsupervised learning, deep networks, evolutionary algorithms
Resources: Evolutionary Algorithms, Machine Learning, Deep Learning
- What is machine learning (ML)?
- Basics of Python programming
- Applying ML: evaluation, dataset splits, cross-validation, performance measures, bias/variance tradeoff, visualization, confusion matrix, choosing estimators, hyperparameter tuning, statistics
- Supervised learning: models, features, objectives, model training, overfitting, regularization, classification, regression, gradient descent, k nearest neighbors, linear regression, logistic regression, decision tree, random forest, adaptive boosting, gradient boosting, support vector machine, naïve Bayes
- Dimensionality reduction: principal component analysis
- Unsupervised learning: hierarchical clustering, k-means, t-SNE
- Deep networks: backpropagation, deep neural network, convolutional neural network
- Evolutionary algorithms: genetic algorithm,genetic programming
Here you can find short reads on various topics related to this course: machine learning, deep learning, evolutionary algorithms, artificial intelligence, and more.
(: my colab notebooks, : my medium articles)
-
Python
-
Artificial Intelligence
-
Date Science
-
Machine Learning Intro
-
Scikit-learn
-
ML Models
-
Decision trees
-
Random Forest
-
Linear Regression
-
Logistic Regression
-
Linear Models
-
Regularization: Ridge & Lasso
-
AdaBoost
-
Gradient Boosting
-
AddGBoost
-
Ensembles
-
XGBoost
-
Comparing ML algorithms
-
Gradient Descent
-
Choosing a Model
-
SVM
-
Bayesian
-
Metrics
-
ML in practice
-
Data Leakage
-
Dimensionality Reduction
-
Clustering
-
Hyperparameters
-
Some Topics in Probability
-
Feature Importances
-
Neural Networks
-
Deep Learning
- Neural Networks with À La Carte Selection of Activation Functions
- PyTorch
- PyTorch
- Double Descent
- Overparameterization, Backpropagation, Alimentation: Them and Us
- conv demo
- convolution
- A simple image convolution
- Implementing Image Processing Kernels from scratch using Convolution in Python
- Introduction to image generation (diffusion)
- Loss is Boss and other articles in the DL section
-
Large Language Models
-
DL and AI
-
Evolutionary Algorithms: Basics
-
Evolutionary Algorithms: Advanced
- Machine Learning Glossary
- Cheat Sheets for Machine Learning and Data Science
- The Illustrated Machine Learning Website
-
KN Neighbors
✔ Simple, No training, No assumption about data, Easy to implement, New data can be added seamlessly, Only one hyperparameter
✖ Doesn't work well in high dimensions, Sensitive to noisy data, missing values and outliers, Doesn't work well with large data sets — cost of calculating distance is high, Needs feature scaling, Doesn't work well on imbalanced data, Doesn't deal well with missing values -
Decision Tree
✔ Doesn't require standardization or normalization, Easy to implement, Can handle missing values, Automatic feature selection
✖ High variance, Higher training time, Can become complex, Can easily overfit -
Random Forest
✔ Left-out data can be used for testing, High accuracy, Provides feature importance estimates, Can handle missing values, Doesn't require feature scaling, Good performance on imbalanced datasets, Can handle large dataset, Outliers have little impact, Less overfitting
✖ Less interpretable, More computational resources, Prediction time high -
Linear Regression
✔ Simple, Interpretable, Easy to Implement
✖ Assumes linear relationship between features, Sensitive to outliers -
Logistic Regression
✔ Doesn’t assume linear relationship between independent and dependent variables, Output can be interpreted as probability, Robust to noise
✖ Requires more data, Effective when linearly separable -
Lasso Regression (L1)
✔ Prevents overfitting, Selects features by shrinking coefficients to zero
✖ Selected features will be biased, Prediction can be worse than Ridge -
Ridge Regression (L2)
✔ Prevents overfitting
✖ Increases bias, Less interpretability -
AdaBoost
✔ Fast, Reduced bias, Little need to tune
✖ Vulnerable to noise, Can overfit -
Gradient Boosting
✔ Good performance
✖ Harder to tune hyperparameters -
XGBoost
✔ Less feature engineering required, Outliers have little impact, Can output feature importance, Handles large datasets, Good model performance, Less prone to overfitting
✖ Difficult to interpret, Harder to tune as there are numerous hyperparameters -
SVM
✔ Performs well in higher dimensions, Excellent when classes are separable, Outliers have less impact
✖ Slow, Poor performance with overlapping classes, Selecting appropriate kernel functions can be tricky -
Naïve Bayes
✔ Fast, Simple, Requires less training data, Scalable, Insensitive to irrelevant features, Good performance with high-dimensional data
✖ Assumes independence of features -
Deep Learning
✔ Superb performance with unstructured data (images, video, audio, text)
✖ (Very) long training time, Many hyperparameters, Prone to overfitting
Resources: Evolutionary Algorithms, Machine Learning, Deep Learning
Vids
- John Koza Genetic Programming (YouTube)
- גיא כתבי - אלגוריתמים אבולוציוניים (YouTube) [גיא בוגר הקורס שלי: אלגוריתמים אבולוציוניים וחיים מלאכותיים]
- StatQuest with Josh Starmer
- ML YouTube Courses
- Machine Learning Essentials for Biomedical Data Science: Introduction and ML Basics
- Artificial Intelligence Under Fire: Attacking and Defending Deep Neural Networks
Basic Reads
- Genetic and Evolutionary Algorithms and Programming
- Choosing Representation, Mutation, and Crossover in Genetic Algorithms
- Introduction to Evolutionary Computing (course/book slides)
- 26 Top Machine Learning Interview Questions and Answers: Theory Edition
- 10 Popular Machine Learning Algorithms In A Nutshell
- Machine learning preparatory week @PSL
- Neural Networks and Deep Learning (coursera)
- Tinker With a Neural Network in Your Browser
- Common Machine Learning Algorithms for Beginners
Advanced Reads
- What can LLMs never do?
- Foundational Challenges in Assuring Alignment and Safety of Large Language Models
- “Explainability” Is a Poor Band-Aid for Biased AI in Medicine
- Some Techniques To Make Your PyTorch Models Train (Much) Faster
- GPT in 60 Lines of NumPy
- ROC-AUC
- Why video games are essential for inventing artificial intelligence
Books (🡇 means free to download)
- M. Sipper, Evolved to Win, Lulu, 2011 🡇
- M. Sipper, Machine Nature: The Coming Age of Bio-Inspired Computing, McGraw-Hill, New York, 2002
- A.E. Eiben and J.E. Smith, Introduction to Evolutionary Computing, Springer, 1st edition, 2003, Corr. 2nd printing, 2007
- R. Poli, B. Langdon, & N. McPhee, A Field Guide to Genetic Programming, 2008 🡇
- J. Koza, Genetic Programming: On the Programming of Computers by Means of Natural Selection, MIT Press, Cambridge, MA, 1992.
- S. Luke, Essentials of Metaheuristics, 2013 🡇
- A. Geron, Hands On Machine Learning with Scikit Learn and TensorFlow, 2017 🡇
- G. James, D. Witten, T. Hastie, R. Tibshirani, An Introduction to Statistical Learning, 2nd edition, 2021 🡇
- J. VanderPlas, Python Data Science Handbook
- K. Reitz, The Hitchhiker’s Guide to Python
- M. Nielsen, Neural Networks and Deep Learning
- Z. Michalewicz & D.B. Fogel, How to Solve It: Modern Heuristics, 2nd ed. Revised and Extended, 2004
- Z. Michalewicz. Genetic Algorithms + Data Structures = Evolution Programs. Springer-Verlag, Berlin, 3rd edition, 1996
- D. Floreano & C. Mattiussi, Bio-Inspired Artificial Intelligence: Theories, Methods, and Technologies, MIT Press, 2008
- A. Tettamanzi & M. Tomassini, Soft Computing: Integrating Evolutionary, Neural, and Fuzzy Systems, Springer-Verlag, Heidelberg, 2001
- M. Mohri, A. Rostamizadeh, and A. Talwalka, Foundations of Machine Learning, MIT Press, 2012 🡇
- Simon J.D. Prince, Understanding Deep Learning, MIT Press, 2023 🡇
Software
- EC-KitY: Evolutionary Computation Tool Kit in Python with Seamless Machine Learning Integration
- gplearn: Genetic Programming in Python, with a scikit-learn inspired and compatible API
- LEAP: Library for Evolutionary Algorithms in Python
- DEAP: Distributed Evolutionary Algorithms in Python
- Swarm Intelligence in Python (Genetic Algorithm, Particle Swarm Optimization, Simulated Annealing, Ant Colony Algorithm, Immune Algorithm, Artificial Fish Swarm Algorithm in Python)
- Scikit-learn: Machine Learning in Python
- Mlxtend (machine learning extensions)
- PyTorch (deep networks)
- Best-of Machine Learning with Python
- Fundamental concepts of PyTorch through self-contained examples
- Faster Python calculations with Numba
Datasets