Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Метод разделяющих плоскостей


Автор: Xonxt 29.3.2009, 22:00
Доброе время суток.

Имеется задание на курсовую (и, по совместительству, бакалаврскую) работу - реализация классификации образов методом разделяющих плоскостей.

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

Преподаватель сказал, что не нужно использовать нейронные сети, а жаль...

Помогите, чем сможете  smile 

Автор: GoldFinch 30.3.2009, 13:10
интересно как это, без нейросетей

есть пространство входных данных, каждая точка в этом пространстве - образ который надо классифицировать
разбиваем это пространство N плоскостями на области, каждая такая область соответствует какому-то классу образов
принадлежность точки той или иной области определяется тем с какой стороны от каждой плоскости находится точка, 
если эти стороны закодировать 0 и 1, получится двоичный N-разрядный код, у каждой области свой
плоскость в многомерном пространстве задается уравнением вида 
  a1*x1+a2*x2+...am*xm+h = 0
или
  сумма(ai*xi)+h=0
где xi - координаты точки, ai - коэфициенты поворота плоскости, h - расстояние от плоскости до центра координат

чтобы определить с какой стороны от плоскости находится точка Xi, надо вычислить сумму ai*Xi и сравнить ее с порогом h
  сторона_плоскости = сумма(ai*Xi)>h
т.е. подать координаты этой точки на пороговый сумматор, а нейрон с пороговой передаточной функцией и есть пороговый сумматор, и однослойная нейросеть с такими нейронами как раз и решает задачу классификации разбиением пространства входных параметров плоскостями

ну а сама по себе реализация такой сети никаких проблем не представляет, хоть в Excel загоняй коэфициенты плоскостей и пороги и там считай
другое дело - обучение, но тут все зависит от конкретной задачи - что распознавать

Автор: Xonxt 30.3.2009, 16:05
Ну, собственно, ничего нового, GoldFinch, вы мне не рассказали...
Меня ж именно интересовала сама реализация.. Как эти коэффициенты a1, a2,...,am находить...

Автор: GoldFinch 30.3.2009, 16:29
Xonxt, что распознавать - так и находить, в "общем" такие задачи не решаются

Автор: Xonxt 30.3.2009, 22:43
В таком случае,  smile 
Можно брать http://archive.ics.uci.edu/ml выборку. 
Например http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data - пример распознавания конкретного типа растения Ириса. 
Признаков для распознавания - 4. Это высота и ширина чашелистника и высота с шириной лепестка. Классов здесь всего 3.

Как в данном примере проводить обучение? Я думал может SVM попробовать, но хочется конкрентый пример алгоритма, а не сухую математику...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)