【基于模型的协同过滤2】决策树模型

2020-06-16  本文已影响0人  虾图米粒

今天我们集中主要讨论如何将决策树模型抽象到协同过滤问题,在讨论之前,首先回顾一下决策树模型在传统分类问题上的作用。

决策树算法回顾

决策树模型根据所解决问题的种类可分为分类问题和回归问题。为了简化讨论,我们先以分类问题进行具体说明。假设我们有一个m×n矩阵R的情况。第一(n-1)列是自变量,而最后一列是因变量。所有的自变量和因变量均为二进制变量。

决策树的工作过程通过运用一系列分层标准(split criteria)对数据进行分层分离。每一次我们选用一个特征来讲分支中的属于不同类的大多数分离出来。换句话说,两个分支之一将主要包含一个类,而另一个分支将主要包含另一个类。当以这种方式选择特征变量以使其与类变量相关联时,每个分支内的数据记录将趋于纯净。当决策树中的每个节点都有两个子代时,结果决策树被称为二进制决策树。

数据分离的质量可以通过叶子节点的加权平均基尼系数来衡量。假设p_{1}p_{2},...,p_{r} 是母节点中分别属于r个不同类别的观测,这个节点的基尼系数定义如下:

G(S) = 1-\sum_{i=1}^{r}{p_{i}}^2

基尼系数一般在0到1之间, 母节点的基尼系数等于所有子节点的基尼系数加权平均值。 假设S_{1}S_{2}分别为母节点的两个子节点,分别含有n_{1}n_{2}个观测。那么从母节点分割到子节点的公式为
Gini(S\Rightarrow [S_{1}, S_{2}]) = \frac{n_{1}*G(S_{1})+n_{2}*G(S_{2})}{n_{1}+n_{2}}。我们可以根据基尼系数来选择合适的特征对树的某个节点进行分割。每一次从上往下(母节点到子节点)分割我们都会选择基尼系数最小的特征进行分割,直到每个节点仅包含属于特定类的观测。 我们也可以提前结束树的叶子节点的生长,直到某个节点中至少某阈值观测属于某个特定类类别。这样的节点称为叶节点,并用该节点通过节点中的记主要类进行标记。

如果我们想通过决策树测试某一个位置观测的分类,我们可以通过自变量来映射决策树中从根到叶的路径。因为决策树的本质就是对数据空间的分层分区,所以测试实例将严格遵循从根到叶的一条路径。最终到达的叶子节点的的标签就被预测为测试实例的相关标签/分类。

以上就是对于二进制特征的分类,只需稍作修改,该方法就可以扩展到数值特征变量和独立变量。要处理数字独立(特征)变量,可以将属性值划分为间隔以执行拆分。数据分割的质量可以从基尼系数更改为更适合数值变量的方差来表达。方差的值越低, 说明待分割节可以通过因变量更好的区别地映射的训练实例。我们一般会使用叶子节点的平均数值来进行预测。

将决策树延伸到协同过滤上

将决策树扩展到协同过滤问题的的主要挑战主要来自以下三个方面

下面探探如何解决这个问题

另一种对于问题二的解决思路是给数据降维。考虑一下这种情况,假设我们需要预测第j个项目的评分。从一开始,我们可以将第j从评分矩阵中剔除, 得到一个m×(n−1)个评分矩阵矩阵。接下来我们可将这个评分菊展转换为较低维的矩阵 用 m×d表示形式,其中d\ll n− 1, 其它所有所有属性均已完全指定。我们可以估计m×(n-1)个评分矩阵中每对项目之间的协方差。前d个特征向量\overline{e}_{1}, ... , \overline{e}_{d}
可以通过估计的(n-1)×(n-1)协方差矩阵来决定。每个特征向量都是包含(n-1)个元素。我们可以将每个用户的评分投射到特征向量上。这样每个用户可以得到一个d 维度的评分,这个评分稠密的。通过姜维,我们可以为项目j 创建一个标准的决策树。我们可以重复这个过程将j的值从1迭代到n重复此方法,以便构造总共n个决策树。因此,第j个决策树仅对预测第j个项目的评分有用。 n个项目中每个项目的特征向量和树都存储为模型的一部分。

为了预测用户i的项目j的评分,我们将m×d矩阵的第i行用作测试实例并且我们使用第j个决策树模型以预测组中的评分。我们的第一步将除第j个项目使用剩余的n − 1个项降维到d维进行简化表示。其中我们会使用第j个特征向量集用于投影和降维过程。然后这个降维的d维特征将 直接应用第j各项目相应决策树或回归树一起使用以执行预测。

实际上,这种将降维与分类模型结合起来的方法并不局限于决策树。 它适用于几乎所有分类模型。

喜欢请点赞,转载请注明出处!

参考文献
[1] Aggarwal, Charu C.Recommender systems. Vol. 1. Cham: Springer International Publishing, 2016.

上一篇下一篇

猜你喜欢

热点阅读