Pulling the principal components out of a DimensionReducerFunction? The Next CEO of Stack OverflowHow can I determine the importance of variables from Classify?Why is the classify function not giving the desired output?How to use Mathematica to train a network Using out of core classification?How to train a net for recognize the numberHow to train a network using out of core training when data have different length?FeatureSpacePlot freaks out with LatentSemanticAnalysis on wordsHow can I reproduce the result of DimensionReduction?How can I see the predictor function that Mathematica produces?Machine learning: How to fix part of the weight matrix?Ordinal subset in the set of classes

Which one is the true statement?

How to find image of a complex function with given constraints?

Is there a way to save my career from absolute disaster?

Can Sneak Attack be used when hitting with an improvised weapon?

How to count occurrences of text in a file?

When "be it" is at the beginning of a sentence, what kind of structure do you call it?

Example of a Mathematician/Physicist whose Other Publications during their PhD eclipsed their PhD Thesis

Pulling the principal components out of a DimensionReducerFunction?

How to avoid supervisors with prejudiced views?

What happened in Rome, when the western empire "fell"?

Would a completely good Muggle be able to use a wand?

Is there a reasonable and studied concept of reduction between regular languages?

How to Implement Deterministic Encryption Safely in .NET

Is it okay to majorly distort historical facts while writing a fiction story?

Is dried pee considered dirt?

Purpose of level-shifter with same in and out voltages

"Eavesdropping" vs "Listen in on"

Getting Stale Gas Out of a Gas Tank w/out Dropping the Tank

What difference does it make using sed with/without whitespaces?

Help/tips for a first time writer?

How many extra stops do monopods offer for tele photographs?

Can someone explain this formula for calculating Manhattan distance?

Is "three point ish" an acceptable use of ish?

what's the use of '% to gdp' type of variables?



Pulling the principal components out of a DimensionReducerFunction?



The Next CEO of Stack OverflowHow can I determine the importance of variables from Classify?Why is the classify function not giving the desired output?How to use Mathematica to train a network Using out of core classification?How to train a net for recognize the numberHow to train a network using out of core training when data have different length?FeatureSpacePlot freaks out with LatentSemanticAnalysis on wordsHow can I reproduce the result of DimensionReduction?How can I see the predictor function that Mathematica produces?Machine learning: How to fix part of the weight matrix?Ordinal subset in the set of classes










3












$begingroup$


Suppose I perform dimension reduction using PCA:



dr = DimensionReduction[1, 2, 3, 2, 3, 5, 3, 5, 8, 4, 5, 
8.5, Method -> "PrincipalComponentsAnalysis"]


If I want to see the principal components themselves, in the original space, one thought is to use the "OriginalData" feature of the DimensionReducerFunction, on basis vectors in the new space:



In[8]:= dr[1.0, 0.0, "OriginalData"]
dr[0.0, 1.0, "OriginalData"]

Out[8]= 1.86006, 2.9998, 4.81724

Out[9]= 3.38701, 3.01026, 5.64163


Is this a reasonable thing to do, or am I misinterpreting how the "OriginalData" feature works? And is there a better way to pull out the principal components themselves? People often want to visualize these for various reasons.



(There are several other questions about how to solve a similar problem with the PrincipalComponents function; this is a question about a different function.)










share|improve this question











