a complete idiot's i oduction mal concept analysis for each themselves thomas...
TRANSCRIPT
![Page 1: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/1.jpg)
A Complete Idiot's Introduction
to Formal Concept Analysis for
Dummies to Teach Themselves
Thomas Sutton
27 November 2013
Is this infringing trade dress infringements. This is satire right?
![Page 2: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/2.jpg)
• The code this talk is about can be found at <https://github.com/thsutton/fca/>.
• It’s pretty horrible as of 1/12/2013, but I’ll be improving it over the coming weeks.
![Page 3: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/3.jpg)
Caveats
• I’m a pretty bad programmer and this is a talk about some code I wrote.
• I’m pretty bad at mathematics and this talk is me explaining some mathematics.
![Page 4: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/4.jpg)
A long time ago…• About 10 years ago I visited a branch of the Co-op
Bookshop quite regularly and often purchased a book.
• One of them was this:
![Page 5: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/5.jpg)
Alas— Me
“Maths is hard!”
![Page 6: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/6.jpg)
But!
![Page 7: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/7.jpg)
Chapter 3 is applied.
‡ Sort of.
![Page 8: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/8.jpg)
![Page 9: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/9.jpg)
Formal Concept Analysis
• Formal concept analysis is a mathematical formalism which analyses the data in a context and attempts to extract the concepts embodied within that data.
• Relating it to completely unrelated techniques for purely intuitive reasons, formal concept analysis might be thought of as the love child of decision tree learning and k-means clustering.
![Page 10: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/10.jpg)
Context• A context is a structure which relates a set of objects with
a set of attributes.
• Formally, a context is a triple:
(G,M,I)
• G (from gegenstände) is a set of objects;
• M (from merkmale) is a set of attributes; and
• I ⊆ (G⨉M) is the relation linking elements of G to elements of M.
![Page 11: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/11.jpg)
• A concept (with respect to some context) is a pair of sets:
(A⊆G,B⊆M)
• A (the extent) is the set of all objects which have all the attributes in B; and ∀a∈G.a∈A⇔(∀b∈B.b(a))
• B (the intent) is the set of all attributes which apply to all objects in A. ∀b∈M.b∈B⇔(∀a∈A.b(a))
Concepts
![Page 12: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/12.jpg)
• We can derive a concept from either a set of objects or a set of attributes with two maps:
• ’ :: A↦B takes a set of objects to all the attributes which apply to all those objects.
• ’ :: B↦A takes a set of attributes to all the objects which have all those attributes.
Concepts
![Page 13: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/13.jpg)
• Iterating these two maps allow us to derive a concept from any old set of objects or attributes:
• The set A of objects determines a concept:
(A’’, A’)
• The set B of attributes determines a concept:
(B’, B’’)
Concepts
![Page 14: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/14.jpg)
Example time!
![Page 15: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/15.jpg)
FruitName Colour Type
Pink Lady Red Apple
Granny Smith Green Apple
Golden Delicious Yellow Apple
Red Delicious Red Apple
Lemon Yellow Citrus
Orange Orange Citrus
Mandarin Orange Citrus
Lime Green Citrus
![Page 16: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/16.jpg)
Fruit ContextName cr cg cy co ta tc
PL ✓ ✓GS ✓ ✓GD ✓ ✓RD ✓ ✓Le ✓ ✓O ✓ ✓M ✓ ✓Li ✓ ✓
![Page 17: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/17.jpg)
Graph of I for the fruit context
PL
cr ta
GS
cg
GD
cy
RD Le
tc
Li O
co
M
![Page 18: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/18.jpg)
Example 1
• X = {O}
• X’ = {co,tc}
• X’’ = {O,M}
• (X’’, X’) = ({O,M},{co,tc})
Name cr cg cy co ta tcPL ✓ ✓GS ✓ ✓GD ✓ ✓RD ✓ ✓Le ✓ ✓O ✓ ✓M ✓ ✓Li ✓ ✓
Name cr cg cy co ta tcPL ✓ ✓GS ✓ ✓GD ✓ ✓RD ✓ ✓Le ✓ ✓O ✓ ✓M ✓ ✓Li ✓ ✓
![Page 19: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/19.jpg)
Example 2
• Y = {cr}
• Y’ = {PL,RD}
• Y’’ = {cr, ta}
• (Y’, Y’’) = ({PL,RD},{cr,ta})
Name cr cg cy co ta tcPL ✓ ✓GS ✓ ✓GD ✓ ✓RD ✓ ✓Le ✓ ✓O ✓ ✓M ✓ ✓Li ✓ ✓
Name cr cg cy co ta tcPL ✓ ✓GS ✓ ✓GD ✓ ✓RD ✓ ✓Le ✓ ✓O ✓ ✓M ✓ ✓Li ✓ ✓
![Page 20: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/20.jpg)
Whither Lattices & Order?• Lattice are structure which arises from a set of objects
and an ordering on them. They are kinda sorta partially ordered sets which meet some additional criteria:
<S,≤>
• Example: any powerset P(X) with the ⊆ relation forms a lattice.
• Another example: the set of concepts of any context form a lattice!
![Page 21: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/21.jpg)
Concept Lattices• A set of concepts form a lattice in two equivalent
ways: based on extents or based on intents.
(A1,B1) ≤ (A2,B2) ⇔ A1 ⊆ A2
(A1,B1) ≤ (A2,B2) ⇔ B1 ⊇ B2
• This should hopefully make sense? A concept is “smaller” iff it has fewer (of the same) objects iff it has more (of the same) attributes.
![Page 22: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/22.jpg)
Wither Functional Programming?
• I was starting to loose interest, even with chapter full of concepts I could almost get a handle on (excuse the pun) until I got to page 76.
3.14 An algorithm for drawing concept lattices!
• And it’s a fairly simple algorithm too!
![Page 23: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/23.jpg)
![Page 24: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/24.jpg)
A. Initialise a table with one row [ | G] to hold the concept-extents.
B. Loop: choose a maximal attribute-extent m’
1. If m’ is already in the table, add m to that row’s label.
2. Otherwise: add a new row [m | m’] and a new row for the intersection of m’ with each previous rows (don’t label these; skip any duplicates).
3. Delete m from the inputs.
C. Draw a diagram.
4. Each row is a node.
5. Label each node corresponding to an attribute-extent.
6. Label each node corresponding to the smallest extent containing each object.
![Page 25: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/25.jpg)
ExampleAttributes Objects
1 GD,GS,RD,PL,Le,O,M,Li2 cy GD,Le3 cg GS,Li4 ta GD,GS,RD,PL5 GD6 GS7 cr RD,PL8 tc Le,O,M,Li9 Le10 Li11 co O,M12 ∅
Name cr cg cy co ta tcPL ✓ ✓GS ✓ ✓GD ✓ ✓RD ✓ ✓Le ✓ ✓O ✓ ✓M ✓ ✓Li ✓ ✓
![Page 26: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/26.jpg)
Example
![Page 27: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/27.jpg)
Building things in Haskell
FYI: This is where the “bad programmer” bit comes in.
![Page 28: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/28.jpg)
Overview• Using cassava to read input in CSV.
• Using containers and vectors to data structures.
• Using most brute-force-y and least efficient approach to every problem.
• Produces dot output which is rendered with Graphviz.
![Page 29: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/29.jpg)
Straight-forward implementation
![Page 30: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/30.jpg)
Core Algorithm
![Page 31: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/31.jpg)
LOLWUT
![Page 32: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/32.jpg)
Fruit Lattice
![Page 33: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/33.jpg)
People in WikiDB
CSV Input DOT Output1000 1000 3485000 5000 474
“Complete" 72923 584
Data sets are the first n people which were convenient to extract from WikiDB data file.
WikiDB is a set of DBs extracted from wikipedia metadata. Extracted people and ~107 “types” applied to them.
![Page 34: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/34.jpg)
999 Persons from WikiDB
Person
Ra Am Ar Ph Mo Ju Be Cr Mo No Br
Cleric
Ca Sa Ch So
Scientist
Me Mi
Politician
Se Ma PrPr Go Me Of
Artist
Fa Co WrMu
Athlete
Sk Jo Cu Ha Vo Gy Mo Sw Fi Go Ma Ra GaWr
Boxer
Am Te Cy Ba Ru Ic Ba So Or
Jo
![Page 35: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/35.jpg)
5000 Persons from WikiDB
Person
Ch
Presenter
Ra Am Ec Re En Ar Ph Mo Ju Be
Criminal
Mu Mo No Co Br
Cleric
Ca Sa Ch
FictionalCharacter
So Co So
Scientist
Me Mi
Politician
Ch Se Ma Pr Pr Go Me Of
Artist
Fa Co Ad CoWriter
Mu
Athlete
Sk Sn Jo Ta Cu Ha Vo Ch Gy Sk
MotorcycleRider
Sp Sw Fi Go Ma
RacingDriver
Fo Ga
Wrestler
Su
Bo
Am Te Cy Au Ba Ru Ic Cr Gr Ba So Or
Jo
![Page 36: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/36.jpg)
72923 Persons from WikiDB
Person
Vo Ho Pl Ch
Presenter
TeRa Am As Ec Re En Ar Ph Mo Ju Be
Criminal
MurdererMo No Co Br
Cleric
Ca Sa Ch
FictionalCharacter
So
Co
An So
Scientist
Me Mi
Po
Ch Se Ma Pr Pr Go CoMe Of
Artist
Fa Co Co
Actor
Ad Wr Mu
Athlete
Bo Sk Ne Sq
SnookerPlayerSnookerChamp
La Jo Da Ta Ba Cu Na Po Ha
Vo
Be Ch Gy Sk
Mo
Sp Sw Fi Go Ma
Ra
NaFo Ga
Wr
Su
Bo
Am Te Cy Au BaRu Ic Cr
Gr
Am Ba So Or
Jo
![Page 37: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/37.jpg)
Improvements1. Investigate better data structures. Set is probably not the best
choice!
2. Read some RDF format or other instead of crazy CSV.
3. Space leaks!
4. Replace horrible brute-force code with smarter approaches.
5. Command line arguments to control output. Large graphs are utterly unreadable.
• Example of (4): calculate the graph for the whole lattice rather than the set of edges for each node.
![Page 38: A Complete Idiot's I oduction mal Concept Analysis for each Themselves Thomas …code.ouroborus.net/fp-syd/past/2013/2013-11-Sutton... · 2013-12-02 · A Complete Idiot's I oduction](https://reader033.vdocument.in/reader033/viewer/2022042217/5ec0affd295136231f1a2643/html5/thumbnails/38.jpg)
References• B.A. Davey, H.A. Priestly. Introduction
to Lattices and Order (2nd). CUP.
• Wikipedia