# Genetic algorithm combined with PLS regression (GA-PLS)

### Description

A subset search algorithm inspired by biological evolution theory and natural selection.

### Usage

1 | ```
ga_pls(y, X, GA.threshold = 10, iters = 5, popSize = 100)
``` |

### Arguments

`y` |
vector of response values ( |

`X` |
numeric predictor |

`GA.threshold` |
the change for a zero for mutations and initialization (default = 10). |

`iters` |
the number of iterations (default = 5). |

`popSize` |
the population size (default = 100). |

### Details

1. Building an initial population of variable sets by setting bits for each variable randomly, where bit '1' represents selection of corresponding variable while '0' presents non-selection. The approximate size of the variable sets must be set in advance.

2. Fitting a PLSR-model to each variable set and computing the performance by, for instance, a leave one out cross-validation procedure.

3. A collection of variable sets with higher performance are selected to survive until the next "generation".

4. Crossover and mutation: new variable sets are formed 1) by crossover of selected variables between the surviving variable sets, and 2) by changing (mutating) the bit value for each variable by small probability.

5. The surviving and modified variable sets form the population serving as input to point 2.

### Value

Returns a vector of variable numbers corresponding to the model having lowest prediction error.

### Author(s)

Tahir Mehmood, Kristian Hovde Liland, Solve Sæbø.

### References

K. Hasegawa, Y. Miyashita, K. Funatsu, GA strategy for variable selection in QSAR studies: GA-based PLS analysis of calcium channel antagonists, Journal of Chemical Information and Computer Sciences 37 (1997) 306-310.

### See Also

`VIP`

(SR/sMC/LW/RC), `filterPLSR`

, `shaving`

,
`stpls`

, `truncation`

,
`bve_pls`

, `ga_pls`

, `ipw_pls`

, `mcuve_pls`

,
`rep_pls`

, `spa_pls`

,
`lda_from_pls`

, `lda_from_pls_cv`

, `setDA`

.

### Examples

1 2 | ```
data(gasoline, package = "pls")
# with( gasoline, ga_pls(octane, NIR, GA.threshold = 10) ) # Time-consuming
``` |