[PYTHON] Qu'est-ce qu'une décision rationnelle qui maximise les chances de rencontrer une «maison idéale»?

** ■ 1. Introduction **

Récemment, l'influence de Corona a augmenté le temps que je passe à la maison.

Même ainsi, la maison est un endroit où vous passez beaucoup de temps dans votre vie, et vous voulez la rendre aussi idéale et confortable que possible.

Êtes-vous très satisfait de la maison dans laquelle vous vivez?

Selon une enquête, lorsque le niveau de satisfaction de sa maison a été évalué de 0 à 100 points, seulement environ 9,8% des répondants ont répondu «90 points ou plus».

L'une des dépenses les plus importantes de la vie est celle du «logement», malgré le paiement de dizaines de milliers, de centaines de milliers (ou de millions) chaque mois.

(Et les lecteurs?)

Pourquoi ne puis-je pas simplement dire "Orenya a 100 points! (Au moins 90 points)"? ??

C'est juste une hypothèse individuelle, mais je ne pense pas que Moyamoya (ou a pris la décision de se débarrasser de ce moyamoya) a dit: "En fait, il y avait peut-être une propriété moins chère que celle-ci ..." ) Est lié.

Par conséquent, dans cet article, afin de dissiper une telle anxiété, je voudrais présenter / expliquer une méthode de décision qui maximise la probabilité de rencontrer une «maison idéale» en utilisant la théorie mathématique des probabilités.

En fait, il est ** possible ** de prendre des décisions qui maximisent cette probabilité, en utilisant une approche mathématique probabiliste.

En prenant une telle décision, vous aurez le ** sentiment d'avoir pris une décision rationnelle **, ce qui peut augmenter votre satisfaction dans votre vie.

** ■ 2. Flux approximatif de cet article **

    1. Quel genre de décision dois-je prendre?
  1. Explication / dérivation du modèle mathématique

    1. Simulation probabiliste avec Python
  2. Bricoler mathématiquement des modèles mathématiques

(Si vous ne voulez savoir que par la conclusion, vous pouvez lire "1". Cela peut être pour un petit analyste après 2.)

** ■ 3. Quel genre de décision dois-je prendre? ** **

Comment prendre une décision

J'écrirai à partir de la conclusion,

"Sur le nombre de propriétés à confirmer, 36,8% des propriétés seront oubliées sans condition, et si vous tombez sur une propriété qui est" c'est la chose la plus idéale que vous ayez jamais faite! "

C'est la méthode de prise de décision qui maximise la probabilité.

Quel genre de chose est-ce? Je pense que c'est comme ça, alors regardons un exemple concret.

Exemple concret

Par exemple, vous êtes sur le point de voir 50 propriétés.

Dans ce cas, veuillez cocher les 18 premiers cas (≈36,8%) et les ignorer sans condition.

Ensuite, si la propriété qui semble être "la meilleure!" Apparaît parmi les propriétés 19e et suivantes (y compris les 18 propriétés que nous avons vues pour la première fois), nous l'adopterons.

La probabilité que la propriété soit classée en premier parmi les 50 propriétés sera maximisée, plutôt que de la choisir de manière directe. あつこ画像.jpg

** ■ 4. Explication / Dérivation du modèle mathématique **

Pourquoi est-il possible de maximiser les chances de choisir la maison idéale de cette manière?

Bien sûr, si vous pouvez vérifier toutes les propriétés du monde avec un temps illimité, vous n'avez pas besoin d'une telle méthode.

Cependant, en réalité, une telle sélection de maisons est impossible, et nous sommes tenus de faire la sélection la plus idéale parmi un certain nombre de propriétés dans un temps fini.

Non seulement cela, mais il y a aussi des moments où vous obtenez un contrat avec quelqu'un qui pense simplement, "Oh mon Dieu!"

Considérons différentes conditions de choix d'une maison comme des «conditions de contrainte» et considérons-la comme un problème de maximisation de la probabilité de rencontrer une «maison idéale».

Clarification du problème

Satisfaire les contraintes suivantes et maximiser la probabilité de sélectionner la «maison idéale» la plus en vérifiant jusqu'à n propriétés.

