giuseppec / DSCI_563_unsup-learn

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Important links

License

© 2021 Varada Kolhatkar, Rodolfo Lourenzutti, and Mike Gelbart

Software licensed under the MIT License, non-software content licensed under Attribution 4.0 International (CC BY 4.0) License. See the license file for more information.

Course learning outcomes

This course is about identifying underlying structure in data. We will talk about clustering, dimensionality reduction, word embeddings, and recommendation systems.

Click to expand!

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

  • Explain the unsupervised paradigm.
  • Explain the intuition behind clustering and use appropriate clustering algorithms for applications such as customer segmentation and document clustering.
  • Interpret the results obtained after applying clustering.
  • Explain the intuition behind dimensionality reduction.
  • Broadly explain and use linear dimensionality reduction techniques such as PCA, LSA, and NMF.
  • Explain the intuition of word2vec model to create word embeddings.
  • Train your own word embeddings and use pre-trained word embeddings.
  • Explain and build recommender systems, specifically using collaborative filtering approaches.

Deliverables

Click to expand!

The following deliverables will determine your course grade:

Assessment Weight Where to submit
Lab Assignment 1 15% Gradescope
Lab Assignment 2 15% Gradescope
Lab Assignment 3 15% Gradescope
Lab Assignment 4 15% Gradescope
Quiz 1 20% Canvas
Quiz 2 20% Canvas

See Calendar for the due dates.

Teaching team

Click to expand!
Role Name Slack Handle
Lecture instructor Varada Kolhatkar @varada
Lab instructor Varada Kolhatkar @varada
Teaching assistant Daniel Ramandi
Teaching assistant David Wakeham
Teaching assistant Dollina Dodani
Teaching assistant Matthew Nguyen
Teaching assistant Mobina Mahdavi
Teaching assistant Ngoc Bui

Class meetings

This course will be run in person. We will meet three times every week: twice for lectures and once for the lab. You can refer to the Calendar for lecture and lab times and locations. Lectures of this course will be a combination of a few pre-recorded videos, traditional live lecturing, and class activities. The night before each lecture, the material will be made available to you.

Lecture Schedule

This course occurs during Block 5 in the 2021/22 school year.

