- •Ссылки на лекции
- •Удобные функции: Функция с сохранением
- •Функция, создающие аргументы для двумерного графика
- •Загрузка файлов в Colab (на примере архива с изображениями деревьев)
- •Лабораторная работа № 1. Работа с изображениями
- •Лабораторная работа № 2. Подготовка изображений для машинного обучения
- •Лабораторная работа № 3. Классификация изображений на основе логистической регрессии
- •Лабораторная работа № 4. Проверка гипотезы
- •Лабораторная работа № 5. Метод главных координат.
- •Лабораторная работа № 6. Кривые обучения.
- •Лабораторная работа № 7. Машинное обучение без учителя.
- •Лабораторная работа № 8. Обнаружение аномалий.
Лабораторная работа № 4. Проверка гипотезы
Дано: Набор изображений со спутника с деревьевьями и без (см. прошлую работу)
Теория:
Порог принятия решения
Гипотеза логистической регрессии показывает вероятность того, что ответ ‘да’ (y=1).
Чтобы принять решение по гипотезе (нет или да), нужно сравнить с гипотезу с порогом:
h(x) > порог => ‘да’, иначе ‘нет’
Обычно порог выбирают 0.5 (принимаем решение, что ‘да’, если вероятность больше 50%), но иногда в зависимости от данных и задачи выгоднее принимать другие пороги.
Метрика Точность/полнота (Precision/Recall)
Точность - отношение правильных положительных ответов (h→1 при y=1) к всем положительным (согласно гипотезе) ответам (h->1)
Precision: P = ИП / (ЛП + ИП)
Полнота -- отношение правильных положительных ответов (h→1 при y=1) к всем положительным (по факту) ответам (y = 1)
Recall: R = ИП / (ЛО + ИП)
ИП -- истнноположительные ответы (h→1 при y=1)
ЛП -- ложноположительные ответы (h→1 при y=0)
ЛО -- ложноотрицательные ответы (h→0 при y=1)
F1-score -- комбинация точности и полноты
F1 = 2PR / (P + R)
Задание:
Подготовка. Для скорости выполнения обучения, во время отладки использовать 10 изображений (6 для обучения, по 2 для кроссвалидации и тестирования, потом увеличить.
1. Провести машинное обучение согласно лабораторной работе № 3.
По данным кроссвалидации:
2. Определить точность и полноту метода (precision/recall) (при пороге принятия решения 0.5)
3. Определить F-score метода (при пороге принятия решения 0.5)
4. Найти и построить зависимость F-score от порога принятия решения (h(x) > порог -> Деревья есть)
порог |
0 |
0.1 |
0.2 |
0.3 |
0.4 |
0.5 |
0.6 |
0.7 |
0.8 |
0.9 |
1 |
F |
|
|
|
|
|
|
|
|
|
|
|
5. Определить оптимальный порог по зависимости из п. 5.
По данным для тестирования:
6. Определить относительное количество ошибок (в процентах) при оптимальном пороге
7. Определить F-score при оптимальном пороге
Лабораторная работа № 5. Метод главных координат.
Цель работы: Научиться уменьшать количество данных с помощью метода главных координат.
Теория.
Во многих процессах разные параметры могут зависеть друг от друга. Например, скорость человека и пройденное им расстояние, радиус и периметр окружности и т.д. Поэтому часто можно уменьшить количество параметров без значимой потери информации. В результате можно хранить или передавать меньше параметров, а в случае машинного обучения меньше параметров позволяют выполнить обучение быстрее.
При этом требуется создать такие новые параметры на базе исходных, чтобы при обратном преобразовании (поиск исходных по преобразованным) была минимальная ошибка.
Метод главных координат позволяет найти такие новые параметры, чтобы при восстановлении исходных параметров сумма квадратов отклонений восстановленных параметров от исходных была минимальна.
Для этого применяется следующий алгоритм:
Сначала параметры нормируются таким образом, чтобы среднее значение каждого параметра было равно 0. Для большей точности преобразования лучше, если все параметры имеют один масштаб.
Находится ковариационная матрица, в которой каждый элемент определяется следующим выражением (для случая, если среднее значение параметра равно 0):
где j и k – номера параметров, i – номер образца, x – параметр, N – количество изображений. В матричном виде это преобразование представляется как:
В результате
показывает взаимную зависимость j-го и
k-го параметра. Собственные вектора этой
матрицы – это новые координаты параметров
такие, что каждый новый параметр не
зависит от других. Получить матрицу
собственных векторов можно с помощью
сингулярного разложения ковариационной
матрицы, которое производится с помощью
функции:
numpy.linalg.svd(M)
Данная функция возвращает три параметра, первый из которых – матрица собственных векторов, в которой каждый столбец – собственный вектор матрицы M:
При этом особенность полученных векторов в том, что левые содержат больше информации, чем правые. И для уменьшения количества конечных параметров нужно взять только левые k векторов (где k – целевое количество параметров).
Новые параметры можно получить за счёт умножения матрицы исходных параметров (X) на вектор Ur:
где Ur – левые k столбцов матрицы U, Xn – матрица новых параметров, размером (n x k)
Обратное преобразование можно сделать, умножив матрицу Xn на транспонированную матрицу Ur.
Дано: Набор изображений со спутника с деревьевьями и без (см. прошлую работу)
Задание:
Необходимо преобразовать изображения (уменьшить размер) с помощью метода главных координат таким образом, чтобы все изображения поместились в хранилище заданного размера.
1. Определить размер одного несжатого изображения в байтах (считать, что каждая компонента каждого пикселя -- это 1 байт информации)
2. Определить размер всего набора изображений.
3. Определить максимальный размер каждого сжатого изображения с учётом размера хранилища всех изображений по номеру варианта:
j % 10 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
Размер, kB |
420 |
600 |
720 |
500 |
800 |
480 |
650 |
620 |
900 |
850 |
4. Определить количество параметров (главных координат), которые можно оставить (считать, что каждый параметр занимает один байт информации.
5. Составить матрицу X из параметров изображений (каждая строка -- набор параметров изображения - см. лаб. раб. 2, 3 пункт)
6. Найти ковариационную матрицу для параметров изображений (нормированных)
7. Найти матрицу собственных векторов для ковариационной матрицы.
8. Составить матрицу преобразования из матрицы собственных векторов с учётом найденного в пункте 4 количества информации. (Для ускорения программы для проверки использовать часть изображения 10х10 пикселей)
9. Сжать первое изображение, где есть деревья, и первое изображение, где нет деревьев, с помощью найденной матрицы преобразования:
а) Представить изображения в виде вектора параметров
б) Применить матрицу преобразования к этому вектору.
в) Оценить размер получившегося вектора (считать, что каждый элемент вектора -- это 1 байт информации)
10. Восстановить из сжатого изображения исходное:
а) Применить обратное преобразование к сжатому вектору изображения
б) Восстановить значения параметров (с учётом нормировки)
в) Преобразовать форму восстановленного вектора, чтобы получилась матрица изображения
11. Отобразить на экране исходные и восстановленные изображения.
Приложение.
Сингулярное разложение – сложный алгоритм, время работы которого сильно увеличивается с увеличением количества элементов в массиве. Для его ускорения можно применять неточные, но быстрые алгоритмы, например randomized_svd пакета sklearn:
from sklearn.utils.extmath import randomized_svd
U, _, _ = randomized_svd(C, n_components=n_components)
где n_components – количество оставляемых компонент
Примечание: Функция работает быстро, если требуется оставить мало компонент.