Contraintes

  1. Assurez-vous de sélectionner une propriété.
  2. Le nombre de propriétés candidates n est prédéterminé.
  3. Le nombre de propriétés candidates est classée et plusieurs propriétés candidates n'auront pas le même classement.
  4. Vérifiez un par un dans un ordre aléatoire. La propriété à vérifier ensuite est toujours la même probabilité.
  5. Immédiatement après la confirmation, décidez si vous souhaitez signer le contrat (si ce n'est pas décidé avant la fin, sélectionnez sans condition la dernière propriété candidate).
  6. Vous ne pouvez pas sélectionner une propriété qui a été rejetée rétroactivement.
  7. Ne refusez pas de sélectionner la propriété candidate elle-même.

Quel est l '«idéal»?

À partir des conditions de définition de problème / contraintes ci-dessus, nous déciderons nous-mêmes du classement de la «maison idéale» et la définirons comme la propriété avec le plus haut classement.

Approche de résolution de problèmes

Nous le traiterons comme le problème de meilleur choix qui maximise la probabilité d'obtenir la première place (pas de type d'information), et non comme le problème de minimisation du classement qui fait venir les meilleurs candidats autant que possible (pas de type d'information).

De plus, à partir de la condition de contrainte 6 "Impossible de sélectionner les propriétés qui ont été rejetées rétroactivement.", La politique générale est "Vérifier jusqu'à r propriétés et décider de la première place provisoire parmi elles (r +). 1) Nous souhaitons poursuivre la politique de "trouver r qui maximise la probabilité qu'une propriété dépassant la première place provisoire apparaisse parmi les cas suivants" (1 <r≤n).

Vérifiez d'abord un exemple concret, puis dérivez un modèle probabiliste généralisé.

Le modèle de probabilité est différencié pour trouver la valeur maximale, et le paramètre r à ce moment est trouvé.

Confirmation de l'exemple spécifique: Quand n = 10 et r = 5

Premièrement, sur un maximum de 10 propriétés, jusqu'à 5 propriétés sont rejetées sans condition, la sixième propriété est sélectionnée et la probabilité est qu'elle soit la «meilleure» sur 10 propriétés. Demandons.

\underbrace{{9\over 10}\times{8\over 9}\times{7\over 8}\times{6\over 7}\times{5\over 6}}_{reject}\times{1 \over 5}

La formule est comme ci-dessus et le résultat est

{1 \over 10}

Ce sera.

Ce n'est pas différent de la probabilité de choisir Transcendental Texto, et cela ne fonctionne pas.

Pensons donc à ** "Comment utiliser les 5 premières informations observées" **.

En d'autres termes, ** "Il y a des propriétés (= 1ère place dans l'ensemble) qui incluent la 1ère place provisoire dans les 5 cas observés en premier et dépassent la 1ère place provisoire dans le 6ème cas et les suivants (jème). Calculons la probabilité P "** de faire.

C'est,

P= \sum_{j=6}^{10} {5 \over j-1}\cdot{1 \over 10}

Si vous calculez ce qui précède, c'est OK.

Si vous le calculez réellement, vous pouvez voir qu'il est d'environ 37%.

P= \sum_{j=6}^{10} {5 \over j-1}\cdot{1 \over 10}={5 \over 10}\sum_{j=6}^{10} {1 \over j-1}
={1 \over 2}({1 \over 5}+{1 \over 6}+{1 \over 7}+{1 \over 8}+{1 \over 9})\approx0.3728174603

Les chances de choisir la 1ère place sont bien plus élevées que lorsque je l'ai choisie comme manuel.

Comment la probabilité change-t-elle en fonction du nombre d'envois r?

D'ailleurs, dans ce qui précède, nous avons considéré le cas où la moitié du total (5 cas sur 10) a été oublié inconditionnellement, la 1ère place provisoire a été décidée et la 1ère place sur 10 est apparue après le 6ème cas.

Quant à mon prochain intérêt, est-il plus probable que je voie inconditionnellement jusqu'au 6ème cas, ou la probabilité augmentera-t-elle si je vois jusqu'au 7ème cas, et combien de cas est la bonne réponse?

Il y a la contrainte 6 "Vous ne pouvez pas sélectionner une propriété qui a été rejetée rétroactivement." Il n'est donc pas bon de la voir trop.

Pour le confirmer concrètement, j'ai essayé une simulation simple.

image.png

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    
    %matplotlib inline
    
    def choose_candidate(n, reject=np.e):
        candidates = np.arange(1, n+1)
        np.random.shuffle(candidates)
        
        if reject == np.e:
            stop = int(round(n/reject))
        else:
            stop = int(round(reject*n/100))
    
        best_from_rejected = np.min(candidates[:stop])
        rest = candidates[stop:]
        
        try:
            return rest[rest < best_from_rejected][0] 
        except IndexError:
            return candidates[-1] 
        
    best_candidate = []
    for r in range(5, 101, 5):
        sim = np.array([choose_candidate(n=100, reject=r) for i in range(100000)])
        best_candidate.append(np.histogram(sim, bins=100)[0][0]/100000)
    
    plt.figure(figsize=(10, 6))
    plt.scatter(range(5, 101, 5), best_candidate)
    plt.xlim(0, 100)
    plt.xticks(np.arange(0, 101, 10))
    plt.ylim(0, 0.4)
    plt.xlabel('% of candidates rejected')
    plt.ylabel('Probability')
    plt.grid(False)
    plt.axvline(100/np.e, ls='--', c='orange')
    plt.show()

