背包问题概述
背包问题(Knapsack problem)是一种组合优化的NP完全问题。问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。问题的名称来源于如何选择最合适的物品放置于给定背包中。通过暴力搜索,枚举所有可能性,可以找出最优解。但这里我们主要讨论动态规划(Dynamic programming,DP)解法:背包问题作为NP完全问题,暂时不存在多项式时间算法,动态规划属于背包问题求解最优解的可行方法之一。
背包问题(Knapsack problem)是一种组合优化的NP完全问题。问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。问题的名称来源于如何选择最合适的物品放置于给定背包中。通过暴力搜索,枚举所有可能性,可以找出最优解。但这里我们主要讨论动态规划(Dynamic programming,DP)解法:背包问题作为NP完全问题,暂时不存在多项式时间算法,动态规划属于背包问题求解最优解的可行方法之一。
在数据挖掘与机器学习中,决策树是一种常用的预测模型,树中每个节点表示某个对象,而每个分叉路径则代表某个可能的属性值;随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。本篇博文按照由浅入深的顺序,依次整理介绍这两种模型相关联的知识。
今天整理的算法是一种概率算法,它与我们以前提到过的神经网络关系紧密:可以用于解决神经网络求解最值问题;与神经网络类似,灵感来源于自然科学。下面开始介绍这个有趣的算法。
最近听取了Batman成员关于神经网络的讲座,十分精彩,学习到了不少东西,担心遗忘,在这里做个总结与回顾。
阅读本篇博文,可能需要掌握机器学习的一些基础知识。我在本科阶段选修了《数据仓库与数据挖掘》,对相关领域有所了解就足够了。