我有一个充满对象的现有数据库(我将以书籍为例)。当用户登录网站时,我想向他们推荐书籍。
我可以根据他们关注的其他人等推荐书籍,但我想要更准确,所以我为每个用户收集了一组训练数据。
通过反复向每位用户展示一本书并询问他们是否喜欢这本书的外观来收集数据。
训练数据存储在mongodb中,书籍存储在postgres数据库中。
我已经编写了代码来预测给定用户是否会根据他们的训练数据喜欢给定的书,但我的问题是:
如何应用数据/概率查询postgres数据库中的书籍?
为每个用户和每本书保存一个用户喜欢一本书的概率是低效的。
从数据库中加载所有书籍并计算每本书的概率也是低效的。
请您参考如下方法:
I've written code to predict wether or not a given user will like a given book based on their training data
这段代码是什么样的?理想情况下,它是某种基于书籍属性(如流派、长度等)的决策树,技术上称为 classifier。 .一个简单的例子:
if ( user.genres.contains(book.genre) ) {
if ( user.maxLength < book.length ) {
print "10% off, today only!"
}
}
print "how about some garden tools?"
Saving the probability a user likes a book for every user and every book would be inefficient.
没错。请注意,上述决策树可以表述为数据库查询:
SELECT * FROM Books WHERE Genre IN [user.genres] AND Length < [user.maxLength]
根据训练数据,这将为您提供最有可能被用户喜欢的所有书籍。
