sul*_*att 15 python couchdb machine-learning bayesian cloudant
当用户访问我的Python Web服务时,我正在收集许多非常有趣的数据点.例如,我有他们当前的城市,州,国家,用户代理等.我希望能够做的是通过某种类型的机器学习系统/算法(可能是贝叶斯分类器?)来运行它们,最终目标是在出现异常情况时(异常检测)获取电子邮件通知.例如,Jane Doe只在Chrome上从美国登录.因此,如果她突然在Firefox上从乌克兰登录我的网络服务,我希望看到这是一个非常"不寻常"的事件并触发通知.
我已经在使用CouchDB(特别是Cloudant),我看到人们经常在网上说,Cloudant/CouchDB非常适合这种事情(大数据分析).但是我完全不知道从哪里开始.我没有找到关于相对简单地跟踪Web服务的外围事件的文档,更不用说使用CouchDB存储以前"学习"的数据了.我看到了几种用于进行此类数据处理的专用系统(需要想到的是PredictionIO),但考虑到CouchDB的本质,我不禁觉得它们有点过分.
任何见解都会非常感激.谢谢!
dan*_*van 22
您认为这是一个非常适合机器学习的问题是正确的,scikit-learn.org是我对这些类型问题的首选库.不要担心细节 - (couchdb cloudant)现在,让我们让你的问题进入可以解决的状态.
如果我们可以假设给定用户的登录详细信息(时间,位置,用户代理等)的变化很小,那么任何大的变化都会触发您的警报.这就是@Robert McGibbon建议的'离群'检测发挥作用的地方.
例如,将每个登录详细信息压缩到一个维度,并为每个用户创建一个登录详细信息向量(有很大的空间来改进登录信息的摘要);
等等.每次用户登录时,都会创建此详细信息数组并存储它.一旦累积了大量测试数据,就可以尝试运行一些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)
Run Code Online (Sandbox Code Playgroud)
然后,每次新的登录发生时,创建一个登录详细信息数组并将其传递给SVM
if clf.predict(log_in_data) < 0:
fire_alert_event()
else:
# log-in is not dissimilar to previous attempts
print('log in ok')
Run Code Online (Sandbox Code Playgroud)
如果SVM发现新数据点与其训练集明显不同,则它将触发警报.
我的两便士.一旦掌握了良好的训练集,就会有更多ML技术可能更适合您的任务(它们可能更快,更准确等)但是创建训练集然后训练例程将是最多的重大挑战.
有许多令人兴奋的事情要尝试!如果您知道登录尝试不正确,可以使用更复杂的SVM将这些添加到训练集中,您可以使用好的和坏的登录进行训练.您可以找到欧几里德不同的登录并使用它,而不是使用不同的"位置"值数组!这听起来很有趣,祝你好运!
| 归档时间: |
|
| 查看次数: |
6919 次 |
| 最近记录: |