Pull to refresh

Comments 12

Присмотрелся — это почти тот же KNN. С некоторыми модификация и и без параметров.


Но по тестам ответы разные, и KNN из коробки не всегда лучше, но его можно тюнить.

Ну нет, все правильно. KNN и этот алгоритм хоть во многом и схожи (и что-то позаимствовано из SVM) — они всё же разные. Легко привести пример, когда KNN и PathMachine дадут разные прогнозы (новая точка ближе к длинной прямой некого другого класса по проекции, хотя и ближе по расстоянию к другим соседям напрямую — например прямая поперек квадрата с новой точкой в центре).

Обновил ноутбук, добавил бенчмарк с KNN, почистил слегка и убрал «замыкание путей».
Там, где начинаются расстояния, проекции и прочая метрика, топология не при чем.
Метрика определяет топологию. Это понятно.
Дело в другом. Топологические инварианты начисто игнорируют метрику и расстояния. Как ни триангулируй тор (и все, что на него похоже), количество вершин + количество граней = количество ребер.
А теперь по теме — искать ближайший путь — занятие чисто метрическое и к топологическим инвариантам отношения не имеет. Гомотопическая группа таким образом не возникает.
Топология в данном случае возникает как побочный эффект подбора метрических параметров, как результат геометрических построений по метрическим параметрам. Но да, даже в этом случае она никак не используется в итоге при сопоставлении с образцом, образец просто притягивается к контуру. «Топологичностью» тут является возможность обучения модели «запутанному» ландшафту решений, в отличие от других, добивающихся получения аналогичного по «запутанности» ландшафта путём внесения в модель нового свободного параметра на каждый его «изгиб».
Вот вы правы. Если есть еще идеи как сопоставить (по сути, группы реализовать), имея на руках только точки я попробую сделать, по мере наличия времени.

Но, полагаю, при должных модификациях (например, дропаут:)), этот алгоритм может даже не переобучаться. И «притягивание образца к контуру» — это не единственная, конечно, процедура для инференса. Да и составные контуры могут быть не прямыми, а например гиперплоскостями (но точек на то, что у меня называется «путем», должно быть n-1), или некоторой кривой (но посчитай попробуй тогда проекцию...).

Все алгоритмы ML базируются на упрощениях, я выбрал те, которые знаю как сделать. Если брать группы и композиции на них, думаю всё было бы содержательнее.

Да и вообще, если есть другие идеи как заиспользовать возникающую по геометрическим построениям топологию — welcome. Думаю, это те самые модификации, которые могут помочь алгоритму.
Пришла (безумная) идея в голову — стакнуть. Сегодня попробую. Идея в следующем — взять расстояния до всех путей как новый слой для этого же алгоритма. То есть при инференсе первым шагом сосчитать все расстояния, а далее выбрать не ближайший, а бахнуть PathMachine по меткам путей.
Сходу ничего не вышло, может я накодил не то, может идея провальная… ноутбука не будет.
Сделал таки вариант с гиперплоскостями. Мог накосячить с вычислением нормали…

В принципе, работает, хотя не сказать что огонь-огонь. Однако принцип иной.
Тут кстати такие дела, норма не обязана быть нормой в смысле аксиом. Это может быть просто какая-то деформирующая функция при надобности.

Добавил в конец ноутбука пример, как выучить 1D-паттерн тем же алгоритмом. По идее, можно как-нибудь и продолжать ряды, при некоторых доработках. Но пока не до этого.
Ну, я сразу в тексте не претендовал на реализацию фундаментальных путей. И там же и написал чем я их заменил.
Sign up to leave a comment.

Articles