Descripción de los datos

Tras haber reducido la dimensionalidad de los datos de las cuentas a dos dimensiones, se graficaron, observando ciertos grupos que podrían ser reconocidos con clustering. Se decidió realizar el experimento con el objetivo de obtener mayor información del dataset. Los datos se encuentran en cuatro archivos correspondientes a los subconjuntos de entrenamiento y testing, separados en autor-datos (archivos “X”); y autor-clase (archivos “y”).

library(tidyverse)
df_w <- read.csv("X_test_reduced_2 (2).csv")
df_w <- full_join(df_w, read.csv("X_train_reduced_2 (2).csv"), by = c("author", "X0", "X1"))
df_y1 <- read.csv("y_train (2).csv", header=FALSE, col.names = c("author", "X0"))
df_y2 <- read.csv("y_test (2).csv", header=FALSE, col.names = c("author", "X0"))
df_y <- full_join(df_y1, df_y2, by = c("author", "X0"))

Después de cargar los datos, estos se grafican. Se puede observar ciertas agrupaciones que destacan por sobre el ruido que se ve en el centro de la figura.

plot(df_w %>% select(2, 3), pch=20, cex=1)

Clustering with K-means

Aplicando lo visto en clases, se aplica K-means a los datos.

set.seed(413)

scaled <- scale(df_w %>% select(2,3))

wss <- 0
clust = 30
for (i in 1:clust) {
  wss[i] <- sum(kmeans(scaled, centers = i)$withinss)
}

plot(1:clust, wss, type="b", xlab="Clusters", ylab="error")

Se decide usar 19 clusters. Se usa un número relativamente alto porque se quiere representar todos los pequeños grupos en clusters. El número 19 es escogido pues al agregar un nodo más, el error incrementa.

set.seed(1022)
km1st.out <- kmeans(scaled, 19, nstart = 20)
cluster <- factor(km1st.out$cluster)
ggplot(df_w, aes(x=X0, y=X1, colour=cluster)) +
  geom_point() +
  ggtitle("Clusters con K-means")

Los resultados del proceso no son los esperados. El gran cúmulo central es dividido por varios clusters. Además los grupos pequeños en las fronteras del gráfico suelen agruparse juntas. En retrospectiva, este resultado es obvio debido a las características de K-means.

DB Scan

Como los grupos que se quiere representar en clusters son visualmente densos. DB Scan resulta una alternativa deseable.

library("dbscan")
accs <- df_w %>% select(2,3)

dbscan::kNNdistplot(accs, k = 15)
abline(h = 4.3, lty = 2, col = "red")

Se escoge una distancia de 4,3 como radio para detectar puntos cercanos.

db <- dbscan::dbscan(accs, eps = 4.3, minPts = 15)

accs$cl_db <- factor(db$cluster)

ggplot(accs, aes(x=X0, y=X1, colour=cl_db)) + 
  geom_point() + 
  ggtitle("Clusters con DB Scan")

Con este método se obtiene algo más cercano a lo que se tenía en mente. A partir de este resultado, se podría ver que caracteriza a cada conjunto, sin embargo, el número de clusters lo hace tedioso, y la cantidad de cuentas por cluster lo vuelve poco confiable. En nuestra opinión, resulta más interesante estudiar la correlación entre los clusters y las clases definidas para el proceso de clasificación.

Reglas de asociación

Dado que los datos no se encuentran en formato de transacciones, no se pudó usar las librerías predefinidas para trabajar con reglas de asociación. No obstante, se pudo obtener los valores necesarios de todas formas.

classes <- data.frame(accs$cl_db)
classes$cl_km <- cluster
classes$real <- factor(df_y$X0)

Tras definir el dataframe que se contiene toda la información necesaria ({cluster_db, cluster_kmeans, clase}), se realizan las transformaciones necesarias para obtener las reglas. En primer lugar se realiza con los resultados de DB Scan.

