我正在开发一个项目,我有用户击键时间数据的子集。这意味着用户进行了 n 次尝试,我将在各种分类算法中使用这些记录的尝试时间数据,以便将来的用户尝试验证登录过程由用户或其他人完成。 (简单地说,这是生物识别技术)
我有 3 次不同时间的用户登录尝试过程,当然这是无限数据的子集。
到目前为止,这是一个简单的分类问题,我决定使用 WEKA,但据我了解,我必须创建一些假数据来提供分类算法。用户的测量尝试将为 1,假数据将为 0。
我可以使用一些优化算法?或者有什么方法可以创建这些假数据以获得最小的误报?
谢谢
i'm working on a project and i have a subset of user's key-stroke time data.This means that the user makes n attempts and i will use these recorded attempt time data in various kinds of classification algorithms for future user attempts to verify that the login process is done by the user or some another person. (Simply i can say that this is biometrics)
I have 3 different times of the user login attempt process, ofcourse this is subset of the infinite data.
until now it is an easy classification problem, i decided to use WEKA but as far as i understand i have to create some fake data to feed the classification algorithm.The user's measured attempts will be 1 and fake data will be 0.
can i use some optimization algorithms ? or is there any way to create this fake data to get min false positives ?
Thanks
发布评论
评论(1)
您可以通过几种不同的方法来解决这个问题。
收集负面示例 - 一种简单的解决方案是仅从其他人那里收集可用作负面示例的击键计时数据。如果您想以非常便宜的方式收集大量样本,例如花费大约 10 美元收集大约 1000 个样本,您可以使用类似 Amazon Mechanical Turk。
也就是说,您可以将一个人类智能任务 (HIT) 放在一起,让人们输入类似序列的随机密码。要获取计时信息,您需要使用外部问题,因为常规问题的受限 HTML 不支持 JavaScript。
使用生成模型 - 或者,您可以针对用户的击键行为训练生成概率模型。例如,您可以针对用户击键之间的延迟训练高斯混合模型 (GMM)。
这样的模型将为您提供特定用户生成的击键计时信息的概率估计。然后,您只需要设置一个阈值来确定时间信息的可能性,以便对用户进行身份验证。
使用 1 类 SVM - 最后,1 类 SVM 允许您仅使用正例来训练类似 SVM 的分类器。 要在 WEKA 中学习一类 SVM,如果您使用的是 v3.6,请使用 LibSVM 包装器。如果您使用的是前沿开发人员版本,可以使用
weka.classifiers.meta.OneClassClassifier
。There are a couple of different ways you could go about approaching this.
Collect Negative Examples - One easy solution would be to just gather keystroke timing data from other people that could be used as negative examples. If you want to gather a large sample very cheaply, as in about 1000 samples for about $10, you could use a service like Amazon Mechanical Turk.
That is, you could put together a human intelligence task (HIT) that has people type in randomized password like sequences. To get the timing information you'll need to use an External Question, since the restricted HTML for regular questions doesn't support JavaScript.
Use a Generative Model - Alternatively, you could train a generative probability model to a user's keystroke behavior. For example, you could train a Gaussian mixture model (GMM) to the user's delay between keystrokes.
Such a model will give you a probability estimate of keystroke timing information being generated by a specific user. You would then just need to set a threshold of how likely the timing information should be in order for the user to be authenticated.
Use 1-class SVMs - Finally, 1-class SVMs allows you to train a SVM like classifier using only positive examples. To learn one-class SVMs in WEKA, use the LibSVM wrapper if you're using v3.6. If you're using the bleeding edge developer version, there's
weka.classifiers.meta.OneClassClassifier
.