对于粗糙集的算法这里不再过多赘述,主要讲解下实现思路和张贴代码。
实验是根据山东大学学报的基于粗糙集的协同过滤算法研究进行复现。
约简前后的对比放在下面这个链接里面,同时还有一个spyder保存下来的变量缓存。
链接:https://pan.baidu.com/s/1dCqh0sTY-qWwA3BU9eBCZQ
提取码:oy8e
- 首先使用DataFrame读取Movielens的数据集
- 这里的决策系统及决策表的建立是将用户当作样本,项目当成属性,决策属性为用户的划分。
- 选择一个条件子集C,同时建立子集B⊆C,条件a∈C-B。
- 使用子集C对样本进行划分并求出下近似集。使用子集B对样本进行划分求出另一下近似集。
- 依据计算公式求出依赖度,并删除符合约简条件的属性a。
- 重复4、5步骤直到遍历完所有项目。
以上是算法的核心逻辑块,但是这里存在一个遍历的问题,即可能会存在约简的片面性和不完整性,对于不同的子集属性a的依赖度是不相同的,但算法会在其中一个确定不需要属性a的过程将其删除。
在划分和寻找下近似过程中建议参考不同的约简算法,我为了图省事直接进行循