Python机器学习构建决策树,在该视频中,主要介绍了构建决策树的过程。首先,需要选择最具预测性的特征来分割数据。然后,通过计算节点的熵来衡量数据的无序程度,并选择熵最小的属性作为分割点。接着,根据选择的属性将数据分成两个分支。通过重复该过程,在每个分支上选择具有最高信息增益的属性,直到达到最纯净的叶子节点。最后,根据构建的决策树进行分类。在选择属性时,重要的是考虑分裂后叶子的纯度,即节点中数据的同质性。信息增益用于衡量拆分后的确定性提升程度。通过计算分割前后的熵和加权熵,可以得到属性的信息增益。选择具有最高信息增益的属性作为下一个拆分点。整个过程是通过递归分区来进行的。

在该视频中,我们将介绍构建决策树的过程。

再次考虑药物数据集。问题是,我们如何基于该数据集构建决策树?

决策树是使用递归分区来对数据进行分类的。假设我们的数据集中有14名患者,算法选择最具预测性的特征来分割数据。

在制定决策树时什么是重要的,是确定哪个属性是最好的或更多预测以基于所述特征来分割数据。假设我们选择胆固醇作为分割数据的第一个属性,它将把我们的数据分成两个分支。

正如你所看到的,如果病人胆固醇过高,我们不能说对药物B可能适合他的信心很高。如果患者的胆固醇正常,我们仍然没有足够的证据或信息确定药物A或药物B实际上是否合适。这是用于拆分数据的错误属性选择的示例。所以,让我们尝试另一个属性。

同样,我们有14个病例,这次我们选择了患者的性别特征。它将把我们的数据分成两个分支,男性和女性。

正如你所看到的,如果病人是女性,我们可以非常肯定地说B药物可能适合她。但是如果患者是男性,我们没有足够的证据或确定药物A或药物B是否合适的信息。但是与胆固醇属性相比,因为节点中的结果更纯净。它意味着主要是药物A或药物B的节点。所以,我们可以说性属性比胆固醇更重要,或者换句话说,它比其他属性更具预测性。

事实上,可预测性是基于节点杂质的减少。我们正在寻找减少叶子中患者杂质的最佳功能,基于该特性将它们拆分后。所以,性别特征是一个很好的候选者下面的案例是因为它几乎找到了纯粹的病人。

对于男性患者分支,我们再次测试其他属性以拆分子树。我们在这里再次测试胆固醇,正如你所看到的,它会产生更纯净的叶子。所以我们可以很容易地在这里做出决定。例如如果患者是男性并且他的胆固醇很高,我们当然可以开药A,但是如果是正常的,我们可以很有把握地开B药。

正如你可能注意到的,选择用于拆分数据的属性非常重要重要的是,这一切都是关于分裂后叶子的纯度。如果在100%的情况下,树中的节点被认为是纯的,节点属于目标字段的特定类别。

事实上,该方法使用递归分区来分割通过最小化每个步骤中的杂质,训练将记录分段。节点的杂质是通过节点中数据的熵来计算的。那么,熵是什么呢?

熵是指数据中信息无序的程度或随机性的程度。节点中的熵取决于该节点中有多少随机数据,并为每个节点计算。

在决策树中,我们正在寻找节点中熵最小的树。熵用于计算该节点中样本的同质性。如果样品是完全均匀的,熵为零,如果样本等分,则熵为1。这意味着,如果节点中的所有数据都是药物a或药物B,则熵为零,但如果一半的数据是药物A,另一半是B,则熵为1。

使用的频率表可以很容易地计算节点的熵通过熵公式的属性,其中P表示类别的比例或比率,例如药物A或B。但请记住,您不必将这些计算为它很容易通过您使用的库或包进行计算。

举个例子,让我们在拆分数据集之前先计算数据集的熵。我们有九种药物B和五种药物A。你可以将这些数字嵌入熵公式中在拆分目标属性之前,先计算目标属性的杂质。在这种情况下,它是0.94。

那么,分裂后的熵是什么?现在,我们可以测试不同的属性,找到最具预测性的属性,这导致两个更纯的分支。

让我们首先选择患者的胆固醇查看数据是如何根据其值进行拆分的。例如,当正常情况下,药物B有六个,两个用于药物A。我们可以根据药物A和B的分布,在这种情况下为0.8。但是,当胆固醇高时,数据被分成三个用于药物B和三个用于药品A。计算它的熵,我们可以看到它是1.0。

我们应该遍历所有属性并计算熵分割后,然后选择最佳属性。可以让我们试试另一个领域。让我们为下一次检查选择性别属性。

正如你所看到的,当我们使用性别属性来分割数据时,当其值为女性时,我们有三个病人对药物B和4名对药物A有反应的患者。这个节点的熵是0.98,这不是很有希望。但是在分支的另一侧,当性别属性的值是男性时,药物B的结果在性别上更纯粹,而药物A只有一个。该组的熵为0.59。

现在,问题在于胆固醇和性别特征哪一个是更好的选择?将数据集划分为两个分支的第一个属性,哪一个更擅长?或者换句话说,哪个属性会为我们的药物带来更纯粹的节点?或者,在哪棵树中,分裂后的熵比分裂前的熵少?熵分别为0.98和0.59或其分支中的胆固醇属性的熵分别为0.81和1.0。答案是分裂后信息增益较高的树。

那么,什么是信息增益呢?信息增益是指提高拆分后的确定性。它是一棵树在分裂之前的熵减去由属性分割后的加权熵。我们可以认为信息增益和熵是对立的。随着熵或随机性的量减少,信息增益或确定性增加,反之亦然。因此,构建决策树就是查找返回最高信息增益的属性。

让我们看看如何计算性别属性的信息增益。如前所述,所获得的信息是树的熵在分割之前减去分割之后的加权熵。分裂前的树的熵为0.94,女性患者的比例为14人中的7人,其熵为0.985。此外,男性的比例为14分之7,男性淋巴结的熵为0.592。方括号的结果是分裂后的加权熵。因此,如果我们使用分割数据集的性别属性为0.151。正如你所看到的,我们将考虑熵在以下条件下的样本分布每个叶节点,我们将取的加权平均值为熵由落在该叶下的样本比例加权。

如果我们也使用胆固醇,我们可以计算树的信息增益。它是0.48。现在,问题是,哪个属性更合适?如前所述,拆分后获得更高信息的树,这意味着性别属性。因此,我们选择性别属性作为第一个拆分器。

现在,按性别属性分支后的下一个属性是什么?嗯,你可以猜到,我们应该为每个分支重复该过程,并测试每个其他属性继续达到最纯净的叶子。这是构建决策树的方法。

Python机器学习构建决策树 推荐

领券有优惠