--}}
Новая тема
Вы не можете создавать новые темы.
Т.к. вы неавторизованы на сайте. Пожалуйста назовите себя или зарегистрируйтесь.
Список тем

SVM (опорные вектора) и прочая классификация.

Серьёзная тема
7
8
С друзьями на NN.RU
В социальных сетях
Поделиться
есть "правильные картинки", есть "неправильные картинки".
подчеркну, что слово "картинки" - очень условно (чтобы одним словом описать), т.е. не привязываемся к типу данных. "есть данные", скажем так.
соотношение true/false в обучающей выборке примерно 1/10 (так рекомендуют в теории. на практике вроде бы так и есть. 1/1 - очень хреново работает во всяком случае).
всё подогнал и нормализовать массово с помощью imagemagick в batch режиме (а то их там тонны просто).
по ним строятся дескрипторы (это быстро даже на моём древнем ПК), на выходе получается 2 массива векторов из float чисел.
использовал для обучения как nodejs binding к libsvm (относительно быстро, минут 10), так и svmjs (на большой выборке иногда 6-10 часов идёт обучение).

какие заметил "косяки":
1) libsvm иногда выдаёт, что "нет сходимости" - общий смысл такой (забыл слово, вечером могу процитировать)
2) svmjs обучается (использовал rbf kernel, сигма=0.5, т.е. нелинейный), но зачастую опознаёт как true - только из обучающей true выборки вектора, а всё остальное (в т.ч. явно похожие картинки) как false.

результат:
вот буквально вчера результат svmjs (даром, что тормозная) порадовал - стали распознаваться и "правильные картинки" (поиск google, картинки по теме, но случайные не из обучающей выборки), которые НЕ присутствовали в обучающей выборке! :)
но опять же далеко не все :(

не понятно вот что: то ли дескрипторы хреновые, то ли SVM параметры "не те". как это оценить? теория оценки есть?

1) кто-нибудь сталкивался на практике?
2) может быть есть какие-нибудь особенности с которыми сталкивались на практике в параметрах при обучении SVM (kernel, параметры kernel'a у SVM)?
3) какие ещё варианты (Байесовский классификатор, k средних, k ближайших соседей, etc.) кто использовал на практике?

p.s.
теоретики по делу - тоже очень приветствуются! :)
как оценить "правильность"/годность векторов дескриптора?
можно ли оценить "похожесть" просто евклидовым расстоянием в n-мерном пространстве или лучше поизощряться (как) для лучшего разделения признаков?
параметры SVM (типы kernel, их параметры), на что влияют, какими параметрами выборку векторов какого типа лучше сортировать (теория и практика) ? и т.д.
это всё тоже очень интересует.

