In[]:=
SetOptions[EvaluationNotebook[],ShowGroupOpener->True]

Input data

In[]:=
mat={{1.,2,5.},{3.,-1.,2.},{5,-1,2}};mat//MatrixForm
Out[]//MatrixForm=
1.
2
5.
3.
-1.
2.
5
-1
2

PrincipalComponents[] function in WL =”Principal Coordinate Analysis” == ResourceFunction[“MultidimensionalScaling”][mat,3]

◼
  • PrincipalComponents[] function in WL actually computes the “Principal Coordinate Analysis” , not “Principal Component Analysis” and it does not show the “V” in X=USV’
  • In[]:=
    PrincipalComponents[mat,Method->"Covariance"]//MatrixForm​​PrincipalComponents[mat,Method->"Correlation"]//MatrixForm
    Out[]//MatrixForm=
    3.45902
    0.187592
    0.
    -1.10879
    -0.877829
    0.
    -2.35023
    0.690237
    0.
    Out[]//MatrixForm=
    1.91315
    0.0806539
    0.
    -0.677733
    -0.455352
    0.
    -1.23542
    0.374698
    0.
    ◼
  • MultidimensionalScaling[] function in WL
  • In[]:=
    ResourceFunction["MultidimensionalScaling"][mat,3]//MatrixForm
    Out[]//MatrixForm=
    -3.45902
    0.187592
    0.
    1.10879
    -0.877829
    0.
    2.35023
    0.690237
    0.

    SingularValueDecomposition[] function in WL == PCA

    ◼
  • SingularValueDecomposition[mat, reduced rank] function computes the “U”,”S”,and ”V” of the “Principal Component Analysis”. This function must be used for PCA!
  • In[]:=
    {uu,ww,vv}=SingularValueDecomposition[mat,2];​​tt=uu.ww;tt//MatrixForm​​vv//MatrixForm
    Out[]//MatrixForm=
    -4.16306
    -3.55907
    -3.55612
    1.06304
    -5.00475
    2.20517
    Out[]//MatrixForm=
    -0.724315
    0.571061
    0.00426639
    -0.556617
    -0.689456
    -0.603379

    DimensionReduction[mat , reduced rank, Method->”LatentSemanticAnalysis”] in WL == SingularValueDecomposition[] in WL == PCA

    ◼
  • DimensionReduction[ mat , reduced rank , Method->”LatentSemanticAnalysis”] == SingularValueDecomposition[mat, reduced rank]
  • ◼
  • This function computes “Principal Component Scores (T) ” as in X=USV’=TV’
  • In[]:=
    dimredLSA=DimensionReduction[mat,2,Method->"LatentSemanticAnalysis"]​​dimredLSA//Normal​​dimredLSA[mat,"ReducedVectors"]//MatrixForm​​dimredLSA[mat,"ReconstructedData"]//MatrixForm
    Out[]=
    DimensionReducerFunction
    Input type: {Numerical,Numerical,Numerical}
    Output dimension: 2
    
    Out[]=
    DimensionReducerFunctionExampleNumber3,Imputer
    ImputeMissing
    ,RandomImputer
    ImputeMissing
    ,Preprocessor
    ToMLDataset
    ,Processor
    ToVector
    ,ModelMatrix{{-0.724315,-0.571061},{0.00426639,0.556617},{-0.689456,0.603379}},Processor
    FirstValues
    ,FinalDimension2,Padder
    Identity
    ,MethodLatentSemanticAnalysis,PerformanceGoalAutomatic,InvertibilityApproximate,LogTrainingTime0.021248,MaxTrainingMemory66792,DataMemory400,FunctionMemory21560,LanguageVersion{13.2,1},Date
    Fri 30 Jun 2023 10:16:23GMT-4
    ,ProcessorCount6,ProcessorTypex86-64,OperatingSystemWindows,SystemWordLength64,Evaluations{}
    Out[]//MatrixForm=
    -4.16306
    3.55907
    -3.55612
    -1.06304
    -5.00475
    -2.20517
    Out[]//MatrixForm=
    0.982922
    1.96328
    5.01771
    3.18282
    -0.606879
    1.81037
    4.88431
    -1.24878
    2.12
    ◼
  • DimensionReduction[mat, reduced rank, Method->”PrincipalComponentsAnalysis”] : I don’t know what this function does!
  • In[]:=
    dimredPCA=DimensionReduction[mat,2,Method->"PrincipalComponentsAnalysis"];​​dimredPCA//Normal​​dimredPCA[mat,"ReducedVectors"]//MatrixForm
    Out[]=
    DimensionReducerFunctionExampleNumber3,Imputer
    ImputeMissing
    ,RandomImputer
    ImputeMissing
    ,Preprocessor
    ToMLDataset
    ,Processor
    ToVector
    ,ModelMatrix{{0.55769,0.83005},{-0.586934,0.394346},{-0.586934,0.394346}},Processor
    Standardize
    →
    FirstValues
    ,FinalDimension2,Padder
    Identity
    ,MethodPrincipalComponentsAnalysis,PerformanceGoalAutomatic,InvertibilityApproximate,LogTrainingTime0.0256067,MaxTrainingMemory84352,DataMemory400,FunctionMemory27960,LanguageVersion{13.2,1},Date
    Fri 30 Jun 2023 10:15:54GMT-4
    ,ProcessorCount6,ProcessorTypex86-64,OperatingSystemWindows,SystemWordLength64,Evaluations{}
    Out[]//MatrixForm=
    -2.34313
    0.0987804
    0.83005
    -0.55769
    1.51308
    0.458909
    ◼
  • DimensionReduction[ mat , reduced rank , Method->”MultidimensionalScaling”]: I don’t know what this function does!
  • In[]:=
    dimredMDS=DimensionReduction[mat,2,Method->"MultidimensionalScaling"];​​dimredMDS//Normal​​dimredMDS[mat,"ReducedVectors"]//MatrixForm
    Out[]=
    DimensionReducerFunctionExampleNumber3,Imputer
    ImputeMissing
    ,RandomImputer
    ImputeMissing
    ,Preprocessor
    ToMLDataset
    ,Processor
    ToVector
    ,ModelFinalDimension2,Processor
    FirstValues
    ,Padder
    Identity
    ,NearestFunctionNearestFunction
    Data points: 3
    Input dimension: 3
    ,MinRelativeChange0.001,MinDistance0.0001,MaxIterations10000,EmbeddingsNumericArray
    Type: Real64
    Dimensions: {3,2}
    ,MethodMultidimensionalScaling,PerformanceGoalAutomatic,InvertibilityImpossible,LogTrainingTime0.0279905,MaxTrainingMemory65096,DataMemory400,FunctionMemory22712,LanguageVersion{13.2,1},Date
    Fri 30 Jun 2023 10:15:12GMT-4
    ,ProcessorCount6,ProcessorTypex86-64,OperatingSystemWindows,SystemWordLength64,Evaluations{}
    Out[]//MatrixForm=
    3.24611
    -1.1981
    -1.39194
    -0.382624
    -1.85827
    1.57454
    In[]:=
    ResourceFunction["MultidimensionalScaling"][mat,3]//MatrixForm
    Out[]//MatrixForm=
    -3.45902
    0.187592
    0.
    1.10879
    -0.877829
    0.
    2.35023
    0.690237
    0.