Классификация пациентов с сердечно-сосудистыми заболеваниями (отчет)
Материал из MachineLearning.
(→Описание системы) |
(→Описание системы) |
||
Строка 95: | Строка 95: | ||
==Описание системы== | ==Описание системы== | ||
- | Описание системы находится в файле [https://mlalgorithms.svn.sourceforge.net/svnroot/mlalgorithms/ | + | Описание системы находится в файле [https://mlalgorithms.svn.sourceforge.net/svnroot/mlalgorithms/Cardio/ Systemdocs1.docx] |
- | Файлы системы можно скачать здесь: [https://mlalgorithms.svn.sourceforge.net/svnroot/mlalgorithms/ | + | Файлы системы можно скачать здесь: [https://mlalgorithms.svn.sourceforge.net/svnroot/mlalgorithms/Cardio/ SelRKM.m, GetRelevantFeatures.m, LOO.m, GetData.m, UploadData.m, GetKernelMatrix.m, DeletingUnknownValues.m, GetStatsIfClassification.m] |
== Отчет о вычислительных экспериментах == | == Отчет о вычислительных экспериментах == |
Версия 15:39, 22 февраля 2010
Введение в проект
Описание проекта
Цель проекта
Цель проекта - классификация пациентов с подозрением на сердечно-сосудистые заболевания по группам риска.
Обоснование проекта
Полученные результаты могут быть использованы для предварительной диагностики заболевания у пациентов.
Описание данных
Дан список 100 пациентов с указанием их группы риска(по экспертной оценке) и результатов их анализов по 20 параметрам.
Критерии качества
Критерием качества является общее количество ошибок классификации. При этом не допускается более 1 ошибки для пациентов групп риска A1(уже прооперированные больные) и A3(больные с высокой вероятностью заболевания).
Требования к проекту
Алгоритм не должен допускать более одной ошибки по группам риска A1 и A3, а также минимальное количество ошибок по остальным группам риска.
Выполнимость проекта
Особенностями данных, которые могут затруднить выполнение проекта, являются малое количество прецедентов по некоторым группам риска(в особенности A2) и наличие пропусков в данных.
Используемые методы
Предполагается использовать линейные алгоритмы классификации, в частности SVM.
Постановка задачи
Дана обучающая выборка , где , .
Для каждой из задач двуклассовой классификации(отделение одного класса от трех остальных и отделение пар классов друг от друга) перекодируем классы так, что . Требуется подобрать вектор параметров оптимальной разделяющей гиперплоскости, который минимизирует функционал скользящего контроля:Описание алгоритмов
Обзор литературы
Базовые предположения
Особенностью данной задачи является большая размерность признакового пространства и малое число прецедентов. Таким образом для того, чтобы избегнуть переобучения и добиться устойчивой классификации, требуется решить задачу отбора признаков. Для этой цели предполагается использовать алгоритм Relevance Kernel Machine with supervised selectivity(далее - ), который совмещает в себе возможности решения задачи классификации и отбора признаков.
Математическое описание алгоритмов
Квази-вероятностная постановка задачи
Пусть - множество объектов, каждый из которых принадлежит одному из двух классов: . Каждый объект характеризуется признаками в некоторых шкалах . Пусть в пространстве признаков объективно определена некоторая неизвестная гиперплоскость . В качестве модели распределения объектов рассмотрим два несобственных параметрических распределения:
Далее вектор рассмотрим как случайный вектор с априорной плотностью распределения По формуле Байеса апостериорная плотность распределения параметров и :
Согласно принципу максимизации апостериорной плотности распределения:
Метод
Пусть априорные плотности распределения компонент направляющего вектора разделяющей гиперплоскости имеют нормальные распределения с нулевыми математическими ожиданиями и дисперсиями :Будем считать, что параметр имеет равномерное несобственное распределение, равное единице на всей числовой оси. Тогда плотность распределения вектора пропорциональна:
Положим, что все величины имеют априорное гамма распределение:
Примем что , где - некоторый неотрицательный параметр.
Принцип максимизации совместной апостериорной плотности приводит к критерию обучения:
Для каждой итерации при фиксированном приближении() решение данной оптимизационной задачи сводится лишь к небольшой модификации классического SVM.
Если же найдено текущее приближение , то следующее приближение может быть найдено из простого соотношения:
Отбор признаков
Для повышения устойчивости алгоритма был применен дополнительный отбор признаков. Для этого производился предварительный запуск алгоритма RKM и рассматривался полученный вектор весов признаков: . Далее из набора признаков удалялись те из них , для которых , где - дополнительный параметр селективности. На модифицированном наборе признаков алгоритм RKM запускался еще раз для получения окончательной классификации.
Варианты или модификации
Параметрами алгоритма являются , наилучшие значения которых требуется выбрать в результате эксперимента.
Описание системы
Описание системы находится в файле Systemdocs1.docx Файлы системы можно скачать здесь: SelRKM.m, GetRelevantFeatures.m, LOO.m, GetData.m, UploadData.m, GetKernelMatrix.m, DeletingUnknownValues.m, GetStatsIfClassification.m
Отчет о вычислительных экспериментах
% OneVsOthersTest - script which tests RKM algorithm cardiovascular diseases train set % in problems of classification one class vs 3 other classes % Author: Maxim Panov, MIPT, group 674 % % Input: excel-files with objects-features matrices of 4 types of patients % % Output: % statistics - 4 x 3 x 4 structure: % statistics(k, j, i) - statistics of classification(with fields like % in output of GetStatsOfClassification) of class i % with selectivityLevel 0.1*10^k and C = 100*10^j %% Upload data UploadData; trainSet = allData; types = [repmat(1, size(a1, 1), 1); repmat(2, size(a3, 1), 1); repmat(3, size(b1, 1), 1); repmat(4, size(b2, 1), 1)]; %% Set selectivity rate selectivityRate = 10; %% Compute statistics of classification for i = 1 : 4 supplTrainSet = [trainSet(types == i, :); trainSet(types ~= i, :)]; supplTypes = [repmat(1, size(types(types == i, :), 1), 1); repmat(-1, size(types(types ~= i, :), 1), 1)]; C = 100; for j = 1 : 3 C = C * 10; selectivity = 0.1; for k = 1 : 4 selectivity = selectivity * 10; supplStatisticsA(k, 1) = GetStatsOfClassification(supplTrainSet, supplTypes, C, selectivity, selectivityRate); end if j == 1 supplStatisticsB = supplStatisticsA; else supplStatisticsB = cat(2, supplStatisticsB, supplStatisticsA); end end if i == 1 statistics = supplStatisticsB; else statistics = cat(3, statistics, supplStatisticsB); end end
Визуальный анализ работы алгоритма
Анализ качества работы алгоритма
Анализ зависимости работы алгоритма от параметров
Отчет о полученных результатах
Список литературы
Данная статья является непроверенным учебным заданием.
До указанного срока статья не должна редактироваться другими участниками проекта MachineLearning.ru. По его окончании любой участник вправе исправить данную статью по своему усмотрению и удалить данное предупреждение, выводимое с помощью шаблона {{Задание}}. См. также методические указания по использованию Ресурса MachineLearning.ru в учебном процессе. |