【问题标题】:Combining feature sets extracted from multiple models组合从多个模型中提取的特征集
【发布时间】:2016-07-25 05:00:45
【问题描述】:

我使用 Sklearn 和 Caffe 从大量训练和测试图像中提取了特征。为了执行特征提取,我使用了来自 Caffe Model Zoo 的 3 种不同的预训练卷积网络。

使用这 3 组特征中的任何一组,我都可以训练一个 SVM,它在测试数据上的准确率约为 80%。但是,利用所有 3 组功能的强大功能的最佳方式是什么?

我曾尝试简单地将 3 个单独的 SVM 的结果平均在一起(平均每个标签的概率预测),但与单个模型相比,它没有产生任何改进。

将特征集连接成一个大集并将其用于训练 SVM(或其他)是否有帮助?

请注意,数据集是多类多标签。谢谢。

【问题讨论】:

    标签: machine-learning computer-vision svm feature-extraction conv-neural-network


    【解决方案1】:

    这不是组合功能的好方法。 在机器学习中,我们使用集成技术。集成技术:装袋、提升、堆叠和层次结构。 根据我的经验,我喜欢使用 boosting 或 stacking。 Boosting 是一种贪婪的学习策略,它不断改变数据的分布以及用于训练每个基学习器的特征,因此即将到来的基学习器将专注于困难的样本。 阅读有关 viola jones adaboost 分类器的信息。 如果您有严重的数据不平衡问题,请阅读 SMOTEBoost 算法

    【讨论】:

    • 谢谢。集成技术可以与 sklearn 中的多标签数据一起使用吗?
    • 是的,它可以通过搜索找到最适合您的方法。多标签本身仍在研究中。对不起,我不知道这个包裹
    【解决方案2】:

    我尝试了以下解决方案,但是当仅使用 TFIDF + BOW 功能时,它给出了准确度:0.899029126214 当我向它们添加词汇特征时,准确度:0.7747572815533981 我已经使用特征联合相同的特征矩阵(TFIDF + bow)然后我使用 h.stack 来堆叠 featureunion.vector + 词法向量,代码如下:

    # average number of words per sentence
    
        fvs_lexical[e, 0] = words_per_sentence.mean()
        # sentence length variation
        fvs_lexical[e, 1] = words_per_sentence.std()
        # Lexical diversity
        fvs_lexical[e, 2] = len(vocab) / float(len(words))
    # apply whitening to decorrelate the features
    fvs_lexical = whiten(fvs_lexical)
    #bag of wrods features
    bow_vectorizer = CountVectorizer(max_df=0.90, min_df=2, max_features=1000, stop_words='english') 
    #tfidf 
    tfidf_vectorizer = TfidfVectorizer(max_df=0.90, min_df=2, max_features=1000, stop_words='english') 
    #vectorizer and fitting for the unified features 
    vectorizer = FeatureUnion([  ("baw", bow_vectorizer),("tfidf", tfidf_vectorizer)
    fvs_lexical_vector = CountVectorizer(fvs_lexical)
    x1 =vectorizer.fit_transform (train['text'].values.astype('U'))
    x2 =fvs_lexical_vector.fit_transform (train['text'].values.astype('U'))
    x= scipy.sparse.hstack((x2,x3),format='csr')
    y = np.asarray(train['label'].values.astype('U')) 
    

    然后我运行了逻辑回归

    【讨论】:

      猜你喜欢
      • 2021-03-31
      • 2018-11-18
      • 2017-09-12
      • 2021-01-29
      • 2020-11-12
      • 2019-08-03
      • 2011-11-28
      • 2015-02-06
      • 2015-12-27
      相关资源
      最近更新 更多