All posts by Arthur Charpentier

Arthur Charpentier, professor in Montréal, in Actuarial Science. Former professor-assistant at ENSAE Paristech, associate professor at Ecole Polytechnique and assistant professor in Economics at Université de Rennes 1.  Graduated from ENSAE, Master in Mathematical Economics (Paris Dauphine), PhD in Mathematics (KU Leuven), and Fellow of the French Institute of Actuaries.

Combining automatically factor levels with trees

Last year, in a post, I discussed how to merge levels of factor variables, using combinatorial techniques (it was for my STT5100 cours, and trees are not in the syllabus), with an extension on trees at the end of the post.

consider the following (simulated dataset)

'data.frame':	200 obs. of  3 variables:
 $ y : num  1.345 1.863 1.946 2.481 0.765 ...
 $ x1: num  0.266 0.372 0.573 0.908 0.202 ...
 $ x2: Factor w/ 10 levels "I","A","H","F",..: 4 4 6 4 3 6 7 3 4 8 ...
 A  B  C  D  E  F  G  H  I  J 
11 12 23 34 23 36 12 32  3 14

Just by looking at the data (see the previous post), we could easily get the feeling that 10 levels was too much.

Following my post, Przemyslaw sent a comment suggesting to use


It is indeed a nice package (unless you have really really big datasets with a lot of categories in your factor variables – as I experienced recently), and you can get great graphs

MF = mergeFactors(response = b$y, 
             factor = b$x2, 
             family = "gaussian")

Here is suggests to create three categories. Recall that with student t-tests (changing the reference), we got

Another interesting package, by Piro Polo, is


To use it, we simply call the following function, and we transform automatically our dataset : the continuous variables remain unchanged, and (possibly) categories of categorical variables are merged

b.bins = tree.bins(data=b, y=y)
Classes ‘data.table’ and 'data.frame':	200 obs. of  3 variables:
 $ y : num  1.345 1.863 1.946 2.481 0.765 ...
 $ x1: num  0.266 0.372 0.573 0.908 0.202 ...
 $ x2: chr  "Group.4" "Group.4" "Group.4" "Group.4" ...
 - attr(*, ".internal.selfref")= 

Group.1 Group.2 Group.3 Group.4 
     23      35      26     116

here in four groups. To get the correspondance, use

tree.bins(data=b, y=y, return = "lkup.list")
   x2 Categories
1   E    Group.1
2   G    Group.2
3   C    Group.2
4   B    Group.3
5   J    Group.3
6   I    Group.4
7   A    Group.4
8   H    Group.4
9   F    Group.4
10  D    Group.4

(we have a list with one element, one dataframe, since there is only one factor variable). Cool, isn’t it ? I miss Przemyslaw’s plot, but this is rather quick, and efficient..


On leverage

Last week, in our STT5100 (applied linear models) class, I’ve introduce the hat matrix, and the notion of leverage. In a classical regression model, \boldsymbol{y}=\boldsymbol{X}\boldsymbol{\beta} (in a matrix form), the ordinary least square estimator of parameter \boldsymbol{\beta} is \widehat{\boldsymbol{\beta}}=(\boldsymbol{X}^\top\boldsymbol{X})^{-1}\boldsymbol{X}^\top\boldsymbol{y}The prediction can then be written\widehat{\boldsymbol{y}}=\boldsymbol{X}\widehat{\boldsymbol{\beta}}=\underbrace{\color{blue}{\boldsymbol{X}(\boldsymbol{X}^\top\boldsymbol{X})^{-1}\boldsymbol{X}^\top}}_{\color{blue}{\boldsymbol{H}}}\boldsymbol{y}where \color{blue}{\boldsymbol{H}} is called the hat matrix.

