【发布时间】:2011-01-31 23:28:20
【问题描述】:
我有一个我认为是简单的机器学习问题。
这是一个基本问题:我反复得到一个新对象和关于该对象的描述列表。例如:new_object:'bob'new_object_descriptions:['tall','old','funny']。然后,我必须使用某种机器学习来查找先前处理过的具有 10 个或更少的最相似描述的对象,例如,past_similar_objects:['frank','steve','joe']。接下来,我有一个算法,可以直接衡量这些对象是否确实与bob相似,例如,correct_objects:['steve','joe']。然后为分类器提供成功匹配的反馈训练。然后这个循环重复一个新对象。
一种
伪代码如下:
Classifier=new_classifier()
while True:
new_object,new_object_descriptions = get_new_object_and_descriptions()
past_similar_objects = Classifier.classify(new_object,new_object_descriptions)
correct_objects = calc_successful_matches(new_object,past_similar_objects)
Classifier.train_successful_matches(object,correct_objects)
但是,有一些规定可能会限制可以使用的分类器:
将有数百万个对象放入此分类器中,因此分类和训练需要很好地扩展到数百万个对象类型,并且仍然很快。我相信这会取消诸如垃圾邮件分类器之类的东西,该分类器仅适用于两种类型:垃圾邮件或非垃圾邮件。 (更新:如果这是一个问题,我可能会将其缩小到数千个对象而不是数百万个。)
再次强调,在对数百万个对象进行分类时,我更喜欢速度,而不是准确度。
更新:分类器应根据过去训练的反馈返回 10 个(或更少)最相似的对象。如果没有这个限制,一个明显的欺骗是分类器可以只返回所有过去的对象:)
为此目的,什么是体面、快速的机器学习算法?
注意:calc_successful_matches 距离度量的计算成本非常高,这就是为什么我使用快速机器学习算法来尝试在我实际进行昂贵的计算之前猜测哪些物体会靠近。
【问题讨论】:
-
请注意:当您描述您的算法时,您未能就被省略的项目提供反馈。即,在您提供的示例中,correct_objects 可能等于
['steve', 'joe', 'dan']。由于计算限制,这可能是必要的,但请确保它是故意的。 -
我特别将 calc_successful_matches 限制为检查是否有任何 past_similar_objects 与 new_object 足够相似。如果它们都不存在,则返回的列表将为空。
标签: python artificial-intelligence machine-learning classification neural-network