| Лабораторная работа №1«Методы распознавания образов, основанные на построении разделяющей гиперплоскости и гиперсферы»
 
 
 
 Цель: изучить методы распознавания образов, основанные на построении разделяющей гиперплоскости и гиперсферы.   Теория:Построение разделяющей гиперплоскости используется для определения принадлежности объекта к тому или иному классу образов. Рассмотрим этапы построения разделяющей гиперплоскости.
 
 
  Рисунок 1. Построение разделяющей гиперплоскости.
 
 
 На рисунке 1 схематически изображен процесс построения разделяющей гиперплоскости. Нам известны координаты двух точек(объектов): A,B. Которые представлены на рисунке в виде звездочки (точка А), и в виде кружочка (точка В). Необходимо построить разделяющую гиперплоскость, которая отделяла бы образы «похожие» на А, от образов «похожих» на В.   Для построения, нам необходимо провести между точками А и В, соединяющую их линию. На середине этой линии отложим точку Р, через которую будет проходить разделяющая гиперплоскость. Теперь, зная координаты точки Р, а также имея вектор АВ, построить плоскость, проходящую через точку Р, и перпендикулярную вектору АВ. Теперь чтобы принять решение о принадлежности образа к тому или иному классу, нужно определить расстояние от этого образа до гиперплоскости, кроме того, знак полученного расстояния будет говорить о положении образа с одной или другой стороны от гиперплоскости.   Разделяющая гиперплоскость не может быть построена без базисных  точек. В качестве базисных точек могут быть выбраны:-   наугад взятые точки , по одной из множества А и множества В;
 -   точки, выбранные из А и В с учетом определенных обстоятельств (например, имеющие минимальные расстояния между собой);
 -   точки, выбранные на основании каких-либо статистических характеристик.
 
 Пусть нам даны множества А и В, каждое из которых состоит из 5 элементов (рисунок 2): 
 
  Рисунок 2.  Разделение классов А и В гиперплоскостью
 
 
 В качестве базисных точек выберем точки, координаты которых являются средними арифметическими значениями соответствующие координат точек каждого класса. В качестве разделяющей классы А и В гиперплоскости выберем следующую плоскость: R(х,у) = 2(Асред- Всред) * Р + | Bсред |2 - |Aсред|2 = 0, это векторное уравнениеОтметим, что все расстояния точек Ai от гиперплоскости отрицательны:
 Все расстояния точек Вi от разделяющей гиперплоскости положительны
 Следовательно, R(x,y) разделяет множества А и В и если добавить новый элемент в В, то такое расстояние будет положительно.
 Метод гиперсфера аналогичен методу построения гиперплоскости, только разделение заключается в следующем: точки которые попадают внутрь гиперсферы относятся к одному классу, а за ее пределы – ко второму.Гиперсфера описывается следующей формулой:
 (x1 - O1)2 + (x2 - O2)2 + ... + (xn - On)2 = R2, где (О1, О2, …,Оn) – координаты центра сферы, R – радиус гиперсферы, (Х1, Х2, …,Хn) – координаты точки.
 Для определения, куда попала точка с координатами  (Х1, Х2, …,Хn) в сферу или за ее пределы,  преобразуем формулу к следующему виду:
 (x1 - O1)2 + (x2 - O2)2 + ... + (xn - On)2 - R2 = 0
 Если в результате вычисления формулы получается отрицательное значение, то точка попадает в сферу, если равно нулю – на границу сферы, иначе – за ее пределы. Задание: Входные данные:•	Задается мерность пространства – N (максимальное значение 10).
 •	Файл с координатами точек и их номерами (максимальное число точек - 10).
 
 Разработать программное средство, реализующее следующие функции:1.	считать номера и координаты точек из файла
 2.	возможность выбора метода распознавания: гиперплоскость или гиперсфера.
 
 Для гиперплоскости:•	выбрать две базовые точки. Предусмотреть следующие варианты выбора: случайным образом, должны задаваться пользователем и выбрать две точки с наименьшим расстоянием между собой из всех возможных вариантов (нужно рассмотреть все возможные пары точек и определить расстояние между ними по формуле
 
  •	разбить точки на два класса;
 •	вывести на экран или в файл: номера точек и в какой класс они попали;
 •	для каждого класса найти координаты средней точки в каждом классе по следующей формуле:
 
  где xi – i – координата каждой точки в классе, m – количество точек в классе.
 •	далее строим гиперплоскость, в которой в качестве базовых точек берутся средние точки каждого класса. Производим разделение всех точек на основе построенной гиперплоскости.
 •	Сравнить результаты деления на классы после первого построения гиперплоскости и после второго.
 
 Для гиперсферы:•	выбрать центр гиперсферы. Предусмотреть следующие варианты: случайном образом из множества точек или задается номер точки пользователем
 •	радиус сферы должен вычисляться двумя способами: задается пользователем или вычисляется следующим образом:
 •	находим расстояния Ri между центром гиперсферы и с каждой из оставшихся точек по формуле
  , где (О1, О2, …,Оn) – координаты центра сферы, а (Х1, Х2, …,Хn) – координаты точки. •	находим среднее расстояние
  , где n – общее количество точек. Это среднее расстояние и будет радиусом. •	Строим гиперсферу и производим разделение всех точек на два класса.
 •	Вывести на экран или в файл: номера точек и в какой класс попали.
 Содержание отчета 1.	Титульный лист
 2.	Постановка задачи
 3.	Графическое описание алгоритма решения задачи (например: в виде блок – схемы)
 4.	Результаты
 a.	Вставить скриншот  интерфейса программы
 b.	Рассмотреть работу программы на множестве из 10 точек в двумерном пространстве (изобразить точки на координатной плоскости).
 c.	Привести результаты разбиения точек после двух построений гиперплоскости и гиперсферы.
 d.	Рассмотреть различные варианты задания базовых точек и вычисления радиуса гиперсферы.
 e.	Привести результаты и сравнить их.
 5.	Фрагменты кода
 
 ПримечаниеТочки обязательно нумеровать цифрами или буквами.
 |