p.p.s.
теоретики "поболтать за жизнь" будут выпиливаться из темы.
с праздным интересом - можно заводить отдельную тему или писать в личку.
"погуглить" - можете прислать ссылки с lmgtfy.com/ - там будет только поверхностное описание, мне надо именно детали, а не "общая теория" в стиле "ну вот есть такая хрень... и вот такая..." которой навалом в интернете, а бестолку :((
вопрос вдогонку: как визуально оценить feature vectors в n-мерном (n>>3) пространстве, хотя бы приблизительно?
подозреваю, что для хорошей классификации true-фичи должны быть "скучкованы" в пространстве.
единственное, что приходит на ум - это тупо посчитать евклидово расстояние в n-мерном пространстве и построить force-directed граф в 2D...
Для визуализации фич можно использовать всякие разные методы снижения размерности типа t-sne и ему подобных. Ну и следует понимать, что гипотеза о компактности - это именно гипотеза, т.к. всегда можно построить такую разделяющую поверхность, которая полностью разделит два класса (кроме совсем уж вырожденных случаев). Так что опираться следует прежде всего на здравый смысл.
девел0пер писал(а)
как оценить "правильность"/годность векторов дескриптора?

Ну самое просто - берете кучу векторов признаков, вычитаете из них среднее, строите корреляционную матрицу и считаете ее собственные числа. Сортируете эти числа по убыванию и строите по ним график. Если получившаяся кривая летит вниз стремительным домкратом - это значит, что большинство элементов вектора содержат скорее мусор, чем данные. Обычно данную проблему решают снижением размерности вектора признаков с помощью того же PCA или других методов.

Есть также всякие разные подходы по выбору наиболее информативных признаков, но я про них уже забыл ибо не пользуюсь.
девел0пер писал(а)
можно ли оценить "похожесть" просто евклидовым расстоянием в n-мерном пространстве или лучше поизощряться (как) для лучшего разделения признаков?

Использование евклидова расстояния - это, наверное, один из самых распространенных подходов к сравнению признаков (но, конечно, зависит от предметной области). В случае же, если компоненты вектора неравноценны (т.е. 1-компонент изменяется от -100 до 100, а второй от -1 до 1), то применяют либо нормирование (например, по дисперсии), либо используют расстояние Махаланобиса. Если признаки распределены существенно "ненормально", то хорошие результаты дает применение ядер. Тип ядра обычно подбирается экспериментально.

Есть и более сложные подходы, основанные, например, на информационной геометрии. К сожалению на практике они не дают существенно лучших результатов, поэтому мало распространены. Но идея красивая.
спасибо за инфу (все 3 ответа), обязательно прочитаю!
а можете подсказать, какие алгоритмы учитывают не только наличие/отсутствие фич (bag of words), но и их взаимное расположение?

пример: Байесовский классификатор распознаёт спам/не спам по вероятностям появления слов (т.е. просто по их наличию/отсутствию) в документе. А есть ли такой алгоритм, который учитывает расположение слов (устойчивые словосочетания, например) ?

и вопрос по корреляции: она только линейная бывает или можно вычислять нелинейную зависимость?
девел0пер писал(а)
а можете подсказать, какие алгоритмы учитывают не только наличие/отсутствие фич (bag of words), но и их взаимное расположение?

Ну а как вы думаете? Конечно бывают. Начиная от простых эвристических построений (типа если в тексте встретилась строка абв, то следующий символ будет "г" по условиям задачи, либо разбиение картинки на несколько независимых регионов) и заканчивая сложными формальными моделями типа скрытых марковских моделей, markov random fields, байесовскими сетями доверия и т.д. Короче это довольно обширная область и эффективное решение сильно зависит от задачи.

и вопрос по корреляции: она только линейная бывает или можно вычислять нелинейную зависимость

Ну если между признаками имеется нелинейная зависимость, т.е. пространство признаков нелинейное, то можно его линеаризовать (например с помощью ядерной функции) и таким образом свести задачу к предыдущей. В ряде случаев задачу поиска корреляции можно свести к задаче вычисления взаимной энтропии. Здесь тоже много решений, зависящих от задачи.

В качестве примера: если два вектора признаков можно представить в виде двух нормализованных гистограмм у которых имеются произвольные смещения распределений значений (сдвиг, растяжение, сжатие - например один и тот же объект снимают две камеры с разными характеристиками или съемка ведется при разном уровне освещенности), то для сравнения таких гистограмм применяют т.н. transportation distance.

Честно, мне не очень понятен этот ваш вопрос, для чего лезть в такие дебри... (вопрос из разряда - а бывают ли летающие коровы?)
Новая тема
Вы не можете создавать новые темы.
Т.к. вы неавторизованы на сайте. Пожалуйста назовите себя или зарегистрируйтесь.
Список тем
Последние темы форумов
Мощный трансформатор ТПП-317-127/220-50

Трансформатор ТПП-317-127/220-50 Мощный трансформатор до 18 ампер Особенность данного трансформатора большой ток 18А Сердечник:...
Цена: 2 200 руб.

Колесотокарный станок 1ак200 для обточки колес вагонов и тепловозов

Прайс-лист на изготовление колесотокарных станков 1ак200 для обточки колесных пар вагонов и тепловозов без выкатки в 2024г 1.Мобильный...
Цена: 3 360 200 руб.

Прибор -цифровой мультиметр BENNING MM11

Цифровой мультиметр BENNING MM11 Отправка в регионы после оплаты. Made in Germany - Германия. Цена 19000 руб. ТОРГА...
Цена: 19 000 руб.

Цифровой мультиметр BENNING MM 1-2

Цифровой мультиметр BENNING MM 1-2 MADE IN GERMANY Отправка в регионы после оплаты В работе не был. Цена 15000 руб. Торга...
Цена: 15 000 руб.

Программист-разработчик Full-Stack ГК "Kolobox"
70000 -
100000 руб.
Высшее образование, стаж работы более 5 лет, полная занятость
Frontend-разработчик Profit Search
40000 -
50000 руб.
Стаж работы 3-5 лет, частичная занятость
Программист 1С НПП ПРО-М
от 110 000 руб.
Высшее образование, стаж работы 3-5 лет, полная занятость
Разработчик .net Profit Search
70000 -
100000 руб.
Неполное среднее образование, стаж работы 3-5 лет, полная занятость