Это старая версия документа!


522 гр., по выбору. Анализ многомерных данных на компьютере

Место и время проведения: четверг, 4 пара (4399)
Преподаватель: Голяндина Нина Эдуардовна




03.12.2020 - Каждый на своих (по выбору) данных готовит начало задания по классификации (От всех жду работ по регрессии и АГК.) Я в vk помещу пример классификации; сделайте для своих данных что-то аналогичное до того момента, до которого сможете разобраться (предполагается, до ROC/AUC сможете сделать).

Классификация включает в себя lda, qda, cross-validation, визуализацию. (Можете посмотреть на другие методы классификации, которые частично будут в след. семестре, здесь https://github.com/kabacoff/RiA2/blob/master/Ch17%20Classification.R)

Кросс-проверка (leave-one-out CV) делается так: по очереди каждый индивид удаляется из данных, строится правило классификации без него, а потом это правило применяется к удаленному индивиду. Получаем классификацию для каждого индивида, но результат честный, без переподгонки. Для случая небольших выборок этот способ спасает, так как разбиение на тренировочную и тестовую выборки дает очень неустойчивый результат.

#LDA
library(MASS)
iris.train ← iris
iris.lda ← lda(iris.train[,1:4], iris.train[,5])
iris.ldap ← predict(iris.lda, iris.train[,1:4])$class
table(iris.ldap, iris.train[,5]) #classification quality
ris.lda ← lda(iris.train[,1:4], iris.train[,5], CV = TRUE)
table(iris.lda$class, iris.train[,5]) #leave-one-out cross-validation
#LDA, out-of-sample
iris.train ← iris[seq(1,nrow(iris),5),]
iris.unknown ← iris[-seq(1,nrow(iris),5),]
iris.lda ← lda(iris.train[,1:4], iris.train[,5])
iris.ldap ← predict(iris.lda, iris.unknown[,1:4])$class
ct ← table(iris.ldap, iris.unknown[,5])
diag(prop.table(ct, 1))
# Exploratory Graph for LDA or QDA for each pair of variables
library(klaR)
partimat(Sp ~ ., Iris, method=«lda»)

26.11.2020 - По-прежнему, все команды делают (переделывают) и показывают задание по АГК (по своим данным), а каждый отдельно делает по данным, выданным в рамках курса по МАД и присылает. (От всех жду работ по регрессии.)

19.11.2020 - Все команды делают и показывают задание по АГК (по своим данным), а каждый отдельно делает по данным, выданным в рамках курса по МАД и присылает.

12.11.2020 - Все команды делают и показывают задание по регрессии (см. пример ниже).

05.11.2020 - Две оставшиеся команды показывают результаты третьего задания (О мерах зависимостей) для выбранного набора данных. Все заранее присылают мне первые три задания. Пример на R с линейной регрессией.

29.10.2020 - Все (4 команды) показывают результаты третьего задания (О мерах зависимостей) для выбранного набора данных. Нужно прислать доделанной второе задание (и первое команде 4).

22.10.2020 - Все (4 команды) показывают результаты второго задания (О виде распределений и о сравнении распределений) для выбранного набора данных. Так как до 15.10 ничего не было прислано, то еще раз пишу, что нужно прислать доделанный первичный анализ данных, пока без штрафа, но при дальнейшем игнорировании сроков придется их вводить.

15.10.2020 - Буду рассказывать-показывать я сама. А вам нужно до 15 октября прислать доделанное (и исправленное, если были комментарии 8 октября) первое задание.

08.10.2020 - Все (4 команды) показывают результаты первичного анализа данных для выбранного набора данных. Пример в Rmarkdown, вопросы по коду можно задавать А.И.Коробейникову.

01.10.2020 - Первичный анализ данных.

Про задания

Первичный анализ данных

  1. Выбрать данные. Можно взять стандартные из R, а можно найти в интернете какие-нибудь интересные для вас и их загрузить. При этом нужно, чтобы данные соответствовали повторной независимой выборке (данные, меняющиеся во времени, не годятся, так как такая выборка зависимая (будущее зависит от настоящего и прошлого) и, скорее всего, не из одного и того же распределения, т.е. идут изменения во времени).
  2. Каким-либо образом прочитать данные data; посмотреть на них head(data).
  3. Разобраться в том, что означают признаки.
  4. Определить вид признаков (колич., порядковые, качеств.). Для количеств. признаков определить, непрерывные они или дискретные (в том числе, дискретными могут стать непрерывные признаки, которые измерены с плохой точностью). Как вариант, это можно увидеть, посмотрев на частоту моды.
  5. Если признак порядковый и для него использованы текстовые метки, то проверить, что кодировка текстовых меток соответствует их естественному порядку.
  6. Построить matrix plot (pairs, таблица с попарными скаттерплотами), его долго разглядывать с точки зрения outliers, неоднородностей, вида распределений, вида зависимостей (линейные/нелинейные) и пр.
  7. Если есть сильно несимметричные (с хвостом вправо) распределения на положительной полуоси, то прологарифмировать их и снова построить matrix plot - зависимости должны стать более линейными, а распределения более симметричными.
  8. Если есть outliers, то попробовать объяснить причину (ошибка в данных, особые индивиды) и удалить их, поставив NA на их место; исходные данные не надо портить, скопируйте в новые, а потом уже что-то меняйте.
  9. Если есть неоднородности (например, видны два облака точек), то объяснить причину (найти категоризующую переменную, объясняющую эту неоднородность).
  10. В дальнейшем вид matrix plots, распределения признаков и корреляции анализировать отдельно для неоднородных групп, используя factor.
  11. Можно также посмотреть на descriptive statistics с точки зрения минимумов-максимумов, асимметрии, эксцесса и пр.

О виде распределений и о сравнении распределений

  1. Выберите в данных категоризующую переменную. По ней выборка разбивается на подвыборки (например, случай, когда вы увидели неоднородность при первичном анализе, но необязательно).
  2. Сначала имеет смысл посмотреть на сравнение сравнение распределений в группах с помощью ящиков с усами (box plot). С помощью ящиков с усами там, где групп больше двух, можно выбрать две из них, которые интересно сравнить с помощью критериев.
  3. Проверьте, близко ли распределение выбранных признаков к нормальному. Можно использовать различные критерии для проверки этой гипотезы, можно рисовать normal probability plot.
  4. Сравните группы между собой. Можно сравнить по разным критериям, например, критерий t-test, который умеет обнаруживать разницу в среднем. Непараметрический аналог, с помощью которого можно обнаруживать сдвиг - критерий Манна-Уитни/Вилкоксона.
  5. Но распределения могут отличаться не только сдвигом. Рассмотрите критерий Колмогорова-Смирнова, который может обнаружить, если распределения отличаются формой.
  6. Если есть признаки, которые характеризуют одно и то же (например, время, которое человек тратит на сон, и время на работу), то аналогично производится сравнение по t-критерию и по непараметрическим критериям, они называются парными.

Об анализе зависимостей

  1. Вспомните, какие бывают виды зависимостей и чем они измеряются, по каким формулам. Посмотрите на основе matrix plot, какие зависимости у вас в данных. Не забудьте, что при неоднородных данных изучать зависимости имеет смысл только внутри групп по-отдельности.
  2. Начинать нужно с анализа линейных зависимостей. На основе коэффициента корреляции Пирсона нужно проинтерпретировать значимые зависимости. При наличие в данных пропусков обратите внимание на выбор между casewise and pairwise MD deletion (в чем разница, какие недостатки и достоинства у этих вариантов?).
  3. Затем можно переходить к ранговым коэффициентам корреляции. Расскажите, при каких условиях коэффициенты корреляции Пирсона и Спирмена примерно равны. Приведите примеры, когда один из них больше другого и наоборот. Сравните результаты на ваших данных. Если при сравнении буду найдены заметные различия в результатах, то попробуйте объяснить причину.
  4. Проинтерпретируйте найденные корреляции - можно ли сказать, что является причиной, что следствием. Если есть какая-то другая причина, которая влияет одновременно на оба признака (скрытый фактор), то попробуйте убрать его влияние с помощью частных корреляций.

Линейная регрессия

  1. Нужно выбрать, какую переменную вы хотите предсказывать. Вы выбираете признаки, по которым вы будете предсказывать. Делаете линейную регрессию (функция lm).
  2. Изучаете результат. В частности, значима ли регрессия (т.е. имеет ли смысл ей пользоваться для предсказания). Смотрите на коэффициенты регрессии, их значимость, их интерпретацию.
  3. Далее есть три проблемы, из-за которых результаты регрессии могут быть неправильными – линейная модель регрессии не соответствует данным, в данных могут быть сильно зависимые «независимые» переменные и также могут быть outliers. Если данные были предварительно хорошо подготовлены, то проблемы с outliers там менее вероятны. Поэтому сначала можно заняться проблемой зависимости. В общем случае, нет строгой рекомендации, в каком порядке нужно решать перечисленные проблемы.
  4. Надо учесть проблему, которая возникают, если предикторы сильно зависимы. На примере с двумя «независимыми» признаками пишете формулы и показываете, как корреляция между признаками влияет на качество оценок регрессии.
  5. Пытаетесь уменьшить количество предикторов. Для этого есть информационные критерии AIC, BIC.
  6. Строите обычную регрессию по выбранному числу признаков. Изучаете остатки (residuals), распределение, Сначала смотрите на нормальность остатков (зачем нужно на это смотреть?), затем можно посмотреть на зависимость Residuals vs Predicted.
  7. Далее переходите к поиску outliers. Напоминаю, что выброс по отношению к регрессии - это наблюдение, которое влияет на результат (leverage и Cook distance изменяют то, насколько наблюдение влияет).
  8. Итог: результат линейной регрессии, для которой проверена адекватность модели, значимость, отсутствие outliers, проинтерпретированы коэффициенты регрессии.
  9. Спрогнозируйте что-нибудь по построенной регрессионной модели. Постройте доверительный и предсказательный интервалы для предсказания.

Анализ главных компонент

Провести анализ главных компонент в данном случае означает следующее:

  1. Посмотреть график собственных чисел, прокомментировать его.
  2. Проинтерпретировать главные компоненты (их связь с исходными признаками), используя значения собственные вектора, а также двумерные диаграммы факторных весов (в круге).
  3. Посмотреть на двумерные графики нормированных значений главных компонент (значений факторов), увидеть, есть ли неоднородность в данных и есть ли выделяющиеся наблюдения.
  4. Проинтерпретировать, в чем состоит неоднородность (если она есть) и чем выделяются выделяющиеся наблюдения.
  5. Убрать выделяющиеся наблюдения, которые проинтерпретированы как выбросы, и неоднородность и затем провести АГК заново.

Классификация

  1. Разбейте данные на две части, где будете строить классификацию, и где будете ее проверять (train и test). Далее работа идет только на train.
  2. Посмотрите, как выглядят данные на графике pairs и в плоскости первых двух главных компонент, с раскраской по классам. При необходимости, преобразуйте данные (уберите outliers, прологарифмируйте признаки).
  3. Проведите классификацию с помощью линейного дискриминантного анализа. Подумайте, какие априорные вероятности вы хотите задать.
  4. Посмотрите на значимость дискриминации. Посмотрите, как выглядят данные в плоскости первых двух канонических переменных.
  5. Посмотрите на качество классификации - таблицу ошибок классификации, по данным, по кросс-валидации, по test данным.
  6. Постройте ROC-кривые, проинтерпретируйте (во множественном числе, так как можно строить на train, а можно - на test).
  7. Попробуйте применить какой-нибудь другой метод, например, QDA или еще какой-то другой. Постройте для него ROC-кривую, сравните с ROC-кривой для LDA.

Кластерный анализ

  1. Посмотрите, как выглядят данные на графике pairs и в плоскости первых двух главных компонент. При необходимости, преобразуйте данные (уберите outliers, прологарифмируйте признаки).
  2. Примените метод k-means для разного числа классов. Посмотрите на результат на графике pairs с раскраской.
  3. Применить метод иерархической кластеризации с разными правилами объединения кластеров. Посмотрите на получившиеся деревья.
  4. Примените метод разделения смеси нормальных распределений с разными ограничениями на модель (одинаковые ковариационные матрицы, разные, разные диагональные, …). Посмотрите на результат на графике pairs с раскраской и в плоскости первых двух главных компонент.
study/fall2020/5stat_practice.1606409567.txt.gz · Последнее изменение: 2020/11/26 19:52 — nina
Наверх
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0