2

私はプロジェクトに取り組んでおり、あなたのアイデアやアドバイスが必要です。

まず、私の問題をお話ししましょう。

マシンの電源ボタンと他のいくつかのキーがあり、このマシンを使用するための認証を持っているユーザーは1人だけです。他の認証方法はなく、マシンは会社の公共エリアにあります。

マシンは、電源ボタンと他のいくつかのキーを押すことの組み合わせで動作しています。キーを押す順序は秘密ですが、私たちはそれを信頼していません。誰でもパスワードを知り、マシンにアクセスできます。

キーの保持時間と、水平または垂直のキー押下時間(差)などのキー間の時間差を測定するためのその他のメトリックを管理する機能があります。また、ホールドタイムなども測定できます。

これらはすべて、私がいくつかの入力を持っていることを意味します、

今、私はこれらの入力を分析することによってユーザープロファイルを取得しようとしています。

私の考えは、認証されたユーザーにパスワードをn回押してもらい、しきい値などを作成することです。

この方法は、マシンボタンの組み合わせを知っている他の人なら誰でもBIOMETRICSがパスワードを試すことができると言うこともできますが、彼がこの範囲外にいる場合はパスワードにアクセスできません。

これらをアルゴリズムに適合させるにはどうすればよいですか?どこから始めればいいですか?

機械学習について深く掘り下げたくありません。また、最初の試行で誤検知と誤検知の値が非常に高くなる可能性がありますが、入力を変更することで管理できます。

ありがとう。

4

2 に答える 2

1

私には、これは分類問題の良い候補のように思えます。2つのクラス(正しいパスワード入力/正しくない)があり、データはボタンが押された時間(時間0から)である可能性があります。学習アルゴリズムを教えることはできますが、正しいパスワードデータと誤ったパスワードデータの例がいくつかあります。分類子がトレーニングされ、十分に機能するようになったら、それを試して、新しいパスワード入力の試行が正しいかどうかを予測できます。

GUIベースの機械学習ツールである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です。このデータは、分類器(Naive Bayesなど)を選択して実行します。これにより、将来のエントリを予測するために使用できるクラフィエ(たとえば、一連のルール)が生成されます。

于 2010-03-22T22:50:26.743 に答える
1

この種の問題の鍵は、適切なメトリックを考案することです。入力値のベクトルを取得したら、いくつかの機械学習アルゴリズムの1つを使用して、許可または拒否として分類できます。したがって、最初のステップは、(あなたが言及したものの中で)どのメトリックが最も有用であるかを決定し、それらの少数(5-10)を選択することです。おそらく、平均化によっていくつかを折りたたむことでメリットが得られます(たとえば、キーごとに個別の値ではなく、キーを押したときの平均の長さ)。次に、アルゴリズムを選択する必要があります。実数のベクトルを分類するのに適したものは、サポートベクターマシンです。この時点で、特に「カーネル」関数が何であるかを読んで、使用するものを選択できるようにする必要があります。次に、一連の学習例(既知の結果を持つベクトル)を収集する必要があります。それらを使用してアルゴリズムをトレーニングし、トレーニングされたsvmを新しい例のセットでテストして、そのパフォーマンスを確認します。単純なカーネル(線形など)でパフォーマンスが低下する場合は、より高次元のカーネルを使用することを選択できます。幸運を!

于 2010-03-22T22:51:38.307 に答える