Pull to refresh

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

Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.