【问题标题】:Most suitable Machine Learning algorithm for this problem?最适合这个问题的机器学习算法?
【发布时间】:2020-06-06 21:56:09
【问题描述】:

我有一个数据集,我想决定将哪种 ML 算法应用于我的给定问题。

客户需要填写一份包含 50 个问题的评估问卷。问题的例子是,你的工作是什么,以前的工作经历,你赚多少钱,你是否被拒绝贷款等等,最终目标是决定是否应该拒绝。

我有大约 500 个条目供我的算法学习,我已经对我的数据集进行了预处理,并将输入转换为一个 numpy 数组,我想知道什么是最好的算法?我应该在 tensorflow 中使用分类算法还是神经网络,如果是后者,我应该使用哪些层?

谢谢

【问题讨论】:

    标签: python tensorflow keras scikit-learn


    【解决方案1】:

    以xgboost 或random forest 开头怎么样? - 如此简单的“旧”ML? 好处是您可以在训练后可视化模型的决策树。

    如果在 tensorflow 中使用 NN(或者更简单:带有 tensorflow 后端的 keras),您可以使用 MLP(多层感知器),因为问题答案在输入中的位置是固定的。你不需要很多层。

    重要的是您按列对输入数据进行规范化,以便输入数字分别不会比 +1/-1 大/小很多。介绍性书籍虽然很重要,但经常忽略这一点。

    由于您的目标标签是“接受”或“拒绝”,二元分类器会执行此操作(在机器学习方法中也是如此)。 (您使用 0 和 1 作为标签)。

    对于 NN,您不需要进行如此多的层或神经元的分类。首先尝试最小的网络。假设第一层有 10 个神经元,下一层有 7 个神经元(可能更少),然后是 1 个输出神经元用于二元决策。

    对于 Keras,这将是:

    from keras.models import Sequential
    from keras.layers import Dense
    
    def create_mlp(n_input = 500): # number of columns of input data 500 here
        model = Sequential()
        model.add(Dense(10, input_dim=n_input, kernel_initializer='normal', activation='relu')) # init = kernel_initializer
        model.add(Dense(7, kernel_initializer='normal', activation='relu'))
        model.add(Dense(1, activation='sigmoid'))
        model.compile(optimizer='adam',
                      loss='binary_crossentropy',
                      metrics=['acc'])
        return model
    
    model = create_mlp(500) # this will generate the correct NN compiled.
    

    您的数据框(或 Numpy 输入数组必须将样本作为行, 这些列是针对问题 1 列的每个答案。 您必须以数字形式编码的答案。数字应该很小——最好在 -1 和 1 之间。神经网络不喜欢大数字。因此,按列归一化会有所帮助。)

    就是这样。我去年学到了所有这些东西。祝学习顺利。这会很有趣!

    【讨论】:

    • 500 就足够了。如果他以.1 的比率训练测试拆分(那么他的训练数据集是 450 个样本)。如果该决定基于一个简单的规则,那就足够了!
    • 在 iris 数据集上尝试 nn,什么会表现得更好:nn,或者使用线性模型和 rf 在第一级和 rf 作为第二级的堆叠集成。为了使 nn 表现良好,您需要具有数万数据的数据或非常特定的 2d 数据(图像)或序列(时间序列数据)。即使在后一种情况下,您也需要数万个数据点才能使 nn 表现良好。
    • input_dim 是输入数组长度的我的数据集长度吗?
    • @SergeyBushmanov 你在现实生活中使用神经网络吗?我愿意。我会说这完全取决于数据。如果数据非常清晰可辨,那么几个 3 位数的样本就足够了。甚至可能是一百。 Iris 数据集只有 50 个数据集。然而,您可以在其上训练小型 NN。然而,iris 数据集有一些意图难以区分的样本。因此,使用最好的模型,您将获得 98%。
    • @Jay 输入数组的长度。在 keras 中学习数以千计的 MLP NN 初学者教程之一。
    猜你喜欢
    • 2011-01-31
    • 1970-01-01
    • 2020-01-25
    • 2011-01-30
    • 2013-02-06
    • 2018-09-22
    • 2017-10-29
    • 1970-01-01
    • 2012-03-04
    相关资源
    最近更新 更多