如何为已经是一个热编码的分类数据集建立预测/多变量(以及单、双等)回归模型?

数据挖掘 机器学习 Python 回归
2022-02-13 11:48:50

我对如何仅使用分类数据构建任何类型的 ML 模型感到有些困惑。

我有一个由每个人完成的训练数据集。该数据集有大约 25 列(培训的名称)和 3500 多行(已完成或未完成的培训),每行索引到一个特定的人。由于训练是分类的,我已经对数据集的每一行/列进行了热编码,每一行仍然索引到特定的人。最后一列是一个人参与的事件总数(现在是 0 或 1 个事件总数,但将来可能会更多)。

有没有办法建立某种类型的多元或多元线性回归预测/机器学习模型,以根据他们接受或未接受的培训来预测诸如哪个人更有可能参与事件之类的事情 - 或者哪些培训是最有效的基于一些事件等?此外,有没有办法根据每个人接受(或未接受)的培训以及他们参与或未参与的事件总数为每个人分配概率?同样,我不确定该怎么做,因为我正在尝试从其他分类数据中预测分类数据。

这是我的数据框的一个示例(每一行都被索引到特定的人而不是行索引号):

import pandas as pd

data = {'Training1':[1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1],
        'Training2':[0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1],
        'Training3':[1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0],
        'Training4':[1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1],
        'Training5':[1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1],
        'Training6':[1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1],
        'Training7':[1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0],
        'Training8':[1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1],
        'Training9':[1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1],
        'Training10':[1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1],
        'Training11':[1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0],
        'Training12':[1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1],
        'Training13':[1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1],
        'Training14':[1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1],
        'Training15':[1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1],
        'Training16':[1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0],
        'Training17':[1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1],
        'Training18':[1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1],
        'Training19':[1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1],
        'Training20':[1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0],
        'Training21':[1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1],
        'Training22':[1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1],
        'Training23':[1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0],
        'Training24':[1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1],
        'Training25':[1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1],
        'Total_Incidents': [1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1]}

df = pd.DataFrame(data)
1个回答

您描述的数据非常适合您提到的任务。为了使用正确的设计,将每个任务形式化很重要,例如:

根据他们接受或未接受的培训来预测诸如哪个人更有可能卷入事件之类的事情

这是一个典型的监督学习问题,目标变量是事件的数量。如果目标变量是布尔值,那么将其视为二元分类问题更为标准,但如果它是数值,则将其视为回归问题。在这两种情况下,都可以使用许多方法:线性回归、SVM……我会推荐一个决策树,因为它提供了一个易于解释的模型。

请注意,在这种情况下,您应该至少在训练集和测试集之间拆分数据,以评估模型的性能。

根据事件的数量,哪些培训最有效

这个问题有点不同,我不知道这是不是有意的:不同之处在于目标是预测目标变量(这涉及训练模型,见上文)还是分析/描述数据。后一种选择涉及简单地计算整个数据集的统计数据。例如,在这种情况下,您可以为每个训练 X 计算“给定事件已接受训练 X”的条件概率(这也可以针对各种训练组合进行)。

有没有办法根据每个人接受(或未接受)的培训以及他们参与或未参与的事件总数为每个人分配概率?

  • 第一部分:通过预测模型(上面的第一个选项)可以获得仅基于他们接受的培训的人的概率。大多数分类和回归方法都会计算结果的概率(请注意,在这种情况下,这个概率本身就是一个预测)。

  • 第二部分:同样的问题,但使用了一个关于该人参与的事件的附加变量。这将是一个明显不同的问题,因为它涉及用作输入特征和目标变量的“事件”变量。这是可行的,但需要考虑在设计中包含时间,因为这意味着在特定时间t有些人已经卷入了一起事件,问题是他们是否会再次卷入其中。