10.4 Exercícios

Exercício 10.7 Leia:
(a) a documentação da função fviz_nbclust.
(b) https://www.datanovia.com/en/lessons/determining-the-optimal-number-of-clusters-3-must-know-methods.
(c) A Seção e. Graphical Output Concerning Each Clustering, pg. 83-88 de (Rousseeuw and Kaufman 1990).
\(\\\)

Exercício 10.8 Considere novamente o conjunto de dados pib.
(a) Verifique as sugestões do número ótimo de grupos com os diferente métodos disponíveis na função fviz_nbclust.
(b) Crie o grupamento que considerar mais adequado aos dados e apresente com a função fviz_cluster.
(c) Compare os resultados com o Exercício 10.2. \(\\\)

Exercício 10.9 Considere o conjunto de dados drinks, discutido no Capítulo ??.
(a) Calcule as distâncias de Manhattan, euclidiana e de Minkowski com \(p=3\).
(b) Obtenha os modelos hierárquicos utilizando as três distâncias do item (a). Você nota alguma diferença?
(c) Obtenha a seleção inicial dos centróides a partir de proposta de (Hartigan 1975) apresentada na Equação (10.6). Sugestão: escreva uma função que dependa dos dados e de \(k\), realizando alguma correção que considerar relevante.
(d) Calcule os centróides dos grupos obtidos no item (c).
(e) Calcule a \(VQI\) dos grupos obtidos no item (c) a partir da Eq. (10.4).
(f) Calcule a \(SQT\) dos grupos obtidos no item (c) a partir da Eq. (10.5).
(g) Verifique as sugestões do número ótimo de grupos com os diferente métodos disponíveis na função fviz_nbclust.
(h) Crie o grupamento que considerar mais adequado aos dados e apresente com a função fviz_cluster.

dat <- read.table('https://filipezabala.com/data/drinks.txt', header = T, sep = '\t')

Exercício 10.10 Considere o banco de dados sobre eficiência energética didcutido no Exemplo 5.2.
(a) Calcule as distâncias de Manhattan, euclidiana e de Minkowski com \(p=3\).
(b) Obtenha os modelos hierárquicos utilizando as três distâncias do item (a). (PODE DEMORAR!)
(c) Verifique as sugestões do número ótimo de grupos com os diferente métodos disponíveis na função fviz_nbclust.
(d) Crie o grupamento que considerar mais adequado aos dados e apresente com a função fviz_cluster.

library(readxl)
url1 <- 'http://archive.ics.uci.edu/ml/machine-learning-databases/00242/ENB2012_data.xlsx'
download.file(url1, 'temp.xlsx', mode = 'wb')
dat <- read_excel('temp.xlsx')

10.4.1 Fuzzy C-Means

Bezdek (1974; 1981)

Bezdek, Ehrlich and Full (1984) - FCM—the Fuzzy C-Means clustering-algorithm

https://rpubs.com/rahulSaha/Fuzzy-CMeansClustering

10.4.3 Segment Anything

https://arxiv.org/abs/2304.02643

10.4.4 Apriori

https://en.wikipedia.org/wiki/Apriori_algorithm https://www.geeksforgeeks.org/apriori-algorithm-in-r-programming/ https://dl.acm.org/doi/pdf/10.1145/170035.170072 https://rsrikant.com/papers/thesis.pdf https://arxiv.org/pdf/1403.3948 https://borgelt.net/papers/cstat_02.pdf

# Loading Libraries
library(arules)
library(arulesViz)
library(RColorBrewer)
 
# import dataset
data("Groceries")
 
# using apriori() function
rules <- apriori(Groceries, 
                 parameter = list(supp = 0.01, conf = 0.2))
## Apriori
## 
## Parameter specification:
##  confidence minval smax arem  aval originalSupport maxtime support minlen maxlen target  ext
##         0.2    0.1    1 none FALSE            TRUE       5    0.01      1     10  rules TRUE
## 
## Algorithmic control:
##  filter tree heap memopt load sort verbose
##     0.1 TRUE TRUE  FALSE TRUE    2    TRUE
## 
## Absolute minimum support count: 98 
## 
## set item appearances ...[0 item(s)] done [0.00s].
## set transactions ...[169 item(s), 9835 transaction(s)] done [0.00s].
## sorting and recoding items ... [88 item(s)] done [0.00s].
## creating transaction tree ... done [0.00s].
## checking subsets of size 1 2 3 4 done [0.00s].
## writing ... [232 rule(s)] done [0.00s].
## creating S4 object  ... done [0.00s].
# using inspect() function
inspect(rules[1:10])
##      lhs                rhs                support    confidence coverage   lift     count
## [1]  {}              => {whole milk}       0.25551601 0.2555160  1.00000000 1.000000 2513 
## [2]  {hard cheese}   => {whole milk}       0.01006609 0.4107884  0.02450432 1.607682   99 
## [3]  {butter milk}   => {other vegetables} 0.01037112 0.3709091  0.02796136 1.916916  102 
## [4]  {butter milk}   => {whole milk}       0.01159126 0.4145455  0.02796136 1.622385  114 
## [5]  {ham}           => {whole milk}       0.01148958 0.4414062  0.02602949 1.727509  113 
## [6]  {sliced cheese} => {whole milk}       0.01077783 0.4398340  0.02450432 1.721356  106 
## [7]  {oil}           => {whole milk}       0.01128622 0.4021739  0.02806304 1.573968  111 
## [8]  {onions}        => {other vegetables} 0.01423488 0.4590164  0.03101169 2.372268  140 
## [9]  {onions}        => {whole milk}       0.01209964 0.3901639  0.03101169 1.526965  119 
## [10] {berries}       => {yogurt}           0.01057448 0.3180428  0.03324860 2.279848  104
# using itemFrequencyPlot() function
arules::itemFrequencyPlot(Groceries, topN = 20, 
                          col = brewer.pal(8, 'Pastel2'),
                          main = 'Relative Item Frequency Plot',
                          type = "relative",
                          ylab = "Item Frequency (Relative)")

References

Hartigan, John A. 1975. Clustering Algorithms. John Wiley & Sons, Inc.
Rousseeuw, Peter J, and L Kaufman. 1990. “Finding Groups in Data.” Hoboken: Wiley Online Library. https://onlinelibrary.wiley.com/doi/pdf/10.1002/9780470316801.