Tâches R, Monte Carlo et entreprise

Lors de la résolution de problèmes pratiques avec une régularité enviable, il faut faire face à deux approches typiques qui sont proposées lors des réunions ou qui sont dans l'air.


  • Option 1 - résolvons un problème particulier de manière générale. Après l'avoir résolu de cette manière, nous pourrons en résoudre beaucoup plus en cours de route.
  • Option 2 - Prédisons les prévisions, le ML et beaucoup de choses à la mode pour prédire le comportement d'un système non linéaire. Cool après tout.

Cependant, l'application de telles approches n'est pas toujours adéquate à la formulation initiale du problème.
Il s'agit d'une continuation des publications précédentes .


Pourquoi de telles approches peuvent-elles être redondantes? Oui, pour de nombreuses raisons: le temps qu'il faut pour trouver une solution à un problème, le temps qu'il faut pour calculer, les exigences pour la quantité de ressources informatiques, effectuer des calculs avec une grande précision, construire le mauvais modèle, la grande complexité de la solution analytique pour le problème direct, la grande complexité de la résolution du problème inverse, et bien plus encore.


Mais il existe un moyen classique de résoudre de tels problèmes, ce qui est particulièrement bon si vous avez un ordinateur puissant à portée de main. Méthode de Monte Carlo. Stat. analyse des résultats de plusieurs solutions à un problème direct, qui, en règle générale, est bien algorithmisable.
Les réponses nécessaires, en première approximation, peuvent être obtenues en quelques heures, comprenant la compréhension du problème, le codage et la réalisation de calculs approximatifs.


Ci-dessous ne sont que 2 exemples.


Exemple 1. Combinatoire des listes imbriquées


La tâche commerciale initiale consiste à étendre la base de formation du chat bot sur la base d'un petit ensemble de phrases d'entrée. Une large sélection de phrases sources ne l'est tout simplement pas physiquement. Mais il peut être considérablement élargi par une analyse préliminaire de la structure de la phrase et la génération de permutations permises par les règles de la langue. Par exemple, «un tuyau coule dans la pièce 6» et «dans une pièce 6 coule le tuyau» sont essentiellement identiques.


Donc, une déclaration officielle. Il existe une liste à plusieurs niveaux de listes imbriquées. Il est nécessaire de générer presque toutes les permutations possibles de la liste de valeurs d'origine, à condition que les permutations des éléments ne soient autorisées que dans chaque liste distincte .


ll <- list(list('a', 'b', 'c'), 'd', list('e', 'f', list('g', 'h', 'i'))) #   factorial(3) * factorial(3) * factorial(3) * factorial(3) 


Un croquis d'une solution possible.
 #        ff <- function(x){ #    ,           res <- if(is.list(x)) { sample(x, length(x), replace = FALSE) %>% purrr::map(ff) } else { x } res } procLine <- function(row){ purrr::map(row, ff) %>% #    rlang::squash_chr() %>% stri_c(collapse = "") } #   ,     wks <- 1 future::plan(multiprocess, workers = wks) tic(glue("Generating permutations @ {wks} thread(s)")) df1 <- purrr::map(1:10^4, ~sample(ll, length(ll), replace = FALSE)) %>% #          # purrr::map_chr(procLine) %>% furrr::future_map_chr(procLine) %>% enframe(name = NULL) %>% distinct() toc() 

Exemple 2. Prédiction des files d'attente des clients


Le schéma de mesure est tel qu'il est possible de prendre des indicateurs externes du processus (nous le considérons plutôt compliqué et instable dans le temps), comme l'heure d'arrivée et de départ des clients, la structure du panier et bien plus encore.


Option numéro 1 - résoudre le problème de front. Zéro connaissance théorique de l'interprète + accumulation de la masse historique de toutes sortes d'indicateurs externes (caractéristiques) et utilisation des méthodes ML pour "l'ajustement". Certaines prévisions sont en cours, mais ce qui, pourquoi et comment - dépasse le cadre, il est nécessaire d'utiliser des "interprètes" lianisés.


Option n ° 2 - Nous utilisons la méthode scientifique de la cognition. Nous ouvrons la théorie des systèmes de files d'attente, construisons une statistique. indicateurs de process en fonction des paramètres QS, nous lançons une simulation discrète paramétrée du service client. Nous obtenons un «modèle numérique» du Système qui a des leviers de contrôle et un pouvoir explicatif analytique basé précisément sur la nature des objets observés, et non sur un ensemble de certaines «caractéristiques».
R a un super paquet de simmer pour cela. Toutes les informations et de nombreux exemples pratiques ici .


Article précédent - «Quelques touches pour travailler avec des identifiants bigint dans R» .

Source: https://habr.com/ru/post/fr482020/


All Articles