c - 在优化算法中“缓存残差”是什么意思?
问题描述
我正在阅读有关Netflix 挑战赛(2006 年)的文章。在某些时候,他说:
为了效率起见,缓存残差(全部为 1 亿个),这样当您训练特征 72 时,您不必等待 predictRating() 重新计算前 71 个特征的贡献。您将需要 2 Gig 的 ram、一个 C 编译器和良好的编程习惯来执行此操作。
缓存残差是什么意思?当您更改参数的值时,如何避免重新计算所有残差?
解决方案
这意味着,您应该首先在计算值的缓存中查找,而不是每次都重新计算解决方案的部分内容。如果它存在,则无需重新计算它,它只是被使用。如果它不存在,则计算它,存储在缓存中并使用它。
因此,假设我们正在计算三个阶乘数的总和。每个阶乘数由公式 F(x) = x * F(x-1) 或 F(0) = 1 计算。所以如果你必须找到 F(7) + F(3) + F(9), F(7) 将缓存 F(7) 到 F(0) 并且 F(3) 将不计算任何内容,从先前缓存的值中查找。同样,F(9) 将从 F(8) 计算,也从 F(7) 计算,F(7) 不会被计算,从缓存中查找。
残差是在获得最终答案的过程中使用的计算的任何部分。
推荐阅读
- python - 代码无法将 chromedriver.exe 识别为文件
- java - 如何检查我的字符串以便只允许使用字母和 $ 符号?
- sql - SQL INSERT 语句包括 WITH 和 SELECT
- reactjs - 使用 axios post 请求访问我的 API 中的数据
- kendo-ui - Kendo Grid - 条件客户端模板
- java - 从一项活动导航到另一项活动时出错
- brightcove - 如何将 Brightcove 播放器和页内体验从一个帐户复制到另一个帐户?
- excel-formula - 引用公式中的单元格,但想要使用该单元格中的单元格引用,而不是实际的单元格本身
- vb.net - 如何将datatable或datagridview转成水晶报表,注意datagridview中的数据是可变行和列的
- python - 如何在 Django/Python 中引用“一对多”关系的“多”?