Machine Learning with Python

Syllabus

Какво е "Машинно обучение"?

Машинното обучение (Machine Learning) е дисциплина, която се разглежда като под-направление и неразделна част от Изкуствения Интелект. Едни от първите алгоритми в областта са разработени още през 50-те години на 20ти век, но едва през последните 20 години популярността й започна главоломно да нараства. И ще продължава - с още по-високи темпове. Всички големи софтуерни компании използват Machine Learning техники и инвестират огромни средства в разработката на нови алгоритми и приложения.

Задавали ли сте си въпроса как вашият лаптоп/телефон разпознава точно вашето лице? Или как Google успяха за толкова кратко време да дигитализират огромно количество книги? Отговорът се крие в едно от направленията на Machine Learning - Image Classification.
Всички забелязваме как с всеки изминал ден търсачката на Google става все по "умна". Учудваме се, когато приложения като Netflix, Spotify и пр. доста бързо се "научават" да разпознават нашите вкусове и ни предлагат релевантни заглавия. Маркетинговите компании също използват "умни" системи за да "научат" нашите предпочитания и да ни предложат неустоими оферти... Да, зад всичко това отново се крият алгоритми от Machine Learning - т.нар. Recommendation Systems.
Подобни алгоритми се използват на практика и в множеството модерни системи, които се опитват да "предскажат" цените на пазара на имоти, борсови акции и пр. (Predictive Analytics).
Все по-често ставаме свидетели на "умни" програми, които побеждават професионалисти в игри като шахмат, "Джепарди!", дори и "Dota 2" или StarCraft II, където освен скорост се изисква и висока доза творчески интелект. Във всички тези, а и много други, примери се използват точно алгоритми от Machine Learning.

За курса

Темите, представени в настоящият курс са разработени от професионалист с повече от 10 години опит в областта.

Курсът е подходящ за хора с основни познания по програмиране (желателно на езика Python). Във въвеждащите теми се представят необходимите инструменти, които ще бъдат използвани: iPython, JupyterNotebook, Pandas, scikit-learn и др.

Разглеждат се основните алгоритми за Машинно Обучение с учител (Supervised Machine Learning), илюстрирани с множеството примери, но не оставаме на ниво "този код прави това". Опитваме се да разберем как и защо се случва "магията", като се обясняват математическите средства, които основополагат дадения алгоритъм. В края на всяка тема анализираме предимствата и недостатъците на разглеждания алгоритъм и дискутираме възможните му приложения за решаване на реални задачи.

В края на курса, се представят накратко и някои аспекти от обучението без учител (Unsupervised Learning), както и въведение в Изкуствените Неврони Мрежи (Artificial Neuron Networks), като модерни тенденции в развитието на т.нар. Deep Learning.
Накратко се представят и основите на Обработка на Естествен Език (Natural Language Processing) - модерна дисциплина, в която Машинното Обучение намира изключително голямо приложение. Курсистите ще приложат на практика усвоените знания, като обучат собствен модел за разпознаване на емоциите (Sentiment Analyses) в коментарите на дадена Facebook страница.

По време на курса, курсистите ще имат възможност да разработят самостоятелно, като курсов проект, модел за машинно обучение върху избрана от тях тематика. Успешната защита на проекта, както и решаването на множеството задачи за самостоятелна подготовка давани след всяка тема, ще бъдат основание за издаване на сертификат.

Програма

Toggle sub-themes

Getting Started

Course Overview

  1. About the course and the online resources being used.
  2. What you have to know/recap before starting the course?
  3. Mathematics in Machine Learning - an Overview
  4. What you'll learn and achieve.

Introduction to Machine Learning

  1. Machine Learning and Big Data, Deep Learning, Data Science and Artificial Intelligence - framing the concepts.
  2. Machine Learning application in today's real world.
  3. The Machine Learning process.

Machine Learning Tools - Set up the environment

  1. Why Python?
  2. Set up python, numpy, pandas, scikit-learn, Jupyter Notebooks, matplotlib.
  3. Git && GitHub.
  4. Test it with the Demo Project