En regardant cela, vous pouvez voir que la probabilité est maximisée en supprimant environ 37% du nombre total de propriétés.

Pourquoi la probabilité est-elle maximisée à environ 37%?

À propos, d'après cette simulation, environ 37% du nombre total de propriétés sont oubliés, et s'il y a une propriété qui dépasse la première place provisoire parmi les propriétés après cela, si vous concluez un contrat avec elle, la propriété sélectionnée est toutes les propriétés Il semble que la probabilité de devenir la première place dans ce qui précède est maximisée.

Pourquoi cela arrive-t-il?

Clarifions-le mathématiquement.

Tout d'abord, comme pour la confirmation, la probabilité de "quand le nombre total de propriétés est de 10 et jusqu'à 5 sont oubliés" est exprimée par la formule suivante.

\sum_{j=6}^{10} {5 \over j-1}\cdot{1 \over 10}

La probabilité de généraliser ceci à "le nombre total de propriétés est n et r est oublié" est

\sum_{j=r+1}^{n} {r \over j-1}\cdot{1 \over n}

Peut être représenté par.

Pour cela, nous trouverons la valeur maximale et les paramètres à ce moment.

\sum_{j=r+1}^{n} {r \over j-1}\cdot{1 \over n}={r \over n}\sum_{j=r+1}^{n} {1 \over j-1}
={r \over n}\sum_{j=r+1}^{n} {n \over j-1}\cdot{1 \over n}={r \over n}\sum_{j=r+1}^{n} ({j-1 \over n})^{-1}\cdot{1 \over n}

Ici, définissez t = j / n. Autrement dit, puisque tn = j

j = r+1 \Leftrightarrow tn = r+1
t = {r+1 \over n}

Est. Aussi,

j = n\Leftrightarrow tn = n
t=1

Par conséquent, la formule originale est

{r \over n}\sum_{j=r+1}^{n} ({j-1 \over n})^{-1}\cdot{1 \over n}={r \over n}\sum_{t={r+1 \over n}}^{1} ({tn-1 \over n})^{-1}\cdot{1 \over n}={r \over n}\sum_{t={r+1 \over n}}^{1} (t-{1 \over n})^{-1}\cdot{1 \over n}

Cela peut être exprimé ainsi.

Ici, lorsque n → ∞, la valeur limite de (r / n) est définie.

\lim_{n→∞}{r \over n}=x

Si vous mettez

\lim_{n→∞}{r \over n}\sum_{t={r+1 \over n}}^{1} (t-{1 \over n})^{-1}\cdot{1 \over n}=\lim_{n→∞}({r \over n})\lim_{n→∞}(\sum_{t={r+1 \over n}}^{1} (t-{1 \over n})^{-1}\cdot{1 \over n})
=x\lim_{n→∞}(\sum_{t={r+1 \over n}}^{1} (t-{1 \over n})^{-1}\cdot{1 \over n})

Aussi, du théorème de Lopital (* 2)

\lim_{n→∞}{r+1 \over n}=x+0=x, \lim_{n→∞}(t-{1 \over n})^{-1}=t^{-1}

n'est-ce pas.

Aussi, en considérant n → ∞ et Δx → 0,

x\lim_{n→∞}(\sum_{t={r+1 \over n}}^{1} (t-{1 \over n})^{-1}\cdot{1 \over n})=x\int_{x}^{1}{t^{-1}} \, dt=x\int_{x}^{1}{1 \over t} \, dt

Peut être approximé à.

Je suis enfin là.

Tout ce que vous avez à faire est de résoudre ce problème.

x\int_{x}^{1}{1 \over t} \, dt=x[\log{t}]_{x}^{1}=x(\log{1}-\log{x})=-x\log{x}

La formule de la probabilité de succès que vous recherchez

-x\log{x}

Et ** pourrait être placé sous une forme très simple **.

Maintenant, trouvons x en maximisant cela.

Différencier la formule de probabilité de succès,

{df(x) \over dx}=-1logx-1

Quand cela devient 0,

-1logx-1=0
-logx=1
x={1 \over e}

Puisque le logarithme népérien e ≈ 2,718281828459

x={1 \over e}\approx0.3678794412

