# BAIT509 - Business Applications of Machine Learning

This is the home page for BAIT 509 at the University of British Columbia.
This course is and introduction to machine learning concepts,
such as model training, model testing, generalization error and overfitting.
Exposure to a variety of machine learning techniques,
with deeper exploration of a few chosen techniques.
Forming good scientific questions to address business objectives with machine learning.
Python will be the primary programming language used.

Please see the [syllabus](https://bait509-ubc.github.io/BAIT509/2024BAIT509_course_outline.pdf) for more information about the course. Current students should refer to the [UBC Canvas course website](https://canvas.ubc.ca/courses/129201) for the most up-to-date content and announcements.

## Learning Objectives

By the end of the course, students are expected to be able to:

1.	Describe fundamental machine learning concepts such as: supervised and unsupervised learning, regression and classification, overfitting, training/validation/testing error, parameters and hyperparameters, and the golden rule.
2.	Broadly explain how common machine learning algorithms work, including: naïve Bayes, k-nearest neighbors, decision trees, support vector machines, and logistic regression.
3.	Identify when and why to apply data pre-processing techniques such as scaling and one-hot encoding.
4.	Use Python and the scikit-learn package to develop an end-to-end supervised machine learning pipeline.
5.	Apply and interpret machine learning methods to carry out supervised learning projects and to answer business objectives.


## Teaching Team

| Name                                         | Position   | Email               |Office hour|
| :---:                                        | :---:      | :---:               |:---:               |
| Quan Nguyen | Instructor | quan.nguyen@ubc.ca | Thursday 12:00-13:00 on [Zoom](https://ubc.zoom.us/j/61330948257?pwd=MUw3bmFBR3NiNi9tYlN4TWZPL0FSdz09)|
| Armin Saadat Boroujeni| TA         |                     ||
| Ailar Mahdizadeh| TA         |                     ||
| Mohammad Mahdi Asmae| TA         |                     ||
| Harsh Sharma| TA         |                     ||
| Julian Camilo Becerra Leon| TA         |                     ||
| Meltem Omur| TA         |                     ||

## Class Meetings

|  #    | Topic | Link | Interactive applets|
| :---: | :---: | :---: |:---: |
| 1     | Introduction to machine learning and decision trees | [Lecture 1](https://bait509-ubc.github.io/BAIT509/lectures/lecture1.html)| [Decision tree](https://mlu-explain.github.io/decision-tree/)
| 2     | Splitting and Cross-validation | [Lecture 2](https://bait509-ubc.github.io/BAIT509/lectures/lecture2.html) | [Train-test-validation](https://mlu-explain.github.io/train-test-validation/), [Cross-validation](https://mlu-explain.github.io/cross-validation/) |
| 3     | Baseline, k-Nearest Neighbours |[Lecture 3](https://bait509-ubc.github.io/BAIT509/lectures/lecture3.html) | |
| 4     | SVM with RBF Kernel and Feature Preprocessing | [Lecture 4](https://bait509-ubc.github.io/BAIT509/lectures/lecture4.html) | |
| 5     | Preprocessing Categorical Features and Column Transformer| [Lecture 5](https://bait509-ubc.github.io/BAIT509/lectures/lecture5.html) ||
| 6     | Naive Bayes and Hyperparameter Optimization| [Lecture 6](https://bait509-ubc.github.io/BAIT509/lectures/lecture6.html)||
| 7     | Linear Models| [Lecture 7](https://bait509-ubc.github.io/BAIT509/lectures/lecture7.html)||
| 8     | Business Objectives/Statistical Questions and Feature Selection | [Lecture 8](https://bait509-ubc.github.io/BAIT509/lectures/lecture8.html)||
| 9     | Classification and Regression Metrics | [Lecture 9](https://bait509-ubc.github.io/BAIT509/lectures/lecture9.html)||
| 10    | Multi-Class, Pandas Profiling, Finale | [Lecture 10](https://bait509-ubc.github.io/BAIT509/lectures/lecture10.html)| |

## Assessments

| Assessment    | Due    | Weight |
| :---:         | :---:  | :---:  |
| Assignment 1  | Jan 20 | 20%    |
| Assignment 2  | Jan 27 | 20%    |
| Quiz          | Jan 31 | 10%    |
| Assignment 3  | Feb 10 | 20%    |
| Final Project | Feb 17 | 30%    |

All assessments will be submitted through UBC Canvas.

## Supplementary Resources

- [Python Data Science Handbook](https://jakevdp.github.io/PythonDataScienceHandbook/) by Jake VanderPlas