15

ユーザーが私の Python Web サービスにアクセスすると、非常に興味深いデータ ポイントがたくさん収集されます。たとえば、現在の都市、州、国、ユーザーエージェントなどがあります。私ができるようにしたいのは、これらを何らかのタイプの機械学習システム/アルゴリズム (おそらくベイジアン分類器?) で実行することです。通常とは異なる何かが発生したときに電子メール通知を受け取るという最終的な目標 (異常検出)。たとえば、Jane Doe は Chrome で米国からログインしたことがあります。彼女が Firefox でウクライナから私の Web サービスに突然ログインした場合、私はそれを非常に「異常な」イベントと見なし、通知を送信したいと考えています。

私はすでに CouchDB (具体的には Cloudant) を使用しており、Cloudant / CouchDB はこの種のもの (ビッグデータ分析) に最適であるとオンラインであちこちで言っている人をよく見かけます。しかし、私はどこから始めればよいか完全に途方に暮れています。CouchDB を使用して以前に「学習した」データを保存することは言うまでもなく、Web サービスの範囲外のイベントの比較的単純な追跡に関するドキュメントに関しては、あまり見つけられませんでした。この種のデータ処理を行うための専用システムをいくつか目にしますが (PredictionIO が思い浮かびます)、そもそも CouchDB の性質を考えると、やり過ぎだと感じずにはいられません。

どんな洞察も大歓迎です。ありがとう!

4

3 に答える 3

22

これは機械学習に理想的に適した問題であり、scikit-learn.orgはこの種の問題に適したライブラリであると想定するのは正しいです。詳細については気にしないでください - ( couchdb cloudant) とりあえず、問題を解決できる状態にしましょう。

特定のユーザーのログインの詳細 (時間、場所、ユーザー エージェントなど) の変動が少ないと想定できる場合、そこから大きな変動があるとアラートがトリガーされます。これは、@Robert McGibbon が提案した「外れ値」検出が機能する場所です。

たとえば、各ログインの詳細を 1 つの次元に絞り込み、各ユーザーのログイン詳細ベクトルを作成します (このログイン情報のダイジェストを改善する余地はかなりあります)。

  • ログイン時間 (モジュロ 24 時間)
  • 場所 (おそらく整数の場所の配列で、それぞれの整数は異なる国を表します)
  • ユーザー エージェント (同様の整数ユーザー エージェントの配列)

等々。ユーザーがログインするたびに、この詳細配列を作成して保存します。大量のテスト データを蓄積したら、いくつかの ML ルーチンの実行を試すことができます。

したがって、ユーザーと、成功したログインに対応する一連のログイン データ (トレーニング セット) があります。サポート ベクター マシンをトレーニングして、このユーザーのログイン パターンを認識できるようになりました。

from sklearn import svm

# training data [[11.0, 2, 2], [11.3, 2, 2] ... etc]
train_data = my_training_data()

# create and fit the model
clf = svm.OneClassSVM()
clf.fit(train_data)

次に、新しいログインが発生するたびに、単一のログイン詳細配列を作成し、それを SVM に渡します

if clf.predict(log_in_data) < 0:
    fire_alert_event()
else:
    # log-in is not dissimilar to previous attempts
    print('log in ok')

SVM が新しいデータ ポイントがそのトレーニング セットと大幅に異なることを検出すると、アラームが発生します。

私の 2 ペンス。優れたトレーニング セットを手に入れたら、タスクにより適した ML 手法が他にもたくさんあります (高速で正確であるなど) が、トレーニング セットを作成してからルーチンをトレーニングするのが最も効果的です。重要な課題。

試してみたいエキサイティングなことがたくさんあります!不正なログイン試行があることがわかっている場合は、より複雑な SVM を使用してこれらをトレーニング セットに追加し、良好なログインと不正なログインでトレーニングすることができます。異なる「場所」値の配列を使用する代わりに、ユークリッドの異なるログインを見つけて使用することができます! とても楽しそうですね、頑張ってください!

于 2013-11-04T11:17:40.453 に答える
1

その間のユーザーの行動の異常を調査しようとしている場合は、 を参照することをお勧めしますtime-series anomaly detectors。このアプローチを使用すると、新しい潜在的に疑わしいパターンや異常なイベントを統計的/自動的に把握できます。

http://www.autonlab.org/tutorials/biosurv.htmlおよびhttp://web.engr.oregonstate.edu/~wong/workshops/icml2006/slides/agarwal.ppt では、機械学習に基づくいくつかの手法について説明しています。この場合、多数の ML アルゴを含む非常に強力な Python ライブラリであるscikit-learn.orgを使用できます。

于 2013-11-06T20:48:21.767 に答える