The matrix is idempotent, i.e. \boldsymbol{H}^2={\boldsymbol{X}(\boldsymbol{X}^\top\boldsymbol{X})^{-1}\textcolor{grey}{\boldsymbol{X}^\top{\boldsymbol{X}}(\boldsymbol{X}^\top\boldsymbol{X})^{-1}}\boldsymbol{X}^\top}={\boldsymbol{X}(\boldsymbol{X}^\top\boldsymbol{X})^{-1}\boldsymbol{X}^\top}=\boldsymbol{H}so it can be interpreted as a projection matrix. Furthermore, since\boldsymbol{H}\boldsymbol{X}=\boldsymbol{X} (just do the maths), the projection is on a subspace that contains all the linear combinations of columns of \boldsymbol{X}. One can also observe that \mathbb{I}-\boldsymbol{H} is also a projection matrix. And we can write\boldsymbol{y}=\underbrace{\boldsymbol{H}\boldsymbol{y}}_{\widehat{\boldsymbol{y}}}+\underbrace{(\mathbb{I}-\boldsymbol{H})\boldsymbol{y}}_{\widehat{\boldsymbol{\varepsilon}}}where \widehat{\boldsymbol{y}} is the orthogonal projection of \boldsymbol{y} on the (linear) space of linear combinations of columns of \boldsymbol{X}, and \widehat{\boldsymbol{y}}\perp\widehat{\boldsymbol{\varepsilon}}, which gives the classical interpretation of residuals, being unpredictible (at least with a linear model using variables \boldsymbol{X}).

Let’s move a bit faster now (we’ve seen many other properties last week), and consider elements on the diagonal of matrix \boldsymbol{H}. Recall that we have

so entry \boldsymbol{H}_{i,i} is a measure of the influence of entry \boldsymbol{y}_i on its prediction latex]\widehat{\boldsymbol{y}}_i[/latex].

We have seen that\sum_{i=1}^n\boldsymbol{H}_{i,i}=\text{trace}(\boldsymbol{H})=\text{trace}(\boldsymbol{X}(\boldsymbol{X}^\top\boldsymbol{X})^{-1}\boldsymbol{X}^\top)which can be written\sum_{i=1}^n\boldsymbol{H}_{i,i}=\text{trace}\boldsymbol{X}^\top(\boldsymbol{X}(\boldsymbol{X}^\top\boldsymbol{X})^{-1})=\text{trace}(\mathbb{I})=pwhere classically p=k+1, where k is the number of explanatory variables. Further, since \boldsymbol{H} is idempotent, we can write (from \boldsymbol{H}=\boldsymbol{H}^2) that\boldsymbol{H}_{i,i}=\boldsymbol{H}_{i,i}^2 + \sum_{j\neq i}\boldsymbol{H}_{i,j}\boldsymbol{H}_{j,i}=\boldsymbol{H}_{i,i}^2 + \sum_{j\neq i}\boldsymbol{H}_{i,j}^2One the one hand, since the second term is positive \boldsymbol{H}_{i,i}\geq\boldsymbol{H}_{i,i}^2, i.e. 1\geq\boldsymbol{H}_{i,i}. And since both terms are positive, then \boldsymbol{H}_{i,i}\in[0,1]. And there was a question in the course on the sharpeness of the bounds.

Using Anscombe’s dataset, we’ve seen that it was possible to get a leverage of 1. Using something rather similar

df = data.frame(x = c(rep(1,10),6), y = c(1:10,8))

we obtain

model = lm(y~x,data=df)
H = lm.influence(model)$hat

The very last observation, the one one the right, is here extremely influencial : if we remove it, the model is completely different ! And here, we reach the upper bound, \boldsymbol{H}_{11,11}=1. Observe that all other points are equally influencial, and because on the constraint on the trace of the matrix, \boldsymbol{H}_{i,i}=1/10 when i\in\{1,2,\cdots,10\}.