Share and present your project with Jupyter Notebooks

  1. Getting started.
  2. Basic operations.
  3. JupyterLab - the next-generation web-based user interface for Project Jupyter.
  4. Upload your Jupyter Notebook to GitHub.
  5. Interact and share your Notebooks through Binder

Data analysis with NumPy and Pandas (in Jupyter)

  1. NumPy Ndim Arrays
  2. Pandas Data Structures (Series, DataFrame)
  3. Create DataFrames from various data file formats (json, csv, sql)
  4. Simple DataFrames manipulations.

Data visualization with Mathplotlib and Pandas

  1. Matplotlib overview (from really high perspective)
  2. Histograms.
  3. Density Plots.
  4. Correlation Matrix Plot.
  5. Scatterplot Matrix.
  6. Customizing labels and colors.

Supervised Learning

Overview of Machine Learning Techniques

  1. Supervised, Unsupervised, Reinforcement Learning.

Supervised Learning Overview

  1. Classification models.
  2. Predictions with Regression models.
  3. Generalization in Machine Learning.
  4. Feature Engineering
  5. The problems of Overfitting and Underfitting.

Get deep into ML Process - build our first model (Iris Flower Classifier)

  1. Revise the ML Process
  2. Check the prerequisites
  3. Build our first model (Iris Flower Classifier) with scikit-learn
  4. The k-Nearest Neighbors algorithm.
  5. Pros and cons of k-Neighbors classification.

Linear models for Classification and Regression

  1. Regression Models in Machine Learning.
  2. Linear Regression or ordinary least squares.
  3. Mean Squared Error and Bias-variance decomposition.
  4. Linear models for classification.
  5. The Logistic Regression Algorithm.
  6. Multi-class classification with Linear models.
  7. Experimenting with Generalized Linear Models in Scikit-learn.
  8. Pros and cons of Linear Models.

Naive Bayes classifiers

  1. A gentile introduction to probability theory
  2. Conditional probability
  3. The Bayes' theorem
  4. Gaussian Naive Bayes.
  5. Multinomial naive Bayes.
  6. Bernoulli naive Bayes.
  7. Pros and cons of Naive Bayes classifiers.

Decision Trees

  1. Representing algorithms with Decision Trees.
  2. Selecting the best feature to split the tree on.
  3. Recursive Binary Splitting.
  4. DecisionTreeClassifier in Scikit-learn.
  5. Building a Decision Trees Model for Credit Approval application.
  6. Pros and cons of Decision Trees.

Support Vector Machines (SVM) Algorithms

  1. Overview of Support Vector Machines.
  2. Support Vector Machines Classification.
  3. Maximizing the Margin between classes.
  4. Pros and cons of SVM.

The art of Features Engineering

  1. Feature extraction.
  2. Feature transformation.
  3. Feature selection.

Model Evaluation and Optimization

  1. Regularization.
  2. Cross-validation.
  3. Grid Search.

Unsupervised Learning

  1. What problems can we solve with Unsupervised Learning.
  2. An overview of (PCA) principal component analysis.
  3. Overview of Clustering Algorithms.
  4. Demo for K-means Clustering with scikit-learn.

A gentile introduction to Artificial Neural Networks (ANN)

  1. How ANN works?
  2. The Perceptron.
  3. Simple demo for Perceptron Learning Algorithm with Python.
  4. Towards Deep Learning.

Real-world examples

Machine Learning for Natural Language Processing (NLP)

  1. Building feature vectors from text documents ("bags of words" representation).
  2. Transform the features: Stemming, Stop-words removal.
  3. Normalise the features: using TF-IDF (Term Frequency - Inverse Document Frequency)
  4. Train a linear model to perform categorization.
  5. Evaluate the model performance on the test set.
  6. Parameter tuning and optimisation.

Build from scratch: Sentiment Analysis on Facebook Posts

  1. Get a Facebook group comments using the Facebook Graph API.
  2. Analysing and preparing the data.
  3. Transform and normalise the features.
  4. Train a linear model to perform categorization.
  5. Evaluate the model performance on the test set.