# Ocurrencias (o support count) de {cluster_db, clase}
t <- classes %>% group_by(accs.cl_db, real) %>% summarise(count = n())
# Ocurrencias (o support count) de {cluster}
t <- inner_join(t, classes %>% group_by(accs.cl_db) %>% summarise(total = n()), by=c("accs.cl_db"))
# Proporción entre las ocurrencias (o confianza de {cluster_db} -> {clase})
t$proportion <- t$count / t$total

# Variable auxiliar con las frecuencias relativas (o soportes) de {clase}
p <- (df_y %>% group_by(X0) %>% summarise(cant = n()))
p$pro <- p$cant / 1856

# Razón entre la confianza de la regla y el soporte de {clase}
t$lift <- t$proportion / p$pro[t$real]

Se filtran las reglas para obtener solo aquellas con un lift mayor a 1,2.

t %>% filter(lift > 1.2)
## # A tibble: 21 x 6
## # Groups:   accs.cl_db [19]
##    accs.cl_db real  count total proportion  lift
##    <fct>      <fct> <int> <int>      <dbl> <dbl>
##  1 0          0        49    81      0.605  1.21
##  2 1          2       147  1166      0.126  1.26
##  3 2          1        26    35      0.743  1.86
##  4 2          2         8    35      0.229  2.28
##  5 3          0        63    65      0.969  1.94
##  6 4          0        44    44      1      2   
##  7 5          0        23    23      1      2   
##  8 6          0        52    56      0.929  1.86
##  9 7          1        32    36      0.889  2.22
## 10 8          1        37    39      0.949  2.37
## # ... with 11 more rows

Mediante la observación de las reglas obtenidas (descartando aquellas con confianza menor a 0,7) se obtienen las siguientes conclusiones:

  • Los clusters 3, 4, 5, 6, 12 y 18 están fuertemente asociados con cuentas de baja popularidad.
  • Los clusters 7, 8, 9, 10, 11, 13, 16 y 19 están fuertemente asociados con cuentas de popularidad media.
  • Los clusters 2 y 14 contienen muy pocos elementos de baja popularidad.
  • El cluster 17 contiene una cantidad proporcionalmente elevada de cuentas de alta popularidad.
  • De los clusters ya mencionados, los clusters 5, 10, 11, 13, 16, 17, 18 y 19 tienen menos de 30 cuentas. Por lo que se puede cuestionar la validez de sus reglas.

Antes de seguir obteniendo conclusiones de estos resultados, es importante ver como se manifiestan en el gráfico.

ggplot(accs %>% filter(cl_db %in% c("3", "4", "5", "6", "12", "18")), aes(x=X0, y=X1, colour=cl_db)) + geom_point() +
  ggtitle("Baja popularidad")

Con la excepción del número 5, todos los clusters que tienen una regla que los asocia a baja popularidad se encuentran en la zona superior izquierda del gráfico.

ggplot(accs %>% filter(cl_db %in% c("7", "8", "9", "10", "11", "13", "16", "19")), aes(x=X0, y=X1, colour=cl_db)) +
  geom_point() +
  ggtitle("Media popularidad")

Aquellos de popularidad media, por su parte, están localizados en los extremos superior derecho e inferior izquierdo.

Graficandolos todos juntos:

pop_cl <- c("?", "?", "media o alta", "baja", "baja", "baja", "baja", "media", "media", "media", "media", "media", "baja", "media", "media o alta", "?", "media", "?", "baja", "media")

accs$pop <- pop_cl[accs$cl_db]

ggplot(accs, aes(x=X0, y=X1, colour=pop))+ 
  geom_point() +
  ggtitle("Clusters segun popularidad")

Se obtiene que, en general, las cuentas que se ubican en los extremos de está reducción de dimensionalidad se distribuyen de forma más homogénea. Por el contrario, el centro está compuesto por cuentas de todo tipo. Con excepción del cluster 5 es posible decir que, pese a que ciertas reglas tienen muy pocos elementos, en conjunto demuestran una tendencia en los datos, pues los grupos de clusters definen zonas donde predominan ciertas clases.

Aun cuando no se aporte mucha información nueva, se repite el proceso anterior con el clustering por K-means.