De ce qui précède, il a été montré que négliger environ 37% maximise la probabilité de trouver la première place dans l'ensemble.

** ■ 5. à la fin**

Actuellement, je suis analyste chez LIFULL Co., Ltd., alors j'ai essayé de faire du premier article de Qiita un matériel (analyse) de mathématiques.

Il est intéressant de modéliser et d'analyser les phénomènes dans le monde à l'aide des mathématiques, et des faits différents de l'intuition émergent.

Comme présenté ci-dessous, le professeur Hamada de l'Université de Tohoku ["Le problème, le modèle mathématique résoudra"](https://www.amazon.co.jp/dp/B07RGWJQFQ/ref=dp-kindle -redirect? _encoding = UTF8 & btkr = 1) J'ai référencé / référencé / cité le contenu.

Personnellement, je pense que le nombre de livres dans le domaine des modèles mathématiques a augmenté récemment, mais parmi eux, il est écrit dans un format interactif que tout le monde peut facilement comprendre, et c'est un très bon livre pour ceux qui veulent en savoir plus sur les modèles mathématiques. pensée.

Si vous voulez en savoir plus sur le contenu ci-dessus ou si vous voulez en savoir plus sur le matériel de modèle mathématique, veuillez l'acheter (le lien est également inclus dans la section de référence).

■ Problèmes restants

・ L'approche du problème de prise de décision véritablement rationnelle sera revue non seulement du point de vue mathématique probabiliste comme décrit ci-dessus, mais aussi du point de vue de la science du comportement et de la psychologie. Vous en aurez besoin. Cet article ne le mentionne pas, donc si j'ai le temps, j'aimerais lire les journaux et les livres qui l'entourent.

・ Je voudrais essayer ce qui se passe si je le traite comme un problème de minimisation de classement avec le plus haut classement possible. Je l'écrirai à nouveau quand j'en aurai envie.

・ Afin de faciliter la manipulation mathématique, nous avons adopté la restriction selon laquelle "vous ne pouvez pas sélectionner une propriété qui a été rejetée rétroactivement." Cependant, la réalité n'est pas complètement la même, il y a donc place à amélioration dans ce domaine.

・ Dans le premier Qiita, j'étais malade parce que je ne pouvais pas ajuster ma force. Allégeons la prochaine fois.

** ■ Référence / Référence **

Ce problème, le modèle mathématique résout

https://www.amazon.co.jp/dp/B07RGWJQFQ/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1

Autres articles référencés / cités

http://www.kurims.kyoto-u.ac.jp/~kyodo/kokyuroku/contents/pdf/1263-11.pdf

https://brave-answer.jp/15547/

https://asset.crasco.jp/shuekibukken/2138

https://imrankhan17.github.io/pages/Solving the secretary problem with Python.html

http://www.iba.t.u-tokyo.ac.jp/iba/SE/Secretary.pdf

https://mathtrain.jp/lhopital

Nous fournissons également des explications mathématiques aux analystes, mais nous vous serions reconnaissants de bien vouloir nous dire s'il y a des divergences dans le contenu.

Recommended Posts

Qu'est-ce qu'une décision rationnelle qui maximise les chances de rencontrer une «maison idéale»?
Qu'est-ce qu'un moteur de recommandation? Résumé des types
Qu'est-ce qu'un arbre de décision?
Quel est le fichier XX à la racine d'un projet Python populaire?
Qu'est-ce qu'une bibliothèque en langage C? Quelles informations sont ouvertes au public?
Quelle est la cause de l'erreur suivante?
[python] [meta] Le type de python est-il un type?
Affichons un template simple idéal pour le premier Django
C'est un Mac. Qu'est-ce que la commande Linux Linux?
Article qui vous aidera à comprendre un peu l'algorithme de collision de sphères rigides
Une histoire qui réduit l'effort de fonctionnement / maintenance
[Python] Un programme qui compte le nombre de vallées
Créez un BOT qui raccourcit l'URL Discord
#Une fonction qui renvoie le code de caractère d'une chaîne de caractères
Générer cette forme du fond d'une bouteille pour animaux de compagnie
Le problème Zip 4 Gbyte est une histoire du passé
Une histoire qui a analysé la livraison de Nico Nama.
[Python] Un programme qui compare les positions des kangourous.
Quels sont les facteurs à l'origine de la mauvaise prédiction du ML? ~ La recherche factorielle est décidée par arbre ~
Un exemple de mécanisme qui renvoie une prédiction par HTTP à partir du résultat de l'apprentissage automatique
Que faites-vous avec la gestion de la configuration d'un serveur qui a été implémenté Ansible mais qui est déjà en cours d'exécution? Je rencontre le problème