Как стать автором
Обновить

Ospan Matrix или второе дыхание для Case-Based Reasoning

21 век стал временем для алгоритмов машинного обучения, и мы уже давно привыкли к ним и их постоянному улучшению. Зачастую мы говорим о разных heuristic алгоритмах или нейронных сетях, но порой нам необходимо использовать другие более линейные алгоритмы машинного обучения. Например: Case-Based Reasoning (CBR).


Осенью уже прошлого года передо мной стояла задача использовать CBR в проекте умного дома, что было само-собой не самой простой задачей, так как применение CBR с k-nearest neighbor не давала высоких результатов аккуратности классификации даже с использованием Mahalanobis Distance для определения расстояния между кейсами. Пришлось придумать свое решение для измерения расстояния, которое было названо Ospan Matrix. Если хотите узнать зачем искать конверсионную матрицу с помощью эвристических алгоритмов, прошу Вас к прочтению этой статьи.


Проблема


Проблема проекта была в том, что входные данные в алгоритм были очень большими в основном являлись бинарными. Другими словами, входные данные представляли собой вектор их 14 элементов, из которых только два (usertypeI и usertypeO) имели три состояния, остальные же были бинарными.


# Пример стандартных входных данных
{'healthO': 0, 'foodO': 0, 'entertainmentI': 0, 'securityO': 0, 'workO': 0, 'output': 1, 'workI': 0, 'healthI': 0, 'id': 0, 'energyI': 1, 'energyO': 0, 'securityI': 0, 'entertainmentO': 1, 'usertypeI': 2, 'usertypeO': 3, 'foodI': 0}

Решение


Стандартные алгоритмы расчета расстояний k-nearest neighbor не очень эффективны, когда данные представляют собой бинарные данные. В моем случае мы использовали генетический алгоритм для поиска convolution матрицы, чтобы эффективность поиска увеличились. В среднем алгоритм показал увеличение на 10% в сравнении с Mahalanobis дистанциями.


Все данные и вики по проекту можно посмотреть на ГитХабе:
https://github.com/BiggyBaron/VirtualAssistant

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.