# Ocurrencias (o support count) de {cluster_km, clase}
t2 <- classes %>% group_by(cl_km, real) %>% summarise(count = n())
# Ocurrencias (o support count) de {cluster}
t2 <- inner_join(t2, classes %>% group_by(cl_km) %>% summarise(total = n()), by=c("cl_km"))
# Proporción entre las ocurrencias (o confianza de {cluster_km} -> {clase})
t2$proportion <- t2$count / t2$total

# Razón entre la confianza de la regla y el soporte de {clase}
t2$lift <- t2$proportion / p$pro[t2$real]

Nuevamente, se descarta inicialemente las reglas con lift menor a 1,2.

t2 %>% filter(lift > 1.2)
## # A tibble: 20 x 6
## # Groups:   cl_km [16]
##    cl_km real  count total proportion  lift
##    <fct> <fct> <int> <int>      <dbl> <dbl>
##  1 1     0        75   123      0.610  1.22
##  2 1     2        16   123      0.130  1.30
##  3 3     0        48    64      0.75   1.5 
##  4 4     1        61    74      0.824  2.06
##  5 4     2        12    74      0.162  1.62
##  6 5     0        71   115      0.617  1.23
##  7 5     2        20   115      0.174  1.74
##  8 6     2        47   134      0.351  3.50
##  9 8     0        60    66      0.909  1.82
## 10 9     1        82   133      0.617  1.54
## 11 10    1        74    76      0.974  2.44
## 12 11    1        42    64      0.656  1.64
## 13 12    0        98   102      0.961  1.92
## 14 13    0       149   226      0.659  1.32
## 15 15    0        63    65      0.969  1.94
## 16 16    1        28    34      0.824  2.06
## 17 17    1        62    87      0.713  1.78
## 18 17    2        14    87      0.161  1.61
## 19 18    1        39    42      0.929  2.32
## 20 19    2        21    81      0.259  2.59

Esta vez se obtienen menos reglas con confianza mayor a 0,7. De aquellas que si cumplen este criterio:

  • Los clusters 3, 8, 12 y 15 están fuertemente asociados con cuentas de baja popularidad.
  • Los clusters 10, 16 y 18 están fuertemente asociados con cuentas de popularidad media.
  • Los clusters 4 y 17 contienen muy pocos elementos de baja popularidad.
  • Los clusters 6 y 19 contienen una cantidad proporcionalmente elevada de cuentas de alta popularidad.

Nuevamente se grafican estos grupos de clusters.

accs$cl_km <- classes$cl_km

ggplot(accs %>% filter(cl_km %in% c("3", "8", "12", "15")), aes(x=X0, y=X1, colour=cl_km)) +
  geom_point() +
  ggtitle("Baja popularidad")

ggplot(accs %>% filter(cl_km %in% c("10", "16", "18")), aes(x=X0, y=X1, colour=cl_km)) +
  geom_point() +
  ggtitle("Media popularidad")

pop_cl <- c("?", "?", "baja", "media o alta", "?", "?", "?", "baja", "?", "media", "?", "baja", "?", "?", "baja", "media", "media o alta", "media", "?")

accs$pop_km <- pop_cl[accs$cl_km]

ggplot(accs, aes(x=X0, y=X1, colour=pop_km))+ 
  geom_point() +
  ggtitle("Clusters segun popularidad")

Se obtienen resultados similares a los anteriores. Como los clusters de K-means son menos representativos de las agrupaciones de los datos, se pueden observar discrepancias. Por ejemplo, en la zona inferior izquierda solo se encuentra un cluster de popularidad media cuando con DB Scan se encontraban dos. Si se vuelve a ver el gráfico de clustering con K-means, se puede observar que el conjunto de elementos que ahora no tiene una regla fuerte pertenece a un cluster con toma elementos del borde del cúmulo central. De esta forma se puede confirmar que K-means en este caso no era el algoritmo más apropiado.

Análisis de los resultados

