【问题标题】:Extracting features in fastICA (Matlab)在 fastICA (Matlab) 中提取特征
【发布时间】:2017-04-25 18:52:56
【问题描述】:

我是机器学习初学者,非常感谢您的帮助。

我正在尝试使用 FastICA MATLAB 工具箱,经过大量的谷歌搜索和阅读有关它的文档后,我变得越来越困惑。

我正在使用Car Data Set,我正在使用 1000 张 100x40 图像(500 张汽车,500 张非汽车)。我正在使用 fastica 来寻找独立的组件(稍后我将使用它们来构建汽车检测系统)。

我在我的火车数据集上运行以下代码:

[icasig, A, W] = fastica(Training_Set);

A 和 W 是 1000x1000 矩阵,icasig 是 1000x4000 矩阵,据我了解,icasig 的行包含独立分量,A 是混合矩阵。

如何绘制独立分量?谁能用简单的英语向我解释一下 W 是什么?

另外一件让我困惑的事情是,如果我删除 icasig 中的一些行并获得例如 300x4000 矩阵,我是否在进行特征压缩?

如果我使用分类算法(例如 SVM),如何改变用于训练它的独立组件的数量?我认为 rica 非常适合这个,但不幸的是我没有统计和机器学习工具箱。

【问题讨论】:

    标签: matlab feature-extraction


    【解决方案1】:

    谁能用简单的英语向我解释一下 W 是什么?

    ICA中的

    w通常表示一个分离矩阵。给定一张混合图像X,可以通过计算wX得到独立的分量。结果 S 通常是另一个矩阵,其大小与 X 相同。 S 的每一行都包含代表一个独立分量的数据。

    使用 ICA 算法的主要目的之一是找到分离矩阵 w。如果您对此一无所知,我建议您在继续之前阅读更多文献。甚至fast ICA's Wikipedia 页面也会告诉你w

    如何绘制独立分量?

    如果icasigS,您可以尝试以下操作:

    icasig = abs(icasig) % take the absolute
    
    % you can add a for loop here to plot all components
    component=icasig(1,:) % take the first component
    im = reshape(component,[h,w,3]); % h being the height of the image of the component and w being the width
    im=uint8 (round(im)); 
    figure; imshow(im); 
    % end of the for loop. Be prepared to have a lot of pictures poping up.
    

    如果我删除 icasig 中的一些行并获得例如 300x4000 矩阵,我是否在进行特征压缩?

    如果删除一些单独的组件意味着特征压缩,那么是的。

    【讨论】:

    • 感谢您的回答,但我仍然很困惑。我尝试使用从 ICA 获得的特征来构建分类器,但我不确定我是否以正确的方式进行操作。 svmtran 中的输入是 icasig?我应该如何投影测试集? [icasig, A, W] = fastica(Training_Set); SVMStruct = svmtrain(icasig, train_label, 'kernel_function', 'quadratic') Group = svmclassify(SVMStruct, Test_Set)
    • @Jane 我不熟悉 svm,但看来您在这里做的是正确的事情。我不确定你所说的投影测试集是什么意思。我建议您打开一个新问题或编辑您的原始问题以包含 svm 的问题。
    猜你喜欢
    • 2012-02-16
    • 1970-01-01
    • 2018-09-16
    • 2011-01-04
    • 1970-01-01
    • 2013-09-01
    • 2020-03-22
    • 2015-07-03
    • 1970-01-01
    相关资源
    最近更新 更多