$endgroup$
















    3












    $begingroup$


    Suppose I perform dimension reduction using PCA:



    dr = DimensionReduction[1, 2, 3, 2, 3, 5, 3, 5, 8, 4, 5, 
    8.5, Method -> "PrincipalComponentsAnalysis"]


    If I want to see the principal components themselves, in the original space, one thought is to use the "OriginalData" feature of the DimensionReducerFunction, on basis vectors in the new space:



    In[8]:= dr[1.0, 0.0, "OriginalData"]
    dr[0.0, 1.0, "OriginalData"]

    Out[8]= 1.86006, 2.9998, 4.81724

    Out[9]= 3.38701, 3.01026, 5.64163


    Is this a reasonable thing to do, or am I misinterpreting how the "OriginalData" feature works? And is there a better way to pull out the principal components themselves? People often want to visualize these for various reasons.



    (There are several other questions about how to solve a similar problem with the PrincipalComponents function; this is a question about a different function.)










    share|improve this question











    $endgroup$














      3












      3








      3


      2



      $begingroup$


      Suppose I perform dimension reduction using PCA:



      dr = DimensionReduction[1, 2, 3, 2, 3, 5, 3, 5, 8, 4, 5, 
      8.5, Method -> "PrincipalComponentsAnalysis"]


      If I want to see the principal components themselves, in the original space, one thought is to use the "OriginalData" feature of the DimensionReducerFunction, on basis vectors in the new space:



      In[8]:= dr[1.0, 0.0, "OriginalData"]
      dr[0.0, 1.0, "OriginalData"]

      Out[8]= 1.86006, 2.9998, 4.81724

      Out[9]= 3.38701, 3.01026, 5.64163


      Is this a reasonable thing to do, or am I misinterpreting how the "OriginalData" feature works? And is there a better way to pull out the principal components themselves? People often want to visualize these for various reasons.



      (There are several other questions about how to solve a similar problem with the PrincipalComponents function; this is a question about a different function.)










      share|improve this question











      $endgroup$




      Suppose I perform dimension reduction using PCA:



      dr = DimensionReduction[1, 2, 3, 2, 3, 5, 3, 5, 8, 4, 5, 
      8.5, Method -> "PrincipalComponentsAnalysis"]


      If I want to see the principal components themselves, in the original space, one thought is to use the "OriginalData" feature of the DimensionReducerFunction, on basis vectors in the new space:



      In[8]:= dr[1.0, 0.0, "OriginalData"]
      dr[0.0, 1.0, "OriginalData"]

      Out[8]= 1.86006, 2.9998, 4.81724

      Out[9]= 3.38701, 3.01026, 5.64163


      Is this a reasonable thing to do, or am I misinterpreting how the "OriginalData" feature works? And is there a better way to pull out the principal components themselves? People often want to visualize these for various reasons.



      (There are several other questions about how to solve a similar problem with the PrincipalComponents function; this is a question about a different function.)







      machine-learning dimension-reduction






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 14 mins ago









      J. M. is slightly pensive

      98.8k10311467




      98.8k10311467










      asked 4 hours ago









      Michael CurryMichael Curry

      781312




      781312




















          1 Answer
          1






          active

          oldest

          votes


















          4












          $begingroup$

          Here's your data:



          data = 1, 2, 3, 2, 3, 5, 3, 5, 8, 4, 5, 8.5;
          dr = DimensionReduction[data, Method -> "PrincipalComponentsAnalysis"];


          This is not exactly a top level solution, but we can pick apart the DimensionReducerFunction and see inside (try dr[[1]] to see many internal properties).



          Looking further, in there we have a matrix:



          Transpose[dr[[1, "Model", "Matrix"]]]



          -0.572383, -0.577502, -0.582125, 0.793367, -0.56945, -0.215163



          I think these are the components. We can try to verify:



          Transpose[Last[SingularValueDecomposition[2.0/Sqrt[3] Standardize[data], 2]]]



          -0.572383, -0.577502, -0.582125, 0.793367, -0.56945, -0.215163



          (I think we need the 2.0/Sqrt[3] because DimensionReduction appears to use biased standard deviation whereas Standardize uses the unbiased form. I'm not sure though.)






          share|improve this answer











          $endgroup$












          • $begingroup$
            It doesn't look like you need the pre-multiplication by 2/Sqrt[3]; after all, any such rescaling would show itself in the singular values and not the orthogonal factors. The important thing is the shift, which Standardize[] of course does.
            $endgroup$
            – J. M. is slightly pensive
            3 mins ago












          Your Answer





          StackExchange.ifUsing("editor", function ()
          return StackExchange.using("mathjaxEditing", function ()
          StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
          StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
          );
          );
          , "mathjax-editing");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "387"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f194324%2fpulling-the-principal-components-out-of-a-dimensionreducerfunction%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          4












          $begingroup$

          Here's your data:



          data = 1, 2, 3, 2, 3, 5, 3, 5, 8, 4, 5, 8.5;
          dr = DimensionReduction[data, Method -> "PrincipalComponentsAnalysis"];


          This is not exactly a top level solution, but we can pick apart the DimensionReducerFunction and see inside (try dr[[1]] to see many internal properties).



          Looking further, in there we have a matrix:



          Transpose[dr[[1, "Model", "Matrix"]]]



          -0.572383, -0.577502, -0.582125, 0.793367, -0.56945, -0.215163



          I think these are the components. We can try to verify:



          Transpose[Last[SingularValueDecomposition[2.0/Sqrt[3] Standardize[data], 2]]]



          -0.572383, -0.577502, -0.582125, 0.793367, -0.56945, -0.215163



          (I think we need the 2.0/Sqrt[3] because DimensionReduction appears to use biased standard deviation whereas Standardize uses the unbiased form. I'm not sure though.)






          share|improve this answer











          $endgroup$












          • $begingroup$
            It doesn't look like you need the pre-multiplication by 2/Sqrt[3]; after all, any such rescaling would show itself in the singular values and not the orthogonal factors. The important thing is the shift, which Standardize[] of course does.
            $endgroup$
            – J. M. is slightly pensive
            3 mins ago
















          4












          $begingroup$

          Here's your data:



          data = 1, 2, 3, 2, 3, 5, 3, 5, 8, 4, 5, 8.5;
          dr = DimensionReduction[data, Method -> "PrincipalComponentsAnalysis"];


          This is not exactly a top level solution, but we can pick apart the DimensionReducerFunction and see inside (try dr[[1]] to see many internal properties).



          Looking further, in there we have a matrix:



          Transpose[dr[[1, "Model", "Matrix"]]]



          -0.572383, -0.577502, -0.582125, 0.793367, -0.56945, -0.215163



          I think these are the components. We can try to verify:



          Transpose[Last[SingularValueDecomposition[2.0/Sqrt[3] Standardize[data], 2]]]



          -0.572383, -0.577502, -0.582125, 0.793367, -0.56945, -0.215163



          (I think we need the 2.0/Sqrt[3] because DimensionReduction appears to use biased standard deviation whereas Standardize uses the unbiased form. I'm not sure though.)






          share|improve this answer











          $endgroup$












          • $begingroup$
            It doesn't look like you need the pre-multiplication by 2/Sqrt[3]; after all, any such rescaling would show itself in the singular values and not the orthogonal factors. The important thing is the shift, which Standardize[] of course does.
            $endgroup$
            – J. M. is slightly pensive
            3 mins ago














          4












          4








          4





          $begingroup$

          Here's your data:



          data = 1, 2, 3, 2, 3, 5, 3, 5, 8, 4, 5, 8.5;
          dr = DimensionReduction[data, Method -> "PrincipalComponentsAnalysis"];


          This is not exactly a top level solution, but we can pick apart the DimensionReducerFunction and see inside (try dr[[1]] to see many internal properties).



          Looking further, in there we have a matrix:



          Transpose[dr[[1, "Model", "Matrix"]]]



          -0.572383, -0.577502, -0.582125, 0.793367, -0.56945, -0.215163



          I think these are the components. We can try to verify:



          Transpose[Last[SingularValueDecomposition[2.0/Sqrt[3] Standardize[data], 2]]]



          -0.572383, -0.577502, -0.582125, 0.793367, -0.56945, -0.215163



          (I think we need the 2.0/Sqrt[3] because DimensionReduction appears to use biased standard deviation whereas Standardize uses the unbiased form. I'm not sure though.)






          share|improve this answer











          $endgroup$



          Here's your data:



          data = 1, 2, 3, 2, 3, 5, 3, 5, 8, 4, 5, 8.5;
          dr = DimensionReduction[data, Method -> "PrincipalComponentsAnalysis"];


          This is not exactly a top level solution, but we can pick apart the DimensionReducerFunction and see inside (try dr[[1]] to see many internal properties).



          Looking further, in there we have a matrix:



          Transpose[dr[[1, "Model", "Matrix"]]]



          -0.572383, -0.577502, -0.582125, 0.793367, -0.56945, -0.215163



          I think these are the components. We can try to verify:



          Transpose[Last[SingularValueDecomposition[2.0/Sqrt[3] Standardize[data], 2]]]



          -0.572383, -0.577502, -0.582125, 0.793367, -0.56945, -0.215163



          (I think we need the 2.0/Sqrt[3] because DimensionReduction appears to use biased standard deviation whereas Standardize uses the unbiased form. I'm not sure though.)







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited 54 mins ago









          Michael Curry

          781312




          781312










          answered 3 hours ago









          Chip HurstChip Hurst

          22.8k15892




          22.8k15892











          • $begingroup$
            It doesn't look like you need the pre-multiplication by 2/Sqrt[3]; after all, any such rescaling would show itself in the singular values and not the orthogonal factors. The important thing is the shift, which Standardize[] of course does.
            $endgroup$
            – J. M. is slightly pensive
            3 mins ago

















          • $begingroup$
            It doesn't look like you need the pre-multiplication by 2/Sqrt[3]; after all, any such rescaling would show itself in the singular values and not the orthogonal factors. The important thing is the shift, which Standardize[] of course does.
            $endgroup$
            – J. M. is slightly pensive
            3 mins ago
















          $begingroup$
          It doesn't look like you need the pre-multiplication by 2/Sqrt[3]; after all, any such rescaling would show itself in the singular values and not the orthogonal factors. The important thing is the shift, which Standardize[] of course does.
          $endgroup$
          – J. M. is slightly pensive
          3 mins ago





          $begingroup$
          It doesn't look like you need the pre-multiplication by 2/Sqrt[3]; after all, any such rescaling would show itself in the singular values and not the orthogonal factors. The important thing is the shift, which Standardize[] of course does.
          $endgroup$
          – J. M. is slightly pensive
          3 mins ago


















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Mathematica Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          Use MathJax to format equations. MathJax reference.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f194324%2fpulling-the-principal-components-out-of-a-dimensionreducerfunction%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown