Адаптация алгоритмов машинного обучения к моей проблеме - PullRequest
2 голосов
/ 23 марта 2010

Я работаю над проектом и нуждаюсь в ваших идеях, советах.

Прежде всего, позвольте мне рассказать мою проблему.

Есть кнопка питания и некоторые другие клавиши машины и только один пользователь имеет аутентификацию для использования этой машины. других методов аутентификации нет, аппарат находится в публичной зоне в компании.

машина работает с комбинацией нажатия кнопки питания и некоторых других клавиш. Порядок нажатия клавиш является секретным, но мы ему не доверяем, любой может узнать пароль и получить доступ к машине.

У меня есть возможность управлять временем удержания ключа, а также некоторыми другими метриками для измерьте разницу во времени между клавишами, такую ​​как горизонтальное или вертикальное время нажатия клавиши (различия). а также я могу измерить время удержания и т. д.

Все это означает, что у меня есть некоторые входы,

Теперь я пытаюсь получить профиль пользователя, анализируя эти входные данные.

Моя идея заключается в том, чтобы аутентифицированный пользователь нажимал пароль n раз и создавал порог или что-то подобное.

Этот метод также можно сказать, что BIOMETRICS, любой другой, кто знает комбинацию кнопок машины, может попробовать пароль, но если он находится вне этого диапазона, не может получить к нему доступ.

Как я могу адаптировать их к моим алгоритмам? с чего мне начать?

я не хочу углубляться в машинное обучение, а также я вижу, что с первой попытки я могу получить действительно высокие значения ложноположительных и ложноотрицательных значений, но я могу справиться с этим, изменив свои входные данные.

спасибо.

Ответы [ 2 ]

1 голос
/ 23 марта 2010

Ключом к такой проблеме является разработка хороших показателей. Если у вас есть вектор входных значений, вы можете использовать один из нескольких алгоритмов машинного обучения, чтобы классифицировать его как разрешенный или отклоненный. Поэтому первым шагом должно стать определение того, какие метрики (из тех, что вы упомянули) будут наиболее полезными, и выберите небольшое их количество (5-10). Вы, вероятно, можете извлечь выгоду, свернув некоторые из них путем усреднения (например, средней длины любого нажатия клавиши, а не отдельного значения для каждой клавиши). Тогда вам нужно будет выбрать алгоритм. Хорошим методом классификации векторов действительных чисел является машина опорных векторов - на этом этапе вам следует ознакомиться с ней, особенно с тем, что представляет собой функция «ядра», чтобы вы могли выбрать один из них. Затем вам нужно собрать набор обучающих примеров (векторы с известным результатом), обучить алгоритм с ними и протестировать обученный svm на свежем наборе примеров, чтобы увидеть, как он работает. Если производительность на простом ядре низкая (например, линейная), вы можете выбрать более крупномасштабное ядро. Удачи!

1 голос
/ 23 марта 2010

Мне кажется, это хороший кандидат на проблему классификации. У вас есть два класса (правильный ввод пароля / неверный), ваши данные могут быть временем (с момента 0), когда кнопки были нажаты. Вы можете научить алгоритм обучения, но есть несколько примеров правильных данных пароля и неверных данных пароля. После того, как ваш классификатор обучен и работает удовлетворительно, вы можете попробовать его, чтобы предсказать правильность попыток ввода нового пароля.

Вы можете попробовать несколько классификаторов из Weka, инструмента машинного обучения на основе графического интерфейса http://www.cs.waikato.ac.nz/ml/weka/

Вам нужны ваши данные в простом табличном формате для экспериментов в weka, что-то вроде следующего:

Attempt No | 1st button time | 2nd button time | 3rd button time | is_correct
-----------|-----------------|-----------------|-----------------|------------
     1     |    1.2          |    1.5          |  2.4            | YES
     2     |    1.3          |    1.8          |  2.2            | YES
     3     |    1.1          |    1.9          |  2.0            | YES
     4     |    0.8          |    2.1          |  2.9            | NO
     5     |    1.2          |    1.9          |  2.2            | YES
     6     |    1.1          |    1.8          |  2.1            | NO

Это будет тренировочный набор. Результатом (который известен) является класс is_correct. Вы бы пропустили эти данные через weka, выбрав классификатор (например, Наивный Байес). Это приведет к появлению клаффера (например, набора правил), который можно использовать для прогнозирования будущих записей.

...