Luego de encontrar zonas que se correlacionan con las clases, es necesario ver que comparten las cuentas que se encuentran en estos lugares. Para ello, se observan manualmente los atributos de los datos correspondientes. A continuación se muestran los primeros 20 usuarios, mas las siguientes observaciones se hicieron a partir de la totalidad de los datos de cada caso.

accs_name <- full_join(accs %>% select(1,2,4), df_w, by=c("X0", "X1"))

accounts <- read.csv("accounts.csv")
accounts$content <- NULL

temp <- (accs_name %>% filter(pop == "baja"))[["author"]]

head(accounts[accounts$X %in% temp,], 20)
##                   X followers followers.1          followers.2
## 9       4EVER_SUSAN        55          60  0.05008347245409015
## 14      AAASSSSSHHH        39          46   0.0919632511928765
## 36    ADAM_MATHISSS        85         112  0.21142499796079284
## 38      ADELE_BROCK        56          59 0.014311080486576738
## 39     ADELIINESTRT         0           0                  0.0
## 44        ADLEESWOD         0           0                  0.0
## 47     ADRIANAMFTTT        43          48  0.03462587225938626
## 60       AGNESSTRYT         0           0                  0.0
## 70        ALAXXATRT         0           0                  0.0
## 71     ALBELITATRTS         0           0                  0.0
## 87     ALEXWARNINGU        58          60  0.01413684267363037
## 90     ALFREDBENBEN        82          88  0.08158871356129067
## 100 ALLFORPETERSONS       153         153                  0.0
## 104         ALW_ILL        28          49  0.14429408508770256
## 107    AMALIA_PETTY        61          71  0.07586733753062354
## 110       AMBAASTRT         0           0                  0.0
## 116      AMELCREECH        67          78   0.2255414275747177
## 122      AMIRAHPOPE        70          74  0.01916684136443952
## 128        AMYYSSTS         0           0                  0.0
## 140     ANDREWHEDDD         6           8 0.050026924212683906
##                 followers.3 following following.1          following.2
## 9    -4.933975624106854e-07        75          76  0.01001669449081803
## 14   -5.162109336617183e-07        27          30 0.039412821939804214
## 36  -1.0016164087558887e-06         0           0                  0.0
## 38   -9.199741587306957e-08        51          53 0.009540720324384492
## 39                      0.0         0           0                  0.0
## 44                      0.0         0           0                  0.0
## 47   2.1462809308977795e-07        88         138   0.3462587225938626
## 60                      0.0         0           0                  0.0
## 70                      0.0         0           0                  0.0
## 71                      0.0         0           0                  0.0
## 87  -2.8894480051797667e-08        68          70  0.01413684267363037
## 90   -6.433764180689723e-07        79          82  0.04079435678064534
## 100  -8.236499899694855e-09       202         202                  0.0
## 104 -1.2209223247854379e-06        60         111   0.3504284923558491
## 107  -3.250486048006088e-07        58          60 0.015173467506124708
## 110                     0.0         0           0                  0.0
## 116   -6.51014253241763e-07        19          20 0.020503766143156157
## 122   4.037361056495806e-08        86          90  0.01916684136443952
## 128                     0.0         0           0                  0.0
## 140   3.742891650249372e-07        53          54 0.025013462106341953
##                 following.3 updates updates.1          updates.2
## 9   -1.1678162928163586e-07       1        72 0.7111853088480802
## 14  -2.7136156251669324e-07     315       387 0.9459077265553012
## 36                      0.0       2       416  3.241849968732157
## 38   -7.967527779525236e-08     299       424 0.5962950202740307
## 39                      0.0       1         7              33.75
## 44                      0.0       1         6 29.629629629629626
## 47    2.673076044822981e-06       1       464 3.2063557712191675
## 60                      0.0       1         6               80.0
## 70                      0.0       1         6  79.12087912087912
## 71                      0.0       1         6               80.0
## 87  -1.3881545671898505e-07       1       441 3.1101053881986815
## 90  -3.9810331246965615e-07       2       406  5.493640046460239
## 100    2.01110814248782e-09       4        33            20880.0
## 104  1.7771279681775581e-06       3       270 1.8345962246865042
## 107  -1.031601008458492e-07       1       178 1.3428518742920366
## 110                     0.0       1         6               80.0
## 116   4.711046813888175e-08       3       598 12.199740855177913
## 122  -4.174121512960053e-08       1       530 2.5348147704471264
## 128                     0.0       1         3              960.0
## 140   6.805339772270673e-08       1       285  7.103823238201115
##                   updates.3        region language account_type
## 9     4.175552885939418e-06 United States  English        Right
## 14   3.4247971498170454e-06 United States  English         Koch
## 36  -4.1504683921049135e-05 United States  English        Right
## 38   3.1929210868231055e-06 United States  English        Right
## 39   0.00036032533772618165       Unknown  English        Right
## 44   0.00030442509420168284       Unknown  English        Right
## 47   -5.314303507939591e-05 United States  English        Right
## 60    0.0005555555555590759       Unknown  English        Right
## 70      0.00054945054941875       Unknown  English        Right
## 71    0.0005555555555461698       Unknown  English        Right
## 87  -3.0906646379387994e-05 United States  English        Right
## 90    -5.09932221083681e-05 United States  English        Right
## 100     0.18233966593039816 United States  English         Left
## 104  -5.093729813273435e-06 United States  English        Right
## 107 -2.3533492247989073e-06 United States  English        Right
## 110   0.0005555555555461697       Unknown  English        Right
## 116 -2.5206028036628922e-05 United States  English        Right
## 122 -1.5165928608846429e-05 United States  English         Left
## 128    0.008333333325939978       Unknown  English        Right
## 140  -1.191152450131795e-05 United States  English        Right
##     account_category          publish_date        publish_date.1 content.1
## 9         RightTroll     99.83333333333333  0.031378217739707996        62
## 14        Fearmonger     76.11736111111111   0.02514003623988498        71
## 36        RightTroll    127.70486111111111  0.022813933976288045        45
## 38        RightTroll    209.62777777777777   0.03505189013985294       118
## 39        RightTroll   0.17777777777777778  0.009218645683151885         7
## 44        RightTroll               0.16875  0.008534807466143478         6
## 47        RightTroll    144.40069444444444  0.033020578953410006        99
## 60        RightTroll                0.0625  0.008534807466143478         6
## 70        RightTroll   0.06319444444444444  0.008534807466143478         6
## 71        RightTroll                0.0625  0.008534807466143478         6
## 87        RightTroll    141.47430555555556  0.032054712804441624        92
## 90        RightTroll     73.53958333333334  0.015649168683172586        24
## 100        LeftTroll  0.001388888888888889  0.019762845849802372        25
## 104       RightTroll     145.5361111111111  0.020365891012794957        43
## 107       RightTroll    131.80902777777777  0.029818916540746657        86
## 110       RightTroll                0.0625  0.008534807466143478         6
## 116       RightTroll     48.77152777777778  0.020482239345864933        46
## 122        LeftTroll             208.69375  0.021821361763448694        53
## 128       RightTroll 0.0020833333333333333 0.0060350202354316285         3
## 140       RightTroll     39.97847222222222   0.02401284434512327        48

