【问题标题】:Adapting Machine Learning Algorithms to my Problem使机器学习算法适应我的问题
【发布时间】:2011-01-30 13:49:45
【问题描述】:

我正在做一个项目,需要你的想法和建议。

首先,让我说说我的问题。

机器有电源键和其他一些按键 只有一个用户具有使用本机的身份验证。有 没有其他认证方式,机器在公司公共区域。

机器正在使用电源按钮和其他一些键的组合。 按键顺序是保密的,但我们不信任它,任何人都可以知道密码并访问机器。

我有能力管理密钥持有时间以及其他一些指标 测量按键之间的时间差异,例如水平或垂直按键时间(差异)。我也可以测量保持时间等。

这些都意味着我有一些输入,

现在我正在尝试通过分析这些输入来获取用户配置文件。

我的想法是让经过身份验证的用户按密码 n 次并创建一个阈值或类似的东西。

这种方法也可以说是BIOMETRICS,任何知道机器按键组合的人都可以尝试密码,但如果超出这个范围就无法访问。

如何将这些应用到我的算法中?我应该从哪里开始?

我不想深入研究机器学习,而且我可以看到,在我的第一次尝试中,我可以得到非常高的误报和误报值,但我可以通过改变我的输入来管理它。

谢谢。

【问题讨论】:

  • 如果只有一个授权用户,您是否考虑过基于硬件的身份验证方法?基于 USB 密钥的身份验证(当然,与密码结合使用)可能比任何按键时间生物识别技术更好。
  • 是的,其实我们也考虑过。出了点问题,我们总结了keystroke-timing。谢谢你的回复。

标签: authentication machine-learning biometrics


【解决方案1】:

对我来说,这似乎是分类问题的一个很好的候选。您有两个类(正确的密码输入/不正确的密码),您的数据可能是按下按钮的时间(从时间 0 开始)。您可以教授学习算法,但有几个正确密码数据和错误密码数据的示例。一旦您的分类器经过训练并且工作令人满意,您就可以尝试预测新密码输入尝试的正确性。

您可以尝试 Weka 的几个分类器,这是一个基于 GUI 的机器学习工具 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 选择分类器(例如朴素贝叶斯)来运行此数据。这将产生一个可用于预测未来条目的分类器(例如一组规则)。

【讨论】:

  • 我对分类器的训练有疑问。假设我将数据放在表格中并应用了其中一种算法。结果我得到了什么?我正在考虑用 C++ 编写我的代码,所以我得到了一种分类器库来包含我的算法或...?
  • 不错的分类器,C4算法,看看就好!
  • 你得到的分类器本质上是一组规则,或决策树等。基本上是程序预测新样本结果的一种方式。在此示例中,您将通过算法运行您的训练集(C4 是一个很好的建议),您会得到类似“如果按钮一
  • 好主意。但是,我不会使用绝对值,而是使用它们的差异。 (所以从第一个按钮到第二个按钮的时间)。这样,您可以减少特征之间的互信息,然后像朴素贝叶斯(假设独立)这样的东西会更可靠。
  • 拜耳的好点。我的建议很笼统。
【解决方案2】:

这类问题的关键是设计好的指标。获得输入值向量后,您可以使用多种机器学习算法之一将其分类为授权或拒绝。所以第一步应该是确定哪些指标(你提到的那些)将是最有用的,并选择其中的一小部分(5-10)。通过平均(例如,任何按键的平均长度,而不是每个键的单独值)来折叠一些可能会受益。然后你需要选择一个算法。对实数向量进行分类的一个很好的方法是支持向量机 - 此时您应该阅读它,特别是“内核”函数是什么,以便您可以选择使用一个。然后,您将需要收集一组学习示例(具有已知结果的向量),用它们训练算法,并在一组新示例上测试训练后的 svm 以查看它的性能。如果简单内核(例如线性)的性能很差,您可以选择使用更高维度的内核。祝你好运!

【讨论】:

  • 是的,你说得对,指标真的很重要,因为我会尽量减少 FAR 和 FRR。你能提供给我一些在线网页来获得一些经验吗?
  • 这是一个研究领域,所以我不知道教程或简化帐户。最好的办法是阅读有关您最喜欢的机器学习算法和已解决的类似问题(基于多维数据的分类)的论文和维基百科。如果在那之后您仍然没有想法,您应该询问您的项目主管如何处理它 - 他应该会很有帮助,特别是如果您表明您已经知道一些事情。
猜你喜欢
  • 2020-06-06
  • 2017-05-09
  • 2011-01-31
  • 2016-04-16
  • 2021-06-09
  • 2011-08-01
  • 2014-04-09
  • 2015-12-02
  • 2012-03-04
相关资源
最近更新 更多