Applicazioni pratiche di machine learning/Identificazione dei social bot: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nuova pagina: ==Caricamento librerie== <syntaxhighlight lang="rsplus"> library(ggplot2) library(dplyr) library(caret) </syntaxhighlight> ==Parte 1: Dati == I social bot sono programmi che di...
(Nessuna differenza)

Versione delle 11:06, 21 feb 2020

Caricamento librerie

 library(ggplot2)
 library(dplyr)
 library(caret)


Parte 1: Dati

I social bot sono programmi che distribuiscono messaggi di propaganda politica attraverso i social media e hanno il compito di influenzare le discussioni e/o le opinioni dei loro lettori .

Il dataset users.csv scaricabile da qui : https://www.nbcnews.com/tech/social-media/now-available-more-200-000-deleted-russian-troll-tweets-n844731 contiene social bot russi di Twitter che sono stati utilizzati per influenzare le elezioni presidenziali degli Stati Uniti nel 2016. In particolare per screditare i democratici ci sono per esempio tweets, che danno fake news sulla stregoneria praticata da alcuni democratici, oppure li dipingono come attivisti dell'organizzazione Black Lives Matter, impegnata nella lotta contro il razzismo nei confronti dei neri . Il dataset users_regular.csv contiene invece dati relativi a utenti regolari di Twitter.

Le variabili dei datasets che si utilizzano per identificare i social bot, rispetto agli utenti normali sono :

  • followers_count: Numero di account Twitter che seguono questo account
  • following_count: Numero di account Twitter seguiti da questo account
  • friends_count: Numeri di amici di questo account
  • statuses_count: Numero di post pubblici creati da questo account
  • listed_count: Numero di liste in cui appare questo account


Caricamento dei dati:

 users_bot <- read.csv("users_bot.csv")
 users_regular <- read.csv("users_regular.csv")

Inserisco nei datasets la variabile da predire Tipo_di_utente che può assumere i valori human o bot

 users_bot <- cbind(users_bot,Tipo_di_utente="bot")
 users_regular <- cbind(users_regular,Tipo_di_utente="human")

 variables<- c("statuses_count","followers_count","friends_count","favourites_count","listed_count","Tipo_di_utente")
 df <-rbind(users_bot[, variables],users_regular[, variables])

Alcuni dati statistici come min, max, media, mediana, 1° quartile, 3° quartile si ottengono con la funzione summary

 summary(df)
statuses_count   followers_count  friends_count    
Min.   :     1   Min.   :     0   Min.   :    0.0  
1st Qu.:  1545   1st Qu.:   154   1st Qu.:  175.0  
Median :  5386   Median :   372   Median :  340.0  
Mean   : 15734   Mean   :  1726   Mean   :  802.6  
3rd Qu.: 17775   3rd Qu.:   944   3rd Qu.:  739.0  
Max.   :399555   Max.   :986837   Max.   :46310.0  
NA's   :70       NA's   :70       NA's   :70       
favourites_count  listed_count     Tipo_di_utente
Min.   :     0   Min.   :   0.00   bot  : 453    
1st Qu.:   259   1st Qu.:   0.00   human:3474    
Median :  1285   Median :   3.00                 
Mean   :  4380   Mean   :  21.36                 
3rd Qu.:  4300   3rd Qu.:  10.00                 
Max.   :313954   Max.   :6166.00                 
NA's   :70       NA's   :70       


Elimino le righe del dataset contententi valori mancanti NA:

 df <- df[-which(is.na(df)),]
 colSums(is.na(df))
 statuses_count  followers_count    friends_count favourites_count 
              0                0                0                0 
   listed_count   Tipo_di_utente 
              0                0 

Parte 2: Domanda di ricerca

Si vuole costruire un modello previsionale di machine learning che consenta di distinguere gli utenti regolari di Twitter dai social bot.

Parte 3: Esplorazione dei dati

 df %>%
  ggplot(aes(Tipo_di_utente, fill=Tipo_di_utente))+
  geom_bar()+
  scale_y_continuous(breaks=seq(0,4000,500))+
  ggtitle("Numero di utenti del campione",subtitle = "suddivisi in base alla variabile Tipo_di_utente")