Jak wyodrębnić informacje z macierzy rozrzutu, gdy masz duże N, dane dyskretne i wiele zmiennych?


10

Bawię się zestawem danych dotyczących raka piersi i stworzyłem wykres rozproszenia wszystkich atrybutów, aby dowiedzieć się, które z nich mają największy wpływ na przewidywanie klasy malignant(niebieskiej) benign(czerwonej).

Rozumiem, że wiersz reprezentuje oś x, a kolumna reprezentuje oś y, ale nie widzę, jakie spostrzeżenia mogę poczynić na temat danych lub atrybutów z tego wykresu rozrzutu.

Szukam pomocy w interpretacji / obserwacji na temat danych z tego wykresu rozrzutu lub czy powinienem użyć innej wizualizacji do wizualizacji tych danych.

wprowadź opis zdjęcia tutaj

Użyłem kodu R.

link   <- "http://www.cs.iastate.edu/~cs573x/labs/lab1/breast-cancer-wisconsin.arff"
breast <- read.arff(link)
cols   <- character(nrow(breast))
cols[] <- "black"
cols[breast$class == 2] <- "red"
cols[breast$class == 4] <- "blue"
pairs(breast, col=cols)

Masz rację: trudno w tym wiele zobaczyć. Ponieważ wszystkie zmienne wydają się być dyskretne, z relatywnie małą liczbą kategorii, niemożliwe jest określenie, ile symboli jest ułożonych w stos, aby utworzyć każdy wyraźnie widoczny symbol. To sprawia, że ​​ten szczególny obraz ma niewielką wartość przy ocenie czegokolwiek.
whuber

1
Właśnie tak myślałem. Próbowałem nakreślić wykres słupkowy w ramce, ale nie przydałoby się to, który atrybut ma największy wpływ na klasę, prawda ...? Szukanie pomocy na temat rodzaju wizualizacji zapewniłoby pewne istotne informacje.
ptak

2
Dwukolorowe rozpraszacze mogą mieć sens, jeśli drżysz (dodajesz hałas) stosom punktów.
ttnphns,

@ttnphns Nie rozumiem, co masz na myśli przez „drżenie stosów punktów”
birdy,

1
fluktuacja oznacza edycję wykresu, tak aby leżące obok siebie punkty były umieszczone obok siebie, aby nie zasłaniać widoku jednego punktu danych nad drugim. jest często używany w funkcjach drukowania R.
OFish

Odpowiedzi:


3

Nie jestem pewien, czy to ci pomoże, ale dla podstawowej EDA bardzo podoba mi się ten tabplotpakiet. Dobrze rozumie, jakie potencjalne korelacje mogą występować w danych.

install.packages("tabplot")
tableplot(breast) # gives you the unsorted image below
tableplot(breast, sortCol="class") # gives you a sorted image according to class

nieuporządkowana działka uporządkowana działka


jak interpretować ten tabulator? Z drugiego wykresu tabulatorów wygląda to tak, jakby kolumny 2, 3, 4 i 7 zachowywały się bardzo do siebie?
ptak

Czy chodzi o jakieś zadanie / zadanie domowe? Jeśli tak, zapoznaj się z meta regułami itp. Na temat uzyskiwania pomocy z zadaniami. Moja krótka odpowiedź: a) nie mam pojęcia, co oznaczają wszystkie różne wartości w kolumnach, ponieważ nie przestudiowałem opisu zestawu danych, b) gdybym po prostu opisał to, co widzę, powiedziałbym: klasa 4 wydaje się być związane z wyższymi wartościami każdej kolumny / zmiennej i odwrotnie.
OFish

6

Istnieje wiele problemów, które utrudniają lub uniemożliwiają wydobycie użytecznych informacji z macierzy wykresów rozrzutu.