Como es esperable, las cuentas de baja popularidad poseen una diferencia (entre primer y último tweet) de followers y following menor a 0,5. Las pendientes obtenidas del ajuste lineas suelen tener un valor absoluto menor a \(10^{-6}\). Más allá de los esperable, la mayor parte de estos datos han escrito menos de 200 tweets. Cabe destacar que no todos los datos cumplen los descrito, pero la existencia de outliers no es inusual.

temp <- (accs_name %>% filter(pop == "media"))[["author"]]

head(accounts[accounts$X %in% temp,], 20)
##                   X followers followers.1         followers.2
## 12            6DRUZ        51         107 0.43133374341419056
## 16      AANTIRACIST       220        1074  3.5305770318416845
## 22     ABIGAILSSILK        78        2863   5.899764032976538
## 31         ACEJINEV        64         928   7.582088096921239
## 34    ADAMCHAPMANJR       250         974   2.993797381116471
## 46        ADRGREERR        76         833  3.0052684831124576
## 74    ALBUQUERQUEON         1         745   7.580502508296128
## 76     ALECMOOOOODY       175         926   2.981711705005087
## 91      ALFREDTHREE        63         303   8.353677696937467
## 117   AMELIEBALDWIN       324        2860  22.325171939477304
## 146 ANDYDREWDANIELS       126        3621  28.323484720580787
## 170     ANNIEPOSHES       131        4680  35.799909278215296
## 177     ANTONHAYHAY       184         763  2.2987086030636212
## 179 ANTONOVMENMENCO       225         281  0.5205670462468045
## 199 ARKHIPOVTIOVEOF       254         302  0.5970922849664395
## 201      ARM_2_ALAN        69         191  1.0473663814946195
## 204    ARSENI_ROMAN        60          88 0.43027735387964616
## 231   BABYJANNYMEOW       291        5062  37.547014105597974
## 235 BALTIMORE0NLINE      4984        7293  20.319369328077734
## 238    BANTTANANTTA        92         127   1.454209706272722
##                followers.3 following following.1          following.2
## 12   6.436129885673687e-06         9          11 0.015404776550506805
## 16   3.392951336593167e-05       417        1638    5.047815639202221
## 22    2.92280734937941e-05        64        4903   10.250972407746309
## 31  1.2500660459470059e-05         0        1264   11.092314067718108
## 34   3.463134561500107e-05       582        3097    10.39972432804962
## 46  1.3509764892961132e-05        79        1214    4.505917738880633
## 74     4.5507289870665e-05         0        5001    50.95442613439373
## 76   8.763531360109816e-06       456        3196    10.87868185314772
## 91   9.267554325926474e-06       128        1338     42.1164583887264
## 117  4.224425162016554e-05       214        2698   21.867400275103165
## 146  6.816776197133654e-05       133        4469    35.13894985649164
## 170  9.765362371910232e-05        43        4865     37.9483760254021
## 177   8.16226010333529e-06       298        2261    7.793376490179428
## 179  6.662962928268482e-06       217         264   0.4369044852428538
## 199  6.572186134876037e-06       246         291    0.559774017156037
## 201 2.4947173245146193e-06        62          68 0.051509822040718994
## 204  6.369559492337076e-06       238         242  0.06146819341137802
## 231  9.548420910352572e-05       306        4988    36.84659820633194
## 235 3.8850096456989655e-05         0        7567    66.59015491795765
## 238  3.081362829064091e-06       277         279   0.0830976975012984
##                 following.3 updates updates.1          updates.2
## 12   1.2895176334335144e-07      35      6289 48.170736273434784
## 16    3.518744101291486e-06     686      2059  5.676208740888328
## 22     3.53123307693394e-05     261      2517  4.779126627789972
## 31    6.138400229056622e-06       6      7236 63.447334422153425
## 34   -2.590891675438359e-05     639      2396 7.2653342522398345
## 46   1.1986396233261164e-05       3      2170   8.60292840542232
## 74    0.0003482825310095826       1      2828 28.803871762033808
## 76  -1.2255921983304472e-05     575     10419   39.0838482344475
## 91    1.902816752722142e-05     532       783  8.736554591380434
## 117  3.5808610785341785e-05    1470     40003 339.21760660247594
## 146   7.207186827696927e-05     455      2886 19.700827283471213
## 170   5.976014427570905e-05     866      4785  30.84190909239959
## 177  -9.167246211536128e-06     438     12413  47.54237568512412
## 179   5.224729534122382e-06    5461      6824 12.670230072042761
## 199   6.186946492285181e-06    5488      6489 12.451862026070957
## 201  -4.989772016199546e-07     358     14975 125.48651146153159
## 204  -4.774533549634053e-07      26      2700 41.091487295506205
## 231   8.054261217619894e-05    1372      5582  33.13203298775256
## 235   4.991779785156112e-05    9866     17153   64.1261343844532
## 238  -2.474565473386338e-08      53      3679   150.656125569854
##                  updates.3        region language account_type
## 12   0.0007636891631859858       Unknown  English      Russian
## 16   4.780890989890349e-05 United States  English         Left
## 22  2.2016314629011613e-05 United States  English    Hashtager
## 31  0.00010050411210345914 United States  English         Left
## 34  5.7784943205406175e-05 United States  English         Left
## 46  2.9959141721876536e-05 United States  English         Left
## 74   0.0002417645933937616       Unknown  English        local
## 76   0.0002709281628937119 United States  English         Left
## 91   1.057645938886621e-05 United States  English        Right
## 117  0.0011894480566105297 United States  English        Right
## 146  5.327779952684746e-05 United States  English    Hashtager
## 170  0.0001190648974603606 United States  English    Hashtager
## 177  0.0003314188055101393 United States  English         Left
## 179  0.0001455950043497519       Unknown  English      Russian
## 199  0.0001396472130343745       Unknown  English      Russian
## 201  0.0012472556394973657 United States  English        Right
## 204  0.0004666547891487971       Unknown  English      Russian
## 231 0.00010844900801087834 United States  English    Hashtager
## 235 0.00010954698133903369 United States  English        local
## 238  0.0004114919122454052    Azerbaijan  English      Russian
##     account_category       publish_date       publish_date.1 content.1
## 12        NonEnglish 129.82986111111111   2.9435544890810186       116
## 16         LeftTroll 241.88680555555555   10.937142569652014      1239
## 22      HashtagGamer  472.0527777777778  0.40564488136831356      1668
## 31         LeftTroll 113.95277777777778    8.957137945536859      6134
## 34         LeftTroll 241.83333333333334    19.42710144399844      1472
## 46         LeftTroll 251.89097222222222    5.264349934911173      1867
## 74          NewsFeed  98.14652777777778   0.5805931077917901      2812
## 76         LeftTroll          251.86875   27.147115612617046      8295
## 91        RightTroll 28.729861111111113 0.046281973001200905       222
## 117       RightTroll          113.59375   34.842077605495405     34308
## 146     HashtagGamer 123.39583333333333    2.931288675009588      1801
## 170     HashtagGamer 127.06736111111111    4.727658899754057      2976
## 177        LeftTroll 251.88055555555556    12.51551281642476     10214
## 179       NonEnglish            107.575  0.00653490709996388         9
## 199       NonEnglish  80.38958333333333 0.006527534403382707         9
## 201       RightTroll 116.48263888888889  0.25849192912565194     14530
## 204       NonEnglish  65.07430555555555   3.1079109570532903        49
## 231     HashtagGamer 127.06736111111111    4.782118000579115      3205
## 235         NewsFeed 113.63541666666667    7.365396426825003     10313
## 238       NonEnglish 24.068055555555556    2.614813973281474       173

