有关PCA基础知识的查询

时间:2018-04-22 23:56:12

标签: matlab statistics computer-vision pca feature-selection

我想使用PCA进行具有CNN功能的功能选择。从PCA理论来看,数据应该是相关的。从CNN中提取功能后,功能的组织方式为[f1 f2 f3 f4 f5 f6],相应的标签为[L1 L1 L2 L2 L3 L3]。如何检查我的数据是否相关?如果数据不相关,那么我该如何制作?

1 个答案:

答案 0 :(得分:0)

对于有意义的PCA,确实应该在PCA的输入列之间存在相关性。但是,您只有一个功能向量作为PCA输入,因此无法应用相关和PCA。您可以做的一件事是计算每个特征[f1..f6]的等待与另一个特征之间的相关性。同样,您可以将PCA应用于权重矩阵。但我的感觉是,你首先尝试在功能太少的环境中应用特征减少方法(PCA)。您可以将功能从6减少到3(以对[L1..L3]进行分类),但添加具有3个节点的完全连接的层可以在更标准的方法中执行相同的操作。 以下是使用vgg16的示例。

var mongoose = require("mongoose");
var Schema = mongoose.Schema;

var DeliverySchema = new Schema({
    firstName: String,
    lastName: String,
    email: String,
    phone: String,
    shippingAddress: String,
    cityState: String,
    zip: String,
    deliveryDate: Date,
    deliveryInstruction: String,
    useAsBillinAddress: Boolean
}, {_id: false});
mongoose.model('Delivery', DeliverySchema);

var PaymentSchema = new Schema({
    cardNumber: String,
    creditCardYear: String,
    creditCardMonth: String,
    cws: String,
    paymentType: String
}, {_id: false})
mongoose.model('Payment', PaymentSchema);

var OrderProductSchema = new Schema({
    id: String,
    qty: Number
}, {_id: false});
mongoose.model('OrderProduct', OrderProductSchema);

var OrderSchema = new Schema({
    delivery: DeliverySchema,
    payment: PaymentSchema,
    orderProducts: [{OrderProductSchema}],
    timestamp: {type: Date, default: Date.now}    
});

var Order = mongoose.model("Order", OrderSchema, "order");
module.exports = Order;

标签1至398(自然类)的第一组分的PCA得分较高,而399至1000(人工类)的PCA得分较低。这意味着至少一些PCA组件可用于将节点分组在一起。检查权重之间的相关性揭示确实存在,最大相关性约为0.7。我希望现在更清楚了。