Библиография
[1] МГТУ, Дифференциальное исчисление функций многих переменных
Задача которая решаются - интерполяция, которая пытается угадать поведение на новых данных
Делается это так: рассматриваются параметризированные алгоритмы которую выполняют интерполяцию. Параметризация выполняется набором скалярных значений. Мат. модель такого алгоритма - строится с помощью простых на первый взгляд блоков (правда часто их большое кол-во).
Люди которые занимаются численными методами и математикой возможно скажут - "Это невозможно".
[1], стр.274 - В общем случае определить однозначно функцию по её значниям в конечном наборе точек нельзя, и речь может идти лишь о некотором приближении
Но почему-то специалисты в машинном обучении так "не считают", они настроены оптимистично.
Желание этой области - автоматически получить какой-то алгоритм, которые скорее всего работает нормально на новых данных. Точки по которым происходит построение модели
- могут иметь метки (supervisted learning) или
- не иметь таковых (unsupervise learning)
online learning - модификация постановка задачи построения модели, в том что нет никакого learn set, а есть поток запросов на которые нужно дать предсказания после предсказания система получает реальный ответ от пользователя.
Задача называемая регрессией в машинном обучении - это задача, которая называется интерполяцией или экстрополяции из разделе математики называемой конечномерной оптимизацией. Слово регрессия для студентов, которые только что закончили курс Теории Вероятности - это слово "регрессия" будет резать слух, т.к. в тер. вере оно означает M[Y|X], а в машинном обучении это нечто более абстрактное.
Бывают математические модели которые построены на основе бесконечномерной оптимизации. Данные задачи ставятся и решаются в вариационном исчислении. Но сколько я не видел статей и видео по машинному обучению, никто про это пока не говорит. Но я хочу подчеркнуть, что даже оптимизационные модели не заканчиваются на конечномерной оптимизации.
В машинном обучении игнорируют особые точки, так называемые outliers. Т.к. такие симплексы вносят особый характер в создаваемую модель. В машинном обучении их по просту игнорируют. Как решается проблема с такими точками в математической статистике - я не знаю. (todo: выяснить)
Обнаруживание outlier-ов:
Вариант 1. Выкидываем 10% данных строим модель, смотрим ошибку. Если ошибка построение модели уменьшилась то выкинули множество в котором были "аутлайеры"
Вариант 2. Выкидываем те точки у которых самая большая ошибка. Строим модель, смотрим ошибку. Если ошибка уменьшилась то выкинули множество в котором были "аутлайеры" для нашей модели.
Оценка модели:
1. множество train по которому подбираем скалярные параметры нашего алгоритма и test set для оценки модели
2. train/test split для оценки модели (cross validation). Разбить данное на k корзин(фолдов). Запустить обучение на k-1 данных, оценить ошибку на k-ой корзине. Повторить K раз выбирая для теста соответственно новую корзину. Усреднить посчитанную ошибку.
Термины:
Фича - один из способов задания объекта в пространстве этой задание его координат. В конечномерном базисе осей - конечное кол-во. (В бесконечномерном их вообще говоря бесконечно кол-во, но специалисты из машинного обучения игнорируют этот факт в своих рассказах). Фича это одна из координат в конечномерном пространстве.
Большой bias -- игнорирование данных которые нам предлагают для обучения (большая ошибка на training set). К этой ситуации приводит например использование малого количества фич.
Большой variance -- пытаемся повторять данные которыми обучаем алгоритм, это как правило приводит к плохому поведению
по предсказанию (большая ошибка на test set). К этой ситуации приводит например использование большого количества фич.
Хочу подчеркнуть, что к Коэффициенту вариации из мат.статистики никого отношения этот термин не имеет.
Эвристики:
1. Чем больше train set, тем меньше ошибаемся на другом test set. И этот рост нелинейный!
2. Хорошо применять эти методы там, где много данных.
3. Накачка данными улучшает качество алгоритма лучше чем тюнинг параметров
Типы данных (как правило):
1. Числа
2. Категории
3. Время, или Даты
4. Текст
1. Метод опорных векторов (SVM)
Взяли SAT теорему и применили к многомерному пространству. Есть множество элементов (математические точки). Эти элементы опишем как упорядоченные пары из декартового произведения двух множеств X и Y. Подход состоит в том чтобы провести прямую на "плоскости" X x Y такую что:
Точки из разных классов находятся по разные стороны от данной прямой
Параметры прямой подбираются так, что максимизируется минимальное расстояние точек до прямой
Если прямую провести не удаётся в исходных координатах. То производится
- Биективная замена координат точек с помощью подходящего нелинейного преобразования в попытках найти линию в новых координатах. По историческим причинам эти функцию называются kernel trick. Это центральный трюк во всём машинном обучении
- Если это получается, то обратным преобразованиях в исходные координаты, в виду нелинейности преобразования, эта разделяющая пряма будет иметь уже вид некоторой кривой
Этот подход называется - нелинейной интерполяцией в численных методах.
В то же время хочу отдать должное, что люди занимающимися машинным обучением обратили внимание не только на изменение скаляров составляющих в конце концов эти декартовы преобразования, но и так же иногда выполнятся "накачка" количества множеств в этом отображении, т.е. иногда раздувают этот изначальный X например отображениям R=>RxR
Моё образование мне не позволяет понять описание с википедии про SVM. Оно не для инженеров, и в нём много непонятных слов.
"Системы (в одной из формулировок) - это модель преобразования входа в выход. Инженеры - это те люди которые решают системы полноценно. Не инженеры - те кто застрял на входе." Такое представление вещей принадлежит не мне, а проф. Бреду Осгуду
Модификации алгоритма: Модификацией поставленной задачи по "минимазации зазора" - разрешить алгоритмы ошибаться и зашить это в целевую функция.
Черты:
1. Хорошо работает, когда данные можно разделить
2. Плохо работает в зашумлённых данных
2. Классификатор на основе формулы Байеса
Взяли формулу Байеса (из Теории Вероятности) и оценили апостериорную вероятность гипотез при наступлении событий. Выбрали гипотезу с максимальной вероятностью.
3. Наивный Байесовский классификатор (Naive Baise Classifier)
Приложение к оценке текстовых документов. Интересуемое событие есть пересечение других более элементарных событий (e.g. встретить предложение есть пересечение вероятность встретить составляющие предложения слов. Слово Naive означает то, что модель не учитывает порядок.
4. Decision tree
Очень популярный алгоритм. Здесь в отличие от svm не используются никакие нелинейные преобразования координат.
Строим разделяющие плоскости как в kd-tree ортогональные ортам.
Для разделения используем плоскость которая максимизирует.
information gain = энтропия(родителя) - взвешенная энтропия(дочерних узлов)
Веса даются в соответствии тому сколько узлов пошло в соответствующие ветки после разделения
Если имеется два класса максимальная энтропия равна 1 и максимально возможный Information Gain это 1.
Черты:
1. Просто использовать
2. Можно нарисовать алгоритм, и понять что он делает
3. Склонен к переобучению. Если у вас все листы дерева содержат один пример - то вы переобучены.
4. На основе деревьев решений можно строить на основе ensemble methods новые модели (ada boost, random forest)
5. Большое кол-во фичей делает дерво решение более сложным
5. Линейная регрессия
Взяли модель линейной регрессии из Теории Вероятности.
r^2 => 1 линейная модель идеально подходит для данных
r^2 => 0 плохо
(https://en.wikipedia.org/wiki/Coefficient_of_determination)
Модель можно наделить следующим смыслом: как бы представляем y=ax+N(0,sigma**2) и зная распределение y-ax от сюда
занимаемся максимизация условной функции правдоподобия
6. Замена координат с помощью сжатия
В машинном обучении это называется feature rescaling.
Деревьям решений по сути всё равно на это. Хоть сжимай, хоть не сжимай. Такая же ситуация и с линейной регрессией.
Да, решение другое, но другое оно только из-за масштабирования.
Действительно чувствительны к этому k-means, и svm. Алгоритмы сходятся к другому решению!
7. Когда использовать PCA, SVD.
-- поиск оси на которой вам кажется произойдёт хорошее проецирование данных
-- уменьшение размерности данных
-- уменьшение шума в данных
8. Метрики по оценке качеству модели
Точность(accuracy) - кол-во элементов предсказанных корректно по классу A / кол-во элементов в классе A
Confusion matrix - ошибки первого и второго рода из мат.статиcтики записали в матрицу
9. Комбинирование моделей
Bagging - построение нескольких интерполяционной моделей не по всем точкам, а по подмножествам. Затем усреднение результата работы нескольких моделей.
Random forest - для большей свободы модели при её построении - для моделей деревьев вывода предлагается строить модель на каждом шаге тренировки не по всем данным, а по подмножеству.
10. Персептрон
Персептрон -- h(AX), где AX линейная функция от вектора параметров x. а h -- единичный шаг. (Heaviside step).
Перспептрон трудно наделить каким-то вероятностым смыслом.
11. Логистическая регрессия
Максимизация функции правдоподобия условной вероятности.
Вопросы с которым я хочу разобраться в будущем
1. Как поступают с outlier-ми люди занимающиеся математической статистикой
2. Почему выкидываются промежуточные точки (ещё они называются via points в роботехнике). Т.е. очень странный подход их игнорирование. Если точки зашумлённые то я сам знаю какой шум, и я могу дать системе ограничение на то в какой диапазоне находится действительно число.
.............