Now, what about the lower bound ? In order to have some sort of “non-influencial” observations, consider the two following case.

  • the case where one observation (below the first one) is such that \widehat{\boldsymbol{y}}_{i}=\boldsymbol{y}_{i} (perfect prediction)
  • the case where one observation (below the tenth one) is such that \boldsymbol{x}_{i}=\overline{\boldsymbol{x}} and \boldsymbol{y}_{i}=\overline{\boldsymbol{y}} (from the first order condition – or normal equation), the fitted regression line always go through point (\overline{\boldsymbol{x}},\overline{\boldsymbol{y}})

Let us move two observations from our dataset,

[1] 1.8
df = data.frame(x = c(4,rep(1,8),6,1.8),
y = c(predict(model,newdata=data.frame(x=4)),

We now have

If we compute the leverages, we obtain

model = lm(y~x,data=df)
H = lm.influence(model)$hat

so, for the first observation, its leverage actually increased (the blue part), and for the tenth one, we have the lowest influence, but it is not zero. Is it possible to reach zero ?

Here, observe that for the tenth observation, \boldsymbol{H}_{i,i}=1/n. And actually, that’s the best we can do… We can prove that, in the case of a simple regression (as above)\boldsymbol{H}_{i,i}=\frac{1}{n}+\frac{(x_i-\overline{x})^2}{n\text{Var}(x)}which is minimum when x_i=\overline{x}, and then \boldsymbol{H}_{i,i}=1/n, otherwise \boldsymbol{H}_{i,i}>1/n. And this property is also valid in a multiple regression (as soon as an intercept is included in the regression – which should always be the case). To prove that result, let \tilde{\boldsymbol{X}} denote the matrix of centered variables \boldsymbol{X}, then we can prove that \boldsymbol{H}_{i,i}=\frac{1}{n}+\big[\tilde{\boldsymbol{X}}(\tilde{\boldsymbol{X}}^\top\tilde{\boldsymbol{X}})^{-1}\tilde{\boldsymbol{X}}^\top\big]_{i,i}(which is basically a matrix version of the previous equation).

I can maybe add another comment on Anscombe’s data. We’ve seen that on the right that we did reach 1. But I did not prove it. One way to prove it is actually to focus on the remaining n-1 points, on the left. Those have all the same x values. We can prove that if \boldsymbol{X}_{i_1}=\boldsymbol{X}_{i_2}, then \boldsymbol{H}_{i_1,i_2}=\boldsymbol{X}_{i_1}^\top(\boldsymbol{X}^\top\boldsymbol{X})^{-1}\boldsymbol{X}_{i_2}=\boldsymbol{H}_{i_1,i_1}hence, using the relationship obtained since the hat matrix is idempotent\boldsymbol{H}_{i_1,i_1}=2\boldsymbol{H}_{i_1,i_1}^2+\sum_{j\notin\{i_1,i_2\}}\boldsymbol{H}_{i_1,j}^2thus, we now have\boldsymbol{H}_{i_1,i_1}\big(1-2\boldsymbol{H}_{i_1,i_1}\big)>0i.e. \boldsymbol{H}_{i_1,i_1}\in[0,1/2], where the upper bound becomes 1/(n-1) “duplicates”. So for n-1 \boldsymbol{H}_{i,i}‘s, we have values below 1/(n-1), the last one should be below 1 and the sum has to be k=2 . So we have the value of the n \boldsymbol{H}_{i,i}‘s.


“Tout est poison, rien n’est poison : c’est la dose qui fait le poison”

disait Philippus Aureolus Theophrastus Bombastus von Hohenheim – ou Paracelse pour faire plus simple – ce fameux médecin et alchimiste suisse, mort en 1541. Cette citation pose la question du choix du seuil qui fait qu’un élément est dangereux dès qu’un seuil est franchi. Un peu comme en statistique, quand on dit (dans une régression) que si la p-value (associée à un test de Student) est inférieure à 5%, une variable est effectivement “explicative”, mais pas au delà de 5%. Le message est, bien entendu beaucoup plus subtil, en général. Mais le besoin d’avoir des seuils semble inscrit dans la nature humaine…

Cet été, je publiais mon billet Les autorités publiques face aux risques, de la confiance au doute écrit pour être publié dans la revue Risques, avec les contraintes usuelles de taille. Mais comme bien souvent, le brouillon initial faisait plusieurs pages, et j’ai mis de côté quelques éléments de réflexion, en particulier un long paragraphe sur la difficulté pour les scientifiques de diffuser un message (forcément) trop complexe pour être diffusé en une phrase choc.

Un soucis est qu’une vision utopique laissait penser qu’internet permettrait un accès à tous l’information. Malheureusement, la pluralité des sources permet surtout à tout un chacun de composer son propre menu, de se faire sa propre opinion, sur-mesure, parmi l’offre quasi-infinie qui lui est alors accessible. Mais comme le notait le précédant billet, le biais de confirmation va entrer en jeu. Pour reprendre l’exemple de Simon (1959), lorsque que l’on cherche à comprendre la prise de décision d’un agent (le fameux agent rationnel en théorie économique), si le problème est complexe, il ne va pas chercher la solution optimale, mais il se contentera d’une version qui le satisfait, tenant compte seulement de quelques informations jugées pertinente. On retrouve cette idée dans l’opposition entre le système 1 et le système 2, de Kahneman (2011), ou la notion d’avarice cognitive de Fiske & Taylor (1984). Ce dernier concept explique que nous sommes souvent enclin à adhérer à des énoncés convaincants, même douteux, faute de temps ou de motivations. Comme le dit la formule, on se contente de croire, faut de temps pour savoir.

Car le savoir est rarement vendeur ! La recherche scientifique est rarement spectaculaire. Testart (2000) disait ainsi que « l’acte d’expertise n’est plus seulement fondé sur la validité de la connaissance, la caution scientifique qu’il confère à la décision, mais sur sa capacité à intégrer les incertitudes et à scénariser un avenir incertain ». On retrouve cette importance de la narration, que j’évoquais dans un précédant article (sur les “fake news” et la recherche de la vérité, justement). Si j’osais faire une parenthèse, c’est la grande difficulté de l’apprentissage de la recherche : on apprend à raisonner, à avoir une démarche scientifique, mais on apprend rarement à raconter une histoire, à écrire un papier qui sera lu.

De manière étonnante, le consensus scientifique crée souvent du doute, de la suspicion, comme je le notais dans mon précédant billet, dans le contexte du changement climatique. Dans une conférence au début du mois, une des chercheuses qui présentait des travaux sur l’analyse textuelle des “fake news” expliquait (je me permets de traduire en français ce que j’en ai retenu, la chercheuse parlant de la presse américaine) que les journalistes sont dans un moule “science-po” : tout sujet présenté doit avoir une thèse, suivi d’une anti-thèse, si possible présentées de manière égale, pour respecter une forme de neutralité. Si on parle d’un sujet qui fait consensus dans la communauté scientifique (on pourra parler de vérité “officielle”), on ira chercher une parole alternative, parfois présenté comme “indépendante”. Cette “indépendance” est alors présenté comme un gage de valeur, une garantie de vérité, les organismes devant prendre des décisions publiques (dont je parlais dans mon précédant billet) étant souvent présentés comme les garants de cette “vérité officielle” (alors que c’est souvent simplement que ces instances se sont tournés vers la littérature scientifique). Cette création artificielle de controverses a malheureusement des effets dramatiques, car on a finit par s’y habituer, le consensus devenant alors constamment suspect.

Fisker, S.T. & Taylor, S.E. (1984). Social cognition. Addison-Wesley.

Kahneman, D. (2011). Système 1 et système 2: Les deux vitesses de la pensée.

Simon, H.A. (1959) Theories of Decision-Making in Economics and Behavioral Science. American Economic Review, 49:3, 253-283.

Testart, J. (2000). Les experts, la science et la loi. Le Monde Diplomatique.

Intelligence artificielle et assurance IARD

L’intelligence artificielle pose de nombreux défis, tant technologiques qu’éthiques, voire philosophiques. Les problèmes les plus souvent évoqués étant le biais des données et la transparence des algorithmes (ou des modèles). Ce problème est bien connu en justice prédictive (les juristes parleraient de justice actuarielle) : les modèles doivent être interprétables, compréhensibles, et tenir compte du biais connu des données. Car à part les expériences randomisées, les données « neutres » ou « brutes » n’existent pas. Si je veux construire un score de fraude, j’utilise ainsi des données construites suite à des enquêtes pour fraudes, la majorité des observations découlant d’une suspicion préalable de fraude. Il est ainsi nécessaire de comprendre comment les données ont été collectées, ce que tout statisticien apprenait historiquement à faire. L’interprétabilité des modèles pose des questions complexes car elle est associée à un processus narratif, ce dernier proposant souvent une explication causale à un mécanisme (qui est souvent implicite dans l’idée du processus prédictif). Mais la grande majorité des modèles actuariels et d’apprentissage machine se contentent d’étudier des corrélations. Le genre est ainsi corrélé avec la sinistralité en assurance automobile, et les actuaires avaient pris l’habitude de justifier cette relation en recourant à des stéréotypes, de la même manière que la conduite d’une voiture de sport prêtait à un conducteur les pratiques de tous les conducteurs de voitures de sport. Cette généralisation par stéréotypes, au cœur du travail de l’actuaire, est aujourd’hui remise en cause par l’idée de personnalisation de l’assurance, comme cela s’observe également dans le domaine de la santé. Cette personnalisation est devenue indispensable en grande dimension : les classes de risques n’ont pas de sens. Avec plusieurs centaines de variables explicatives, plus aucun individu ne se ressemble, et il devient impossible de raconter une histoire autour d’un assuré « moyen ».

Cette personnalisation, qui flatte probablement l’ego de l’assuré, en le rendant unique casse l’idée de mutualisation et de segmentation de l’assurance. Historiquement, une forme de solidarité existait entre individus qui se ressemblaient, mais elle disparait dès lors que chaque assuré doit être vu comme un être unique. Si la théorie économique justifiait cette « spirale de la segmentation », la pratique et la théorie mathématique commence à cerner les limites. Segmenter trop signifie bien souvent que le modèle ne capture plus un signal de fond, et commence à modéliser du bruit, il overfit, et perd en généralisation : un modèle de tarification bon une année ne le sera peut-être plus l’année suivante. Les assureurs rêvent aujourd’hui en voyant les performances des modèles des GAFA qui arrivent à prédirent les prochains achats sur un site (probablement d’ailleurs en créant l’envie). Si des dialogues sont nécessaires entre ces deux mondes que tout oppose, la tortue conservatrice fascinée par son historique de données et le lièvre agile obsédé par l’avenir de l’autre, les modèles avancés d’apprentissage marchent souvent mal dans certains aspects de l’assurance IARD.

 Les algorithmes d’apprentissage profonds (des réseaux de neurones avec de très nombreuses couches, constituant des boîtes noires avec des milliers de paramètres) sont devenus incontournables pour analyser des images (prédire rapidement le coût d’un sinistre matériel automobile à partir d’une dizaine de photos du véhicule endommagé) ou pour analyser ou générer du texte (en offrant une assistance rapide et fiable à un assuré). Mais ils sont difficilement utilisables pour provisionner de manière robuste le coût d’un accident corporel et ils posent des questions intéressantes sur la tarification de l’assurance. Ces algorithmes ont été développés dans un contexte de classification, pour reconnaître des caractères manuscrits ou des objets sur une image et il y a des raisons simples pour comprendre qu’un chien est différent d’un chat sur une photo. Mais expliquer pourquoi Mr Dupont et pas Mme Dupond a eu un accident d’automobile l’an passé est plus complexe. Et ce n’est pas leur but : ces modèles visent à estimer la probabilité que Mr Dupont ait un accident dans l’année. Un modèle très poussé pourra prédire que la probabilité est de 17.23% (au lieu des 15.62% obtenue par un modèle jugé aujourd’hui trop simple), et la prime demandée doit alors augmenter de 10%. Mais est-ce si important si au final pendant les 8 années que Mr Dupont passera dans la compagnie, il n’aura aucun sinistre ? ou en aura un très grave ? L’assurance IARD relève bien souvent d’un aléa très important, la sinistralité étant en très grande partie imprévisible. Un danger est que ces algorithmes proposent des intervalles de prix beaucoup plus grands, et que la mise en compétition de ces modèles fera baisser les primes du marché. Si la sinistralité ne baisse pas en parallèle le marché perdra de l’argent, certains assureurs risquant alors de disparaître. En revanche, si ces nouvelles techniques permettent de réduire la sinistralité, tout le monde sera gagnant, mais cela suppose de faire davantage de prévention, cette dernière reposant sur l’identification de mécanismes causaux clairs, en identifiant quels leviers pourraient réduire la probabilité d’avoir un accident, et sa gravité.

Big Data, GAFA et Assurance

Les sociétés technologiques et le monde de l’assurance auraient tout pour être opposé. Agilité, rapidité, obsession du futur chez les uns, conservatisme, réflexivité, fascination pour les données passées chez les autres. Et pourtant les deux s’observent, et commencent à nouer des partenariats, comprenant que la donnée est leur cœur de métier.

Continue reading Big Data, GAFA et Assurance

Insurance data science : Pictures

At the Summer School of the Swiss Association of Actuaries, in Lausanne, following the part of Jean-Philippe Boucher (UQAM) on telematic data, I will start talking about pictures this Wednesday. Slides are available online

Ewen Gallic (AMSE) will present a tutorial on satellite pictures, and a simple classification problem, related to Alzeimher detection.

We will try to identify what is on the following pictures, starting with the car

(we will see that the car is indeed identified)

a skier,

and a fire,

We will also discuss previous pictures from the summer school

Les autorités publiques face aux risques, de la confiance au doute

Il y a deux ans, au travers une superbe exposition, la France célébrait Louis Pasteur, un des grands précurseurs de la vaccination, dont on fêtera le 200ème anniversaire dans quelques mois.

En même temps, la France est devenue le pays ou le scepticisme face à l’efficacité de la vaccination est la plus grande. Et ce manque de confiance à l’égard des vaccins semble être beaucoup plus profond, correspondant à un doute face à la science, et aux autorités publiques.

Continue reading Les autorités publiques face aux risques, de la confiance au doute

La valeur de la vie humaine

L’article La Valeur de la Vie Humaine, co-écrit avec Béatrice Cherrier est paru dans le dernier numéro de la revue Risque.

En 1928, revenant sur la révolution chinoise de 1925, André Malraux publie son roman Les conquérants, et glisse « j’ai appris qu’une vie ne vaut rien, mais que rien ne vaut une vie ». Si la formule peut plaire, on imagine qu’elle n’aidera pas trop un décideur public. En 2013, le Commissariat général à la stratégie et à la prospective, en France, évaluait la valeur d’une vie à trois millions d’euros. Mais d’où sort ce chiffre ? Et que signifie-t-il vraiment ?

Insurance data science : use and value of unusual data #1

Next week, with , I will be at the Summer School of the Swiss Association of Actuaries, in Lausanne, with Jean-Philippe Boucher (UQAM) and Ewen Gallic (AMSE).

I will give an introductionary talk on Monday morning, and the slides are now available

There will be some hands-on applications, on R. I will share some codes in the slides.