A numerically stable PLS algorithm

Dur­ing 2011 year, I have tried many dif­fer­ent ways of mak­ing a PLS algo­rithm (PLS1) as sta­ble pos­si­ble. The goal was to make it as numer­i­cally good as the SVD imple­mented in MATLAB. The pseudocode that solved the PLS1 case for one y‑varable is shown below and it includes the addi­tion of null vec­tors to enable full mod­els in the same way as the SVD and QR decom­po­si­tion algo­rithms in MATLAB are.

The dif­fi­culty was when the model was get­ting near to the null space and the solu­tion was to allow for the loop­ing to break either dur­ing a right side (load­ing weight vec­tor) com­pu­ta­tion or dur­ing a left side (score vec­tor) com­pu­ta­tion. The result was a PLS algo­rithm that can­not be bet­ter in terms of numer­i­cal accu­racy. You could say that with this algo­rithm we reach the end of the road in terms of numer­i­cal sta­bil­ity. But, of course, there may still be work done to speed it up.

The new PLS algo­rithm has been con­firmed to work well for var­i­ous data sets and because there is no algo­rithm pub­lished yet that is sta­ble down to rank defi­ciency, is should be pub­lished. I have tried with BIT Numer­i­cal Math­e­mat­ics, but they did not under­stand the prob­lems with cur­rently pub­lished algorithms.

Leave a Comment

Your email address will not be published. Required fields are marked *

This website uses cookies. By continuing to use this site, you accept our use of cookies. 

Scroll to Top