Як витягнути інформацію з матриці розсипання, коли у вас великий N, дискретні дані та багато змінних?


10

Я граю з набором даних про рак молочної залози і створив розсип усіх атрибутів, щоб зрозуміти, які з них мають найбільший вплив на прогнозування класу malignant(синій) benign(червоний).

Я розумію, що рядок являє собою вісь x, а стовпець являє собою вісь y, але я не бачу, які спостереження я можу зробити щодо даних або атрибутів цього розсіювача.

Я шукаю допомоги, щоб інтерпретувати / робити спостереження щодо даних цього розсіювача або якщо мені слід використовувати іншу візуалізацію для візуалізації цих даних.

введіть тут опис зображення

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)

Ви маєте рацію: у цьому важко багато що побачити. Оскільки всі ваші змінні здаються дискретними, із відносно невеликою кількістю категорій, неможливо визначити, скільки символів зібрано для формування кожного чітко видимого символу. Це робить цей конкретний образ малоцінним при оцінці чого-небудь.
whuber

1
Це щось таке, що я думав. Я спробував побудувати боксерську коробку, але це не було б корисно, побачивши, який атрибут найбільше впливає на клас правильно? Шукайте допомоги щодо того, який тип візуалізації дав би якусь змістовну інформацію.
пташиний

2
Ваші двоколірні розсіювачі можуть мати чудовий сенс, якщо ви дрожать (додаєте шум) ваші купи очок.
ttnphns

@ttnphns Я не розумію, що ви маєте на увазі під "тремтінням своїх
кульок

1
тремтіння означає відредагувати свою ділянку, щоб розташовані вище точки розташовувалися поруч, щоб не затуляти погляд однієї точки даних над іншою. він часто використовується в R графічних функцій.
ОФіш

Відповіді:


3

Я не впевнений, чи це вам корисно, але для первинної EDA мені дуже подобається tabplotпакет. Дає вам хороше розуміння того, які можливі співвідношення можуть бути у ваших даних.

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

не упорядкований сюжет упорядкований сюжет


як би хтось інтерпретував цю табло? З другої таблоплоти схоже, що стовпці 2, 3, 4 і 7 ведуть себе дуже схоже один на одного?
пташиний

Це для певного завдання / домашнього завдання? Якщо це так, будь ласка, зверніться до метас для правил і т.д., щоб отримати допомогу в призначеннях. Моя коротка відповідь: а) Я не маю поняття, що означають усі різні значення у стовпцях, оскільки я не вивчив опис набору даних, б) якби я просто описував те, що бачу, я б сказав: клас 4 здається таким пов'язані з більш високими значеннями кожного стовпця / змінної і навпаки.
OFish

6

Існує ряд питань, які ускладнюють або неможливо отримати будь-яку корисну інформацію з вашої матриці розсіювання.

У вас занадто багато змінних, відображених разом. Коли у матриці розселення є багато змінних, кожен графік стає занадто малим, щоб бути корисним. Що потрібно помітити, це те, що багато сюжетів дублюються, що витрачає простір. Крім того, хоча ви хочете бачити кожну комбінацію, вам не потрібно складати їх усі разом. Зауважте, що ви можете розбити матрицю розсіювання на більш дрібні блоки з чотирьох або п'яти (число, яке корисно візуалізувати). Вам просто потрібно зробити кілька сюжетів, по одному для кожного блоку.

введіть тут опис зображення

Оскільки у вас дуже багато даних у дискретних точках у просторі , вони складаються один на одного. Таким чином, ви не бачите, скільки балів у кожній локації. Існує кілька хитрощів, які допоможуть вам впоратися з цим.

  1. .5
  2. Маючи стільки даних, навіть тремтіння зробить малюнки важкими для розрізнення. Ви можете використовувати кольори, які є дуже насиченими, але значною мірою прозорими для цього. Там, де багато даних, розміщених один на одного, колір стане темнішим, а там, де є невелика щільність, колір стане світлішим.
  3. Щоб прозорість працювала, вам потрібні суцільні символи для відображення даних, тоді як R використовує порожні кола за замовчуванням.

Використовуючи ці стратегії, ось декілька прикладів R-коду та зроблених сюжетів:

# 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)

введіть тут опис зображення

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

введіть тут опис зображення

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) }
    }
  }

введіть тут опис зображення


5

Важко уявити більш ніж 3-4 розміри в одному сюжеті. Одним із варіантів було б використання аналізу основних компонентів (PCA) для стиснення даних та його візуалізації в основних вимірах. Є кілька різних пакетів в R (а також основна prcompфункція), які роблять це синтаксично простим ( див. CRAN ); інтерпретація сюжетів, навантажень - інша історія, але я думаю, що простіше, ніж 10 змінної порядкової матриці розсіювання.

введіть тут опис зображення


Дякуємо за пропозицію щодо PCA. Я про це не знав. Як би я інтерпретував зображення, яке ви розмістили? Чи означає це, що всі атрибути, що з’єднуються в групі, мали б певне значення?
пташиний
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.