Главная
Лабораторная работа №1
Лабораторная работа №2
Лабораторная работа №3
Лабораторная работа №4
Лабораторная работа №5
Скачать архив

Лабораторная работа №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. Фрагменты кода

Примечание
Точки обязательно нумеровать цифрами или буквами.