[译]基于模型的机器学习 - 第二章 评估人们的技能
在我们的一生中,我们不断评估周围人的技能和能力。我应该雇用谁?谁应该在团队中比赛?我可以向谁寻求帮助?我如何最好地教导这个人?综合我们对某人的所有了解,并弄清楚他们能做什么和不能做什么,这对我们大多数人来说都是很自然的。但是我们如何使用基于模型的机器学习来自动完成这项工作呢?
在本章中,我们将开发我们的第一个针对真实世界数据的模型。我们将解决评估需要特定技能的工作候选人的问题。其想法是候选人将参加多项选择测试,我们将使用基于模型的机器学习来确定每个候选人具有哪些技能(以及具有什么概率),这些信息基于他们在测试中的答案。然后,我们可以使用这些信息来执行诸如选择很可能具有一组必要技能的候选人的初选名单等任务。
测试中的每个问题都需要某些技能来回答。对于软件开发工作,这些技能可能是编程语言 C# 或数据库查询语言 SQL 的知识。有些问题可能需要多种技能才能正确回答。图 2.1 给出了一些示例问题,这些问题已标记了回答它们所需的技能。因为我们的模型可以用于许多不同类型的工作,所以它必须适用于不同的测试和不同的技能,只要提供这些技能注释即可。重要的是,系统在呈现新测试时应仅使用这些注释——它不能要求任何额外的信息,例如来自具有已知技能的人的样本答案。
图 2.1 用于评估软件开发技能的认证测试的一部分。这些问题已注释了回答它们所需的技能。
为了评估候选人具有哪些技能,我们需要分析他们对测试的答案。由于我们知道每个问题所需的技能,这可能看起来很简单:我们只需要检查他们是否答对了所有 SQL 问题或答错了所有 C# 问题。但现实世界比这更复杂——即使有人知道 C#,他们也可能犯错或误读问题;即使他们不知道 SQL,他们也可能纯粹靠运气猜对了答案。在某些情况下,测试问题可能写得很差,甚至完全错误。
对于需要两种(或更多)技能的问题,情况甚至更加复杂。如果有人答对了需要两种技能的问题,这表明他们可能拥有这两种技能。如果他们答错了,有几种可能性:他们可能有一种或另一种技能(但可能不是两者都有),或者他们可能两者都没有。评估哪种情况是真实的需要查看他们对其他问题的答案,并尝试找到一组一致的技能,这些技能很可能综合产生所有考虑的答案。要自动进行这种复杂的推理,我们需要设计一个模型,用于描述具有特定技能的人如何回答一组问题。
您可以使用配套源代码重现本章中的所有结果 [Diethe et al., 2019]。
参考文献
[Diethe et al., 2019] Diethe, T., Guiver, J., Zaykov, Y., Kats, D., Novikov, A., and Winn, J. (2019). 基于模型的机器学习书籍,配套源代码。https://github.com/dotnet/mbmlbook.
- 原文作者:BeanHsiang
- 原文链接:https://beanhsiang.github.io/post/2026-01-06-mbml-learning-skills/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。