Введение в анализ текстов на Python для ФГН — различия между версиями
Sggpls (обсуждение | вклад) (→3 модуль) |
Sggpls (обсуждение | вклад) |
||
(не показана одна промежуточная версия этого же участника) | |||
Строка 16: | Строка 16: | ||
Почта курса: [http://lingvo-python-ml@yandex.ru lingvo-python-ml@yandex.ru] | Почта курса: [http://lingvo-python-ml@yandex.ru lingvo-python-ml@yandex.ru] | ||
− | Чат курса в телеграм: https://t.me/joinchat/C3XPaw39FpiCBNJKwmqw-g | + | Чат курса в телеграм: [https://t.me/joinchat/C3XPaw39FpiCBNJKwmqw-g LingvoX] |
== 1 модуль == | == 1 модуль == | ||
=== Семинары === | === Семинары === | ||
− | '''02.09.17 Ознакомительный семинар | + | '''02.09.17 Ознакомительный семинар''' Краткое описание курса. Повторение основ программирования на Python: функции и области видимости, встроенные типы данных, модули и пространство имен. Среда разработки IDLE PyCharm. Разработка через тестирование TDD (модули doctest, pytest). Стиль кодирования (PEP8). |
− | '''09.09.17 Введение в ООП-0 | + | '''09.09.17 Введение в ООП-0''' Абстракция данных, инкапсуляция, наследование, полиморфизм. Класс, объект. Конструктор и деструктор. Перегрузка операторов-0. |
− | '''16.09.17 Продолжение ООП-1 | + | '''16.09.17 Продолжение ООП-1''' Передача аргументов в функцию (args, kwargs). Перегрузка операторов-1. Итераторы и генераторы. |
+ | |||
+ | '''23.09.17 Замыкания''' Декораторы. | ||
+ | |||
+ | '''30.09.17 Алгоритмы-0''' RAM-модель. Сложность алгоритмов и нотация Big-O. Бинарный поиск. Задача сортировки массива: quick-sort, merge-sort, timsort. | ||
+ | |||
+ | '''30.09.17 Структуры данных''' Ассоциативный массив. Хэш-таблицы. Обзор модуля collections. | ||
+ | |||
+ | '''07.10.17 Алгоритмы-1''' Графовые алгоритмы: Дейкстры, Прима, Крускала. Обзор модуля networkx. | ||
+ | |||
+ | '''14.10.17 Продолжение ООП-2''' Метапрограммирование. Паттерны проектирования. Модуль abc. | ||
+ | |||
+ | '''14.10.17 Работа с Web''' XML и HTML как деревья. Парсинг XML (модуль lxml). | ||
+ | |||
+ | '''21.10.17 Обзор полезных модулей''' Некоторые полезные модули. | ||
+ | |||
+ | '''28.10.17 Экзамен''' Финальный тест. Последний срок сдачи финального проекта. | ||
=== Правила оценивания === | === Правила оценивания === | ||
Строка 75: | Строка 91: | ||
# [https://github.com/faif/python-patterns Python patterns OOP] | # [https://github.com/faif/python-patterns Python patterns OOP] | ||
# [https://github.com/vinta/awesome-python Awesome Python, Много разных библиотек] | # [https://github.com/vinta/awesome-python Awesome Python, Много разных библиотек] | ||
− | == 3 | + | == 3 - 4 модули == |
=== Семинары === | === Семинары === | ||
− | '''13.01.18 Ознакомительный семинар.''' Правила оценивая курса | + | '''13.01.18 Ознакомительный семинар.''' Правила игры (правила оценивая курса). Постановки и примеры задач машинного обучения. Основные понятия. Задача классификации. |
− | '''20.01.18 Метрические классификаторы-0''' Метод | + | '''20.01.18 Метрические классификаторы-0.''' Метод ближайших соседей. Метрики качества: recall, precision, accuracy, f1-score. Скользящий контроль (k-fold CV). |
− | '''27.01.18 Метрические классификаторы-1''' Метод потенциальных функций. Метод окна Парзена. | + | '''27.01.18 Метрические классификаторы-1.''' Метод потенциальных функций. Метод окна Парзена. |
+ | |||
+ | '''03.02.18 Отбор признаков-0.''' Разбор 1-ой лабораторной работы. Метод Монте-Карло. Переборные алгоритмы отбора признаков: full search, add, del, add-del. | ||
+ | |||
+ | '''10.02.18 Линейный модели-0.''' Общий подход к построению линейных моделей. Линейная регрессия. Градиентный спуск. | ||
+ | |||
+ | '''17.02.18 Линейный модели-1.''' Логистическая регрессия. Метрики качества: roc-auc, pr-auc, log-loss. | ||
+ | |||
+ | '''24.02.18 Линейный модели-2.''' Переход в спрямляющее пространство. Метод опорных векторов. Kernel trick. | ||
+ | |||
+ | '''03.03.18 Векторные модели текста''' Разбор 2-ой лабораторной работы. Обзор векторных моделей текста. Расстояние между строками. | ||
+ | |||
+ | '''10.03.18 Байесовский классификатор''' Задача восстановления плотностей классов. Линейный дискриминант Фишера. Байесовский наивный классификатор. | ||
+ | |||
+ | '''17.03.18 Логические модели-0''' Логические модели. Деревья решений. | ||
+ | |||
+ | '''24.03.18 Композиции моделей-0''' Bias and variance tradeoff. Bootstrap aggregating. Случайный лес. | ||
+ | |||
+ | '''26.03.18 Композиции моделей-1''' Разбор 3-ей и 4-ой лабораторных работ. Стекинг и блендинг моделей. | ||
+ | |||
+ | '''31.03.18 Отбор признаков-1''' Статистические критерии. Регуляризация. Отбор на основе важности признаков. | ||
+ | |||
+ | '''07.03.18 Извлечение признаков''' Сингулярное разложение. Метод главных компонент. | ||
+ | |||
+ | '''14.04.18 Большие данные''' Визуализация больших данных. Алгоритм t-SNE. Разряженные матрицы. Библиотека Vowpal Wabbit. | ||
+ | |||
+ | '''21.04.18 Multi-label классификация''' Разбор 5-ой лабораторной работы. Методы решения multi label задач. | ||
+ | |||
+ | '''28.04.18 Композиции моделей-2 ''' Градиентный бустинг. | ||
+ | |||
+ | '''07.05.18 Композиции моделей-2''' xgboost vs. lightgbm vs. catboost | ||
+ | |||
+ | '''05.05.18 Разбор лаб. работ''' Разбор 6-ой и 7-ой лабораторных работ. Задача ранжирования поисковой выдачи. | ||
+ | |||
+ | '''12.05.18 Кластеризация-0''' Постановка задач кластеризации. Алгоритмы: k-means, x-means, c-means, EM. Метрики качества. | ||
+ | |||
+ | '''19.05.18 Кластеризация-1''' Алгоритмы: DBSCAN, спектральная кластеризация, графовые алгоритмы. | ||
+ | |||
+ | '''26.05.18 Полезные модули-0''' Модули: hyperopt, scikit-optimize. | ||
+ | |||
+ | '''02.06.18 Полезные модули-1''' Модули: scikit-multilearn, imbalanced-learn. | ||
+ | |||
+ | '''07.06.18''' Разбор 8-ой лабораторной работы. Разбор финальных решений первого конкурса. Позные трюки при решении конкурсов. | ||
+ | |||
+ | '''14.06.18 Повторение пройденного''' Коллективный тест "Собеседование на позицию junior data scientist" :) | ||
+ | |||
+ | '''23.06.18 Экзамен''' Разбор финальных решений второго конкурса. Выставление оценок. | ||
=== Правила оценивания === | === Правила оценивания === | ||
− | В | + | В 3 - 4 модулях ~20 семинаров. |
− | ''' | + | '''~8 домашних''' лабораторных '''работ''' стоимостью '''20 баллов каждая'''. |
− | ''' | + | [https://www.kaggle.com/c/competition-1-lingvo-hse-2018-spam-detection/ '''Конкурсное задание'''] в конце 3-го модуля стоимостью '''30 баллов'''. |
− | ''' | + | [https://www.kaggle.com/c/competition-2-lingvo-hse-2018-toxic-comment/ '''Конкурсное задание'''] в середине 4-го модуля стоимостью '''30 баллов'''. |
− | По желанию: | + | По желанию: в конце 4-го модуля можно будет увеличить оценку на 1 балл по десятибалльной шкале, доделав часть несданных лаб. работ. |
Шкала перевода баллов в итоговую оценку представлена в таблице. | Шкала перевода баллов в итоговую оценку представлена в таблице. | ||
Строка 101: | Строка 163: | ||
! Итоговая оценка !! Суммарные баллы | ! Итоговая оценка !! Суммарные баллы | ||
|- | |- | ||
− | | Отлично (10) || | + | | Отлично (10) || 160+ |
|- | |- | ||
− | | Отлично (9) || | + | | Отлично (9) || 150+ |
|- | |- | ||
− | | Отлично (8) || | + | | Отлично (8) || 140+ |
|- | |- | ||
− | | Хорошо (7) || | + | | Хорошо (7) || 120+ |
|- | |- | ||
− | | Хорошо (6) || | + | | Хорошо (6) || 110+ |
|- | |- | ||
− | | Удовлетворительно (5) || | + | | Удовлетворительно (5) || 90+ |
|- | |- | ||
− | | Удовлетворительно (4) || | + | | Удовлетворительно (4) || 70+ |
|- | |- | ||
− | | Незачет || менее | + | | Незачет || менее 70 |
|} | |} | ||
− | |||
− | |||
=== Полезные литература и ссылки === | === Полезные литература и ссылки === | ||
− | # [https://www. | + | # [https://www.dataquest.io/blog/jupyter-notebook-tips-tricks-shortcuts/ 28 jupyter-notebook tips and tricks] |
− | + | # [https://www.youtube.com/watch?v=qLBkB4sMztk, Видеолекции Воронцова от ШАД] | |
− | + | # [https://www.datacamp.com/community/tutorials/seaborn-python-tutorial, Seabor vizualization tutorial] | |
− | + | # [http://www2.compute.dtu.dk/pubdb/views/edoc_download.php/6814/pdf/imm6814.pdf, 100 страничная брошюра кратко описывающая принципы работы с основные библиотеками курса (numpy, pandas, scipy, sklearn, nltk etc)] | |
− | # [https://www.youtube.com/watch?v= | + | |
− | # [ | + | |
− | + | ||
− | # [http:// | + | |
− | + | ||
− | + | ||
− | + | ||
− | + |
Текущая версия на 11:06, 28 июня 2018
Содержание
Описание курса
О курсе
Курс читается на 3 курсе факультета гуманитарных наук для групп БКЛ151 и БКЛ152 в 1, 3 и 4 модулях.
Семинарист: Сергей Кабанов
Ассистенты: Алие Тефикова и Анастасия Родыгина
Семинары проходят по субботам, 3-я и 4-я пары, ауд. 509.
Просьба, по возможности, приходить со своими ноутбуками.
Полезные ссылки
Почта курса: lingvo-python-ml@yandex.ru
Чат курса в телеграм: LingvoX
1 модуль
Семинары
02.09.17 Ознакомительный семинар Краткое описание курса. Повторение основ программирования на Python: функции и области видимости, встроенные типы данных, модули и пространство имен. Среда разработки IDLE PyCharm. Разработка через тестирование TDD (модули doctest, pytest). Стиль кодирования (PEP8).
09.09.17 Введение в ООП-0 Абстракция данных, инкапсуляция, наследование, полиморфизм. Класс, объект. Конструктор и деструктор. Перегрузка операторов-0.
16.09.17 Продолжение ООП-1 Передача аргументов в функцию (args, kwargs). Перегрузка операторов-1. Итераторы и генераторы.
23.09.17 Замыкания Декораторы.
30.09.17 Алгоритмы-0 RAM-модель. Сложность алгоритмов и нотация Big-O. Бинарный поиск. Задача сортировки массива: quick-sort, merge-sort, timsort.
30.09.17 Структуры данных Ассоциативный массив. Хэш-таблицы. Обзор модуля collections.
07.10.17 Алгоритмы-1 Графовые алгоритмы: Дейкстры, Прима, Крускала. Обзор модуля networkx.
14.10.17 Продолжение ООП-2 Метапрограммирование. Паттерны проектирования. Модуль abc.
14.10.17 Работа с Web XML и HTML как деревья. Парсинг XML (модуль lxml).
21.10.17 Обзор полезных модулей Некоторые полезные модули.
28.10.17 Экзамен Финальный тест. Последний срок сдачи финального проекта.
Правила оценивания
В модуле 10 семинаров.
10 домашних лабораторных работ стоимостью 10 баллов каждая.
Домашний мини-проект с ревью кода стоимостью 40 баллов.
Финальный тест в классе стоимостью 40 баллов.
По желанию: индивидуальное домашнее задание стоимостью 20 баллов.
Шкала перевода баллов в итоговую оценку представлена в таблице.
Итоговая оценка | Суммарные баллы |
---|---|
Отлично (10) | 140+ |
Отлично (9) | 130+ |
Отлично (8) | 120+ |
Хорошо (7) | 100+ |
Хорошо (6) | 90+ |
Удовлетворительно (5) | 70+ |
Удовлетворительно (4) | 60+ |
Незачет | менее 60 |
Лабораторные работы отправлять на почту курса не позднее начала следующего семинара, если не оговорено иное. Правила формления: надо упаковать в архив все решения и тесты задач, решения называть solutionномер.py, архив назвать labномер-имя-фамилия-номер группы.rar, тема письма labномер-имя-фамилия-номер группы
Полезные литература и ссылки
- Лутц, Изучаем Python, 4-е издание, 2011
- Brad Miller, David Ranum, Problem Solving with Algorithms and Data Structures, Release 3.0, 2013
- Michael T. Goodrich, Data Structures and Algorithms in Python, 1st edition, 2013
- Т.Кормен, Ч.Лейзерсон, Р.Ривест, К.Штайн - Алгоритмы. Построение и анализ. Издание 3-е, 2013
- Умнов, Видиолекции ШАДа по Python
- PEP8, коротко, на русском
- Code Like a Pythonista: Idiomatic Python
- A Curious Course on Coroutines and Concurrency
- Python patterns OOP
- Awesome Python, Много разных библиотек
3 - 4 модули
Семинары
13.01.18 Ознакомительный семинар. Правила игры (правила оценивая курса). Постановки и примеры задач машинного обучения. Основные понятия. Задача классификации.
20.01.18 Метрические классификаторы-0. Метод ближайших соседей. Метрики качества: recall, precision, accuracy, f1-score. Скользящий контроль (k-fold CV).
27.01.18 Метрические классификаторы-1. Метод потенциальных функций. Метод окна Парзена.
03.02.18 Отбор признаков-0. Разбор 1-ой лабораторной работы. Метод Монте-Карло. Переборные алгоритмы отбора признаков: full search, add, del, add-del.
10.02.18 Линейный модели-0. Общий подход к построению линейных моделей. Линейная регрессия. Градиентный спуск.
17.02.18 Линейный модели-1. Логистическая регрессия. Метрики качества: roc-auc, pr-auc, log-loss.
24.02.18 Линейный модели-2. Переход в спрямляющее пространство. Метод опорных векторов. Kernel trick.
03.03.18 Векторные модели текста Разбор 2-ой лабораторной работы. Обзор векторных моделей текста. Расстояние между строками.
10.03.18 Байесовский классификатор Задача восстановления плотностей классов. Линейный дискриминант Фишера. Байесовский наивный классификатор.
17.03.18 Логические модели-0 Логические модели. Деревья решений.
24.03.18 Композиции моделей-0 Bias and variance tradeoff. Bootstrap aggregating. Случайный лес.
26.03.18 Композиции моделей-1 Разбор 3-ей и 4-ой лабораторных работ. Стекинг и блендинг моделей.
31.03.18 Отбор признаков-1 Статистические критерии. Регуляризация. Отбор на основе важности признаков.
07.03.18 Извлечение признаков Сингулярное разложение. Метод главных компонент.
14.04.18 Большие данные Визуализация больших данных. Алгоритм t-SNE. Разряженные матрицы. Библиотека Vowpal Wabbit.
21.04.18 Multi-label классификация Разбор 5-ой лабораторной работы. Методы решения multi label задач.
28.04.18 Композиции моделей-2 Градиентный бустинг.
07.05.18 Композиции моделей-2 xgboost vs. lightgbm vs. catboost
05.05.18 Разбор лаб. работ Разбор 6-ой и 7-ой лабораторных работ. Задача ранжирования поисковой выдачи.
12.05.18 Кластеризация-0 Постановка задач кластеризации. Алгоритмы: k-means, x-means, c-means, EM. Метрики качества.
19.05.18 Кластеризация-1 Алгоритмы: DBSCAN, спектральная кластеризация, графовые алгоритмы.
26.05.18 Полезные модули-0 Модули: hyperopt, scikit-optimize.
02.06.18 Полезные модули-1 Модули: scikit-multilearn, imbalanced-learn.
07.06.18 Разбор 8-ой лабораторной работы. Разбор финальных решений первого конкурса. Позные трюки при решении конкурсов.
14.06.18 Повторение пройденного Коллективный тест "Собеседование на позицию junior data scientist" :)
23.06.18 Экзамен Разбор финальных решений второго конкурса. Выставление оценок.
Правила оценивания
В 3 - 4 модулях ~20 семинаров.
~8 домашних лабораторных работ стоимостью 20 баллов каждая.
Конкурсное задание в конце 3-го модуля стоимостью 30 баллов.
Конкурсное задание в середине 4-го модуля стоимостью 30 баллов.
По желанию: в конце 4-го модуля можно будет увеличить оценку на 1 балл по десятибалльной шкале, доделав часть несданных лаб. работ.
Шкала перевода баллов в итоговую оценку представлена в таблице.
Итоговая оценка | Суммарные баллы |
---|---|
Отлично (10) | 160+ |
Отлично (9) | 150+ |
Отлично (8) | 140+ |
Хорошо (7) | 120+ |
Хорошо (6) | 110+ |
Удовлетворительно (5) | 90+ |
Удовлетворительно (4) | 70+ |
Незачет | менее 70 |