Masz zbyt wiele zmiennych wyświetlanych razem. Kiedy masz wiele zmiennych w macierzy wykresów rozrzutu, każdy wykres staje się zbyt mały, aby był użyteczny. Należy zauważyć, że wiele wykresów jest powielonych, co marnuje miejsce. Ponadto, chociaż chcesz zobaczyć każdą kombinację, nie musisz kreślić ich wszystkich razem. Zauważ, że możesz rozbić matrycę wykresu rozrzutu na mniejsze bloki po cztery lub pięć (liczba, którą można wizualizować). Musisz tylko utworzyć wiele wykresów, po jednym dla każdego bloku.

wprowadź opis zdjęcia tutaj

Ponieważ masz wiele danych w dyskretnych punktach w przestrzeni , ostatecznie układają się jeden na drugim. Dlatego nie możesz zobaczyć, ile punktów znajduje się w każdej lokalizacji. Istnieje kilka sztuczek, które pomogą ci sobie z tym poradzić.

  1. .5 wydaje się dobrym wyborem.
  2. Przy tak dużej ilości danych nawet drżenie sprawi, że wzory będą trudne do rozpoznania. Możesz użyć kolorów o wysokim nasyceniu, ale w dużej mierze przezroczystych . Tam, gdzie na sobie nakłada się wiele danych, kolor będzie ciemniejszy, a tam, gdzie gęstość jest niewielka, kolor będzie jaśniejszy.
  3. Aby przezroczystość zadziałała, potrzebujesz solidnych symboli do wyświetlania danych, podczas gdy R domyślnie używa pustych kół.

Korzystając z tych strategii, oto przykładowy kod R i wykonane wykresy:

# the alpha argument in rgb() lets you set the transparency
cols2 = c(rgb(red=255, green=0, blue=0,   alpha=50, maxColorValue=255),
          rgb(red=0,   green=0, blue=255, alpha=50, maxColorValue=255) )
cols2 = ifelse(breast$class==2, cols2[1], cols2[2])
# here we jitter the data
set.seed(6141)  # this makes the example exactly reproducible
jbreast = apply(breast[,1:9], 2, FUN=function(x){ jitter(x, amount=.5) })
jbreast = cbind(jbreast, class=breast[,10])  # the class variable is not jittered

windows()  # the 1st 5 variables, using pch=16
  pairs(jbreast[,1:5], col=cols2, pch=16)

wprowadź opis zdjęcia tutaj

windows()  # the 2nd 5 variables
  pairs(jbreast[,6:10], col=cols2, pch=16)

wprowadź opis zdjęcia tutaj

windows()  # to match up the 1st & 2nd sets requires more coding
  layout(matrix(1:25, nrow=5, byrow=T))
  par(mar=c(.5,.5,.5,.5), oma=c(2,2,2,2))
  for(i in 1:5){
    for(j in 6:10){
      plot(jbreast[,j], jbreast[,i], col=cols2, pch=16, 
           axes=F, main="", xlab="", ylab="")
      box()
      if(j==6 ){ mtext(colnames(jbreast)[i], side=2, cex=.7, line=1) }
      if(i==5 ){ mtext(colnames(jbreast)[j], side=1, cex=.7, line=1) }
      if(j==10){ axis(side=4, seq(2,10,2), cex.axis=.8) }
      if(i==1 ){ axis(side=3, seq(2,10,2), cex.axis=.8) }
    }
  }

wprowadź opis zdjęcia tutaj


5

Trudno jest wyobrazić sobie więcej niż 3-4 wymiary na jednej działce. Jedną z opcji byłoby użycie analizy głównych składników (PCA) do skompresowania danych, a następnie wizualizacji ich w głównych wymiarach. Istnieje kilka różnych pakietów w R (jak również prcompfunkcja podstawowa ), które ułatwiają składnię ( patrz CRAN ); Interpretacja wykresów, ładunków, to inna historia, ale myślę, że łatwiej niż 10-rzędowa macierz rozrzutu wykresów porządkowych.

wprowadź opis zdjęcia tutaj


Dzięki za sugestie dotyczące PCA. Nie wiedziałem o tym. Jak interpretowałbym opublikowany obraz? Czy to znaczy, że wszystkie atrybuty, które są zgrupowane w grupie, miałyby jakieś znaczenie?
ptak
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.