Upload
cs-center
View
260
Download
2
Embed Size (px)
Citation preview
Instance based learning
И. Куралёнок, Н. Поваров
Яндекс
СПб, 2016
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 1 из 27
Содержание
1 Принцип локальности2 k-ближайших соседей
kNNМетоды прототипирования
3 Лирическое отступление: проклятье размерности4 Адаптивные соседи5 Поиск k-ближайших соседей
kd-treeLocality-Sensitive Hashing
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 2 из 27
Принцип локальности(совсем не физика)Близкие точки похожи!
что значит близки?lq, косинусная мера, Mahalanobis distance,KL-divergence, более хитрые преобразования,Metric Learning etc.что значит похожи?близкие значения целевой функции, возможностипростой аппроксимации, схожее распределение,etc.что значит точки?точки из learn, центройды классов, прочиепрототипные точки.
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 3 из 27
Алгоритм k-NN
1 Вычислим значения факторов из интересующейнас точки.
2 Найдём k ближайших соседей по выбранной мереиз learn’а.
3 Аггрегируем значения искомой характеристикидля найденных точек (попробуем провестиотдельный семинар).
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 4 из 27
Параметры k-NN
Сколько точек выбрать?ничего лучше подбора по validate или crossfoldvalidation не придумалиКак искать соседей?см. вторую частьСпособ агрегации.голосовалка, усреднение, моделированиераспределения
Далее речь пойдет про мульти-классификацию на Kклассов.
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 5 из 27
Сколько точек выбрать I
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 6 из 27
Сколько точек выбрать II
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 7 из 27
Свойства k-NN
Очень часто работает!Простота реализации и наглядность.Ничего не требует на стадии обучения.Известная оценка сверху эффективности приотсутствии bias’а в learn’е.
BE = 1− p(x |k∗)E =
∑Ki=1 p(x |k)(1− p(x |k))
BE ≤ E ≤ 2BE
Часто требователен на фазе решения (!)
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 8 из 27
Основные способы прототипирования
Может много точек и не надо? Будет быстрееработать, глаже границы.Как выбрать прототипные точки:
выбрать рандомно;покластеризовать каждый класс(напримерk-means’ами) и назначить центроидыпрототипами;выбрать как-нибудь точки и подвигать ихподальше от границ классов.
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 9 из 27
Learning Vector Quantization
1 построить вашим любимым методом прототипныеточки;
2 до сходимости уменьшая ε (learning rate):1 Случайно, равномерно выберем точку x из learn’а с
возвращением2 Найдём ближайший прототип
прототип нужного класса: подвинем его ближеmt+1
j = mtj + ε(x −mt
j )"чужой"прототип: подвинем его подальше
mt+1j = mt
j − ε(x −mtj )
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 10 из 27
Проклятье размерностиЧто происходит с расстояниями когда размерностьувеличивается?Проведем простой опыт: будем равномерно выбиратьточки из кубика [0, 1]n ⊂ R.Оказывается, что при увеличении n:
Точки все ближе “жмутся” к краюУглы между точками выравниваютсяОкрестности все чаще упираются в границыДля того, чтобы пространство было плотным надослишком много точек
⇒ Большая размерность — зло для kNN и не толькодля него!
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 11 из 27
Проклятье размерности в картинках
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 12 из 27
One more problem
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 13 из 27
Discriminant Adaptive Nearest-Neighbor(DANN)Идея: а давайте в расстоянии учитывать локальную топологию вискомой точке Выберем много ближайших соседей (напримерm=50):
T = mΣ =∑m
i=1(xi − µ(x))(xi − µ(x))T
=∑K
k=1
∑i∈Ik (xi − µk(x))(xi − µk(x))T
+∑K
k=1(µk(x)− µ(x))(µk(x)− µ(x))T
= W + B
Пересчитаем все расстояния для k-NN:
D(x , x0) = (x − x0)TD(x − x0)
D = W− 12 (W− 1
2BW− 12 + εE )W− 1
2
Заметим, что ранги матриц, которые мы используем не болееm. Получается очень точный, но крайне медленный метод.
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 14 из 27
DANN результат
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 15 из 27
Поиск ближайших соседей
Это область на годовой курс, так что за поллекции мыничего не успеем :).
Линейный поискРазбиение пространстваЧувствительное к локальности хеширование (LSH)Кластерный/Пожатый поискДеревья в пространстве меньшей размерности
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 16 из 27
kd-дерево
Идея: разложим множество по поторому будем искатьв бинарное дерево с простыми условиями иконкретными точками в узлах. Будем надеяться направило треугольника (не подходит для cosine(!))Некоторые свойства:
Один из самых простых способов поискаближайших соседейРаботает только в малых размерностяхЗатратные алгоритмы перестроения (если нужнадинамика смотрим R-деревья)
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 17 из 27
kd-дерево: построение
1 По циклу, или рандомно выбираем ось.2 Ищем точку, разбивающую множество на как
можно более равные части.3 Повторяем 1-2 для каждого из получившихся
подмножеств
Сложность: O(n log n)
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 18 из 27
kd-дерево: построение (в картинках)
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 19 из 27
kd-дерево: поиск1 Бежим по бинарному дереву поиска2 Когда добежали, сохраняем листовую точку как x̄
- текущую лучшую3 Бежим обратно вверх по дереву:
1 если текущая точка лучше то теперь она x̄ ;2 сравниваем расстояние от точки-запроса до
гиперплоскости текущего уровняпересекает: не повезло, бежим в поддеревоне пересекает: повезло, бежим наверх
4 Повторяем 1-3 для каждого из получившихсяподмножеств пока делятся
Сложность сильно зависит от множества: в лучшемслучае O(log n), в худшем O(nN1− 1
n ) Классическийпример проклятия размерности.
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 20 из 27
kd-дерево: поиск (в картинках)
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 21 из 27
kd-дерево: свойства
1 Необходимо правило треугольника2 Исходит из одинаковости направлений3 Работает только в малых размерностях.
⇒ точно искать в реальных условиях не получается,будем неточно
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 22 из 27
Немного определений
Рандомизированнный R-ближайший сосед если есть R-соседи,то алгоритм должен вернуть каждого из них свероятностью 1− δ
Р-я c-аппроксимация R-ближайшего соседа ((c ,R)− NN) еслиесть R-сосед, то алгоритм должен вернуть хотя быодного cR-соседа с вероятностью 1− δ
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 23 из 27
Locality-Sensitive Hash Functions
H = {h|h : Rn → Z+}, (R , cR , p1, p2) :
‖p − q‖ ≤ R ⇒ pH(h(p) = h(q)) ≥ p1‖p − q‖ ≥ R ⇒ pH(h(p) = h(q)) ≤ p2
Понятно, что хотим p1 > p2
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 24 из 27
LSH алгоритмПостроение:
1 Выберем L-функций семейства H2 Поделим все данные на кусочки с одинаковыми
значениямиПоиск по точке q:
1 Выберем j ∼ U{1, ..., L}2 Найдем значение Lj(q) и соответствующий этому значению
“кусочек”
3 Линейно поищем в “кусочке”
4 Одно из двух:1 повторим 1-3 пока не найдется L′ точек (включая
дубли) ближе чем R .2 переберём все L-функций.
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 25 из 27
Свойства LSH
Первая стратегия: с L′ = 3L, для любой пары(R , δ),∃L = O(N
ln p1ln p2 ),
гарантирующий (c ,R)− NN
Вторая стратегия: гарантирует рандомизированного Rближайшего соседа при δ = δ(k , L)
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 26 из 27
Что мы сегодня узнали
Instance based learningИногда можно использовать learn в качестверешающей функцииЕсть проклятье размерности, которое нам мешаетМожно учитывать проклятье при построении метода
Поиск ближайших соседейЭто большая областьЕсли размерность мелкая и есть правилотреугольника, то можно искать точно (kd-tree, r-tree)Можно искать неточно, но с гарантиями (LSH)
И. Кураленок, Н. Поваров, Яндекс Санкт-Петербург, 2016 Стр. 27 из 27