Movatterモバイル変換


[0]ホーム

URL:


ferrn

R build status

Theferrn package extracts key components from thedata object collected during projection pursuit (PP) guided touroptimisation, produces diagnostic plots, and calculates PP indexscores.

Installation

You can install the development version of ferrn fromGitHub with:

# install.packages("remotes")remotes::install_github("huizezhang-sherry/ferrn")

Visualise PP optimisation

The data object collected during a PP optimisation can be obtained byassigning thetourr::annimate_xx() function a name. In thefollowing example, the projection pursuit is finding the best projectionbasis that can detect multi-modality for theboa5 datasetusing theholes() index function and the optimisersearch_better:

set.seed(123456)holes_1d_better<-animate_dist(  ferrn::boa5,tour_path =guided_tour(holes(),d =1,search_f =  search_better),rescale =FALSE)holes_1d_better

The data structure includes thebasis sampled by theoptimiser, their corresponding index values (index_val), aninformation tag explaining the optimisation states, and theoptimisationmethod used (search_better). Thevariablestries andloop describe the numberof iterations and samples in the optimisation process, respectively. Thevariableid serves as the global identifier.

The best projection basis can be extracted via

library(ferrn)library(dplyr)holes_1d_better%>%get_best()#> # A tibble: 1 × 8#>   basis         index_val info          method        alpha tries  loop    id#>   <list>            <dbl> <chr>         <chr>         <dbl> <dbl> <dbl> <int>#> 1 <dbl [5 × 1]>     0.914 interpolation search_better    NA     5     6    55holes_1d_better%>%get_best()%>%pull(basis)%>% .[[1]]#>              [,1]#> [1,]  0.005468276#> [2,]  0.990167039#> [3,] -0.054198426#> [4,]  0.088415793#> [5,]  0.093725721holes_1d_better%>%get_best()%>%pull(index_val)#> [1] 0.9136095

The trace plot can be used to view the optimisation progression:

holes_1d_better%>%explore_trace_interp()+scale_color_continuous_botanical()

Different optimisers can be compared by plotting their projectionbases on the reduced PCA space. Hereholes_1d_geo is thedata obtained from the same PP problem asholes_1d_betterintroduced above, but with asearch_geodesic optimiser. The5\(\times\) 1 bases from the twodatasets are first reduced to 2D via PCA, and then plotted to the PCAspace. (PP bases are ortho-normal and the space for\(n \times 1\) bases is an\(n\)-d sphere, hence a circle when projectedinto 2D.)

bind_rows(holes_1d_geo, holes_1d_better)%>%bind_theoretical(matrix(c(0,1,0,0,0),nrow =5),index = tourr::holes(),raw_data = boa5)%>%explore_space_pca(group = method,details =TRUE)+scale_color_discrete_botanical()#> Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.#> ℹ Please use `linewidth` instead.#> ℹ The deprecated feature was likely used in the ferrn package.#>   Please report the issue at#>   <https://github.com/huizezhang-sherry/ferrn/issues>.#> This warning is displayed once every 8 hours.#> Call `lifecycle::last_lifecycle_warnings()` to see where this warning was#> generated.

The same set of bases can be visualised in the original 5-D space viatour animation:

bind_rows(holes_1d_geo, holes_1d_better)%>%explore_space_tour(flip =TRUE,group = method,palette = botanical_palettes$fern[c(1,6)],max_frames =20,point_size =2,end_size =5)

Reference


[8]ページ先頭

©2009-2025 Movatter.jp