Lecture Topic Assigned videos Resources and optional readings
0 Course Information
1 K-Means Clustering 📹
  • Videos: 14.1, 14.2,14.3
  • sklearn clustering documentation
  • "Spaghetti Sauce" talk by Malcom Gladwell
  • Visualizing-k-means-clustering
  • Visualizing K-Means algorithm with D3.js
  • Clustering with Scikit with GIFs
  • 2 DBSCAN and Hierarchical Clustering 📹
  • Videos: 15.1, 15.2, 15.3
  • Comparison of sklearn clustering algorithms
  • DBSCAN Visualization
  • Clustering with Scikit with GIFs
  • 3 Dimensionality Reduction Intro 📹
  • Videos: 17.1, 17.2, 17.3
  • PCA visualization
  • Introduction to Machine Learning with Python book Chapter 3
  • Mike's PCA video from CPSC 340
  • StatQuest PCA video
  • 4 More PCA, LSA, NMF, Autoencoders No videos
    5 Word Vectors, Word Embeddings 📹
  • Videos: 18.1, 18.2, 18.3
  • Word2Vec papers:
  • Distributed representations of words and phrases and their compositionality
  • Efficient estimation of word representations in vector space
  • word2vec Explained
  • Debiasing Word Embeddings
  • 6 Using Word Embeddings, Manifold Learning No videos
  • t-SNE tutorial
  • How to use t-SNE effectively
  • LargeVis
  • UMAP
  • 7 Recommender Systems I No videos
  • Collaborative filtering for recommendation systems in Python, by N. Hug
  • How Netflix’s Recommendations System Works
  • 8 Recommender Systems II No videos
  • SVDfeature
  • Datasets

    Here is the list of Kaggle datasets we'll use in this class.

    If you want to be extra prepared, you may want to download these datasets in advance and save them under the lectures/data directory in your local copy of the repository.

    Labs

    The labs are going to be in person. We will also be holding a short 1-hour parallel Zoom session for each lab run by the TAs so that people who cannot join in person have an opportunity to ask questions and get help. You will be able to access appropriate Zoom links via Canvas.

    There will be a lot of opportunity for discussion and getting help during lab sessions. (Usually I enjoy labs a lot. It's also an opportunity for me to know you a bit better 🙂.)

    Installation

    We are providing you with a conda environment file which is available here. You can download this file and create a conda environment for the course and activate it as follows.

    conda env create -f env-dsci-563.yml
    conda activate 563
    

    In order to use this environment in Jupyter, you will have to install nb_conda_kernels in the environment where you have installed Jupyter (typically the base environment). You will then be able to select this new environment in Jupyter. For more details on this, refer to "Making environments work well with JupyterLab section" in your 521 lecture 8.

    I've only tried installing this environment file on a couple of machines, and it's possible that you will encounter problems with some of the packages from the yml file when you run the commands above. This is not unusual. It often means that the package with the given version is not available for your operating system via conda yet. There are a couple of options for you when this happens:

    1. Get rid of the line with that package from the yml file.
    2. Create the environment without that package.
    3. Activate the environment and install the package manually either with conda install or pip install in the environment.

    Note that this is not a complete list of the packages we'll be using in the course and there might be a few packages you will be installing using conda install later in the course. But this is a good enough list to get you started.

    Course communication

    Click to expand!

    We all are here to help you learn and succeed in the course and the program. Here is how we'll be communicating with each other during the course.

    Clarifications on the lecture notes or lab questions

    If there is any clarification on the lecture material or lab questions, I'll open an issue in the course repository and tag you. It is your responsibility to read the messages whenever you are tagged. (I know that there are too many things for you to keep track of. You do not have to read all the messages but please make sure to carefully read the messages whenever you are tagged.)

    Questions on lecture material or labs

    If you have questions about the lecture material or lab questions please post them on the course Slack channel rather than direct messaging me or the TAs. Here are the advantages of doing so:

    • You'll get a quicker response.
    • Your classmates will benefit from the discussion.

    I encourage you to use some consistent convention when you ask questions on Slack to facilitate easy search for others or future you. For example, if you want to ask a question on Exercise 3.2 from Lab 1, start your post with the label lab1-ex2.3. Or if you have a question on lecture 2 material, start your post with the label lecture2. Once the question is answered/solved, you can add "(solved)" tag before the label (e.g., (solved) lab1-ex2.3. Do not delete your post even if you figure out the answer on your own. The question and the discussion can still be beneficial to others.

    Questions related to grading

    For each deliverable, after I return grades, I'll let you know who has graded what by opening an issue in the course GitHub repository. If you have questions related to grading, please send a direct message to the appropriate TA on Slack and tag them. If you are unable to resolve the issue with the TA, include me in the conversation.

    Questions related to your personal situation or talking about sensitive information

    I am open for a conversation with you. If you want to talk about anything sensitive, please direct message me on Slack (and tag me) rather than posting it on the course channel. It might take a while for me to get back to you, but I'll try my best to respond as soon as possible.

    Working during the COVID-19 global pandemic

    Click to expand!

    We are working together on this course during a global pandemic. Everyone is struggling to some extent. If you tell me you are having trouble, I am not going to judge you or think less of you. I hope you will extend me the same grace!

    Here are some ground rules:

    • If you are unable to submit a deliverable on time, please reach out before the deliverable is due.
    • If you need extra support, the teaching team is here to work with you. Our goal is to help each of you succeed in the course.
    • If you are struggling with the material, the new hybrid teaching format, or anything else, please reach out. I will try to find time and listen to you empathetically.
    • If I am unable to help you, I might know someone who can. UBC has some great student support resources.

    Covid Safety at UBC

    Masks: This class is going to be in person. Masks are required indoors, including in classrooms, as per the BC Public Health Officer orders. For the purposes of this order, the term "masks" refers to medical and non-medical masks that cover our noses and mouths. Masks are a primary tool to make it harder for Covid-19 to find a new host. You will need to wear a medical or non-medical mask anytime you are indoors at UBC, for your own protection, and the safety and comfort of everyone else in the class. Please do not eat in the classroom. If you need to drink water/coffee/tea/etc, please keep your mask on between sips. Please note that there are some people who cannot wear a mask. These individuals are equally welcome in our class.

    Vaccination: If you have not yet had a chance to get vaccinated against Covid-19, vaccines are available to you, free, and on campus [http://www.vch.ca/covid-19/covid-19-vaccine]. The higher the rate of vaccination in our community overall, the lower the chance of spreading this virus. You are an important part of the UBC community. Please arrange to get vaccinated if you have not already done so.

    COVID-19 testing: UBC will require COVID-19 testing for all students, faculty and staff, with exemptions provided for those who are vaccinated against COVID-19: [https://news.ubc.ca/2021/08/26/ubc-implements-vaccine-declaration-and-rapid-testing-for-covid-19/]

    Your personal health: If you're sick, it's important that you stay home – no matter what you think you may be sick with (e.g., cold, flu, other). A daily self-health assessment is required before attending campus. Every day, before leaving home, complete the self-assessment for Covid symptoms using this tool.

    Stay home if you have Covid symptoms, have recently tested positive for Covid, or are required to quarantine. You can check this website to find out if you should self-isolate or self-monitor.

    Your precautions will help reduce risk and keep everyone safer. In this class, the marking scheme is intended to provide flexibility so that you can prioritize your health and still be able to succeed:

    • All course notes will be provided online.
    • All homework assignments can be done and handed in online.
    • All exams will be held online.
    • Most of the class activity will be video recorded and will be made available to you.
    • Before each class, I'll also try to post some videos on YouTube to facilitate hybrid learning.
    • There will be at least a few office hours which will be held online.

    Reference Material

    Click to expand!

    Books

    Linear algebra review

    Online courses

    Policies

    Please see the general MDS policies.

    About

    License:Other


    Languages

    Language:Jupyter Notebook 99.2%Language:Python 0.8%