哪种分类模型允许用户选择数据输入的重要性?

数据挖掘 机器学习 Python 神经网络 分类 r
2022-03-05 23:01:04

我正在做一个比赛分析项目,我必须处理我有一些输入的情况,比如技能、经验、认证等,我的输出是候选人选择是或否,我的问题是,是否有任何算法可以将允许用户给一个输入权重而不是其他输入?例如,技能对某人更重要,而对其他用户体验很重要。我尝试过神经网络和朴素贝叶斯算法,但无法选择变量的重要性。任何帮助都将是非常可观的。

3个回答

答案是你不需要假设您决定使用一些分类模型,例如一个简单的决策树,所讨论的模型将隐式学习哪些是训练数据特征的重要性(或权重),并将这些特征用作树。

为了更好地理解这个想法,让我们以ID3算法为例,它是现有的几种从数据集生成决策树的算法之一。该算法将通过迭代地将那些在每一步中最大化信息增益的特征设置为决策节点来构建树,或者换句话说,那些是最佳预测器的特征。

因此,它将隐含地更加重视作为更好预测变量的属性,因此无需为数据集的特征分配权重。

所以我的建议是你尝试使用 scikit-learn 中的一些分类器,例如RandomForestClassifier

您应该避免与任何算法竞争特征重要性,但现在让我们看看硬币的另一面。在这里,我为用户着想。也许让用户有权根据某些标准选择人是个好主意,因此为某些特征赋予权重是有意义的。

Rpart 有这个选项(参数 cost 范围从 0 到 1)。

如果用户可以忽略其他变量,这也可能是个好主意,这样您就可以为所有特征的每个子集建立一个模型。

既然你提到了神经网络......

神经网络中的输入权重

通过将输入与您预定义的一些权重相乘,可以轻松地为神经网络中的某些输入赋予更多权重。

TF 中的示例:(假设输入是大小为 3 的数字数组):

input = tf.placeholder(tf.float32, shape=(1, 3))
weights = tf.constant([2, 1, 3], dtype=tf.float32) # weights for input
weighted_input = tf.multiply(input, weights)
... rest ot the network ...

但是,正如其他人已经提到的,在机器学习算法中使用加权输入时应该小心,在这种情况下是神经网络,因为这些东西应该由模型学习。