De nuevo, es predecible que estos datos tengan diferencias de followers usualmente mayor a 0,2 y las pendientes de followers y following sean un valor entre \(10^{-4}\) y \(10^{-6}\). Algo que es menos evidente es que existen relativamente pocos “RightTrolls” en esta agrupación, recordando que estos son más de la mitad del dataset. También se puede observar que hay una cantidad notable de cuentas con más de 100 tweets. Nuevamente existen outliers.

Conclusiones

A partir de los experimentos, sería posible decir que aquellas cuentas que no sean trolls de derecha y que sean activas tienen mayores posibilidades de ser populares. Sin embargo, esto requeriría ignorar que tal afirmación solo se puede deducir a partir de una cantidad minoritaria de los datos. No se puede saber claramente como se caracterizan los datos de baja, media o alta popularidad con este método si no se logra eliminar la incertidumbre creada por todos los datos presentes en el centro de la figura. Junto con esto, la dificultad de interpretar datos cuya dimensionalidad ha sido reducida entorpece todavía más la tarea de percibir patrones en los que si presentan una tendencia.

No obstante, al crear bots que envíen tweets, hacer que el contenido de sus tweets no sea pro-republicano y que sean regularmente activos, resulta más razonable como punto de partida para que sean populares que intentar encontrar la combinación ideal de atributos por fuerza bruta.