Форум врачей-аспирантов

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V  < 1 2  
Добавить ответ в эту темуОткрыть тему
> Подскажите с нейросетью
nokh
сообщение 17.02.2017 - 00:01
Сообщение #16





Группа: Пользователи
Сообщений: 1202
Регистрация: 13.01.2008
Из: Челябинск
Пользователь №: 4704



Цитата(nokh @ 14.02.2017 - 10:14) *
Разберусь с PLS (в R - в частности) - отпишусь в эту ветку.

C PLS-регрессией по алгоритму NIPALS всё более-менее ясно. В примере топикстартера 93,3% дисперсии набора Х объясняют 47,9% дисперсии набора Y если брать только первую компоненту. Набор Х очень хорошо прогнозирует Y1 (коэффициент детерминации R2=0,946), Y2 (0,946) и Y3 (0,881) и безобразно Y4 (0,096) и Y6 (0,072). Даже если брать все три компоненты ситуация с Y4, Y5 и Y6 неважная (R2 около 0,15). Это значит, что для надёжного прогноза химии (Y) одной рецептуры (X) недостаточно, нужно учитывать ещё что-то (может физические факторы, продолжительность процесса и т.п.). В целом же и по одной компоненте весьма похоже прогнозируется:
y1 y2 y3 y4 y5 y6 y7
103,3 -3,3 48,1 83,8 7,8 8,3 23,0
84,6 15,4 68,7 77,5 11,3 11,1 16,6
77,9 22,1 76,2 75,3 12,6 12,1 14,3
72,0 28,0 82,6 73,3 13,7 13,0 12,3
62,3 37,7 93,3 70,0 15,5 14,4 9,0

С R тоже есть прогресс, но пока он позволил только разочароваться в пакете pls:

1) результаты по алгоритму NIPALS (method="oscorespls") не совпадают с расчётами в других пакетах (Statistica, Tanagra)
2) результаты для 4 разных методов "kernelpls", "widekernelpls", "simpls", "oscorespls" дают одинаковые результаты (по крайней мере для этого примера)
3) для одной компоненты не может выдать summary (остальное считает):
> res.nipals<-mvr(Y ~ X, ncomp = 1, method = "oscorespls", scale = TRUE)
> summary(res.nipals)
Data: X dimension: 5 3
Y dimension: 5 7
Fit method: oscorespls
Number of components considered: 1
TRAINING: % variance explained
Ошибка в dimnames(tbl) <- list(c("X", yvarnames), paste(1:object$ncomp, :
длина 'dimnames' [1] не равна протяженности многомерной матрицы
4) вместо регрессионных коэффициентов предикторов пакет выдаёт их умноженными на стандартные отклонения предикторов.

Буду смотреть другие пакеты с PLSR.

Сообщение отредактировал nokh - 17.02.2017 - 00:18
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
Fedor_Petuhov
сообщение 17.02.2017 - 16:41
Сообщение #17





Группа: Пользователи
Сообщений: 29
Регистрация: 10.02.2017
Пользователь №: 29307



Да, я на stackoverflow почитал про нее, но не все сразу, я сначала одно попробую, попроверяю свои гипотезы, а потом другое. По поводу простого neuralnet
p2004r, может ли эта ошибка возникать из-за того, что classvar у меня представлена как текстовые категории, или копать в другое место нужно. Больше вопросов нет.


> neuralnet(y1+y2+y3~classvar+x1+x2+x3, infert,
+ err.fct="ce", linear.output=FALSE, likelihood=TRUE,data=mydata)
Error in as.vector(as.integer(hidden)) :
(list) object cannot be coerced to type 'integer'
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
Fedor_Petuhov
сообщение 17.02.2017 - 17:52
Сообщение #18





Группа: Пользователи
Сообщений: 29
Регистрация: 10.02.2017
Пользователь №: 29307



nokh, а такой R^2 может быть вызван малым кол-вом наблюдений?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
p2004r
сообщение 18.02.2017 - 00:30
Сообщение #19





Группа: Пользователи
Сообщений: 1091
Регистрация: 26.08.2010
Пользователь №: 22699



Цитата(nokh @ 17.02.2017 - 00:01) *
C PLS-регрессией по алгоритму NIPALS всё более-менее ясно. В примере топикстартера 93,3% дисперсии набора Х объясняют 47,9% дисперсии набора Y если брать только первую компоненту. Набор Х очень хорошо прогнозирует Y1 (коэффициент детерминации R2=0,946), Y2 (0,946) и Y3 (0,881) и безобразно Y4 (0,096) и Y6 (0,072). Даже если брать все три компоненты ситуация с Y4, Y5 и Y6 неважная (R2 около 0,15). Это значит, что для надёжного прогноза химии (Y) одной рецептуры (X) недостаточно, нужно учитывать ещё что-то (может физические факторы, продолжительность процесса и т.п.). В целом же и по одной компоненте весьма похоже прогнозируется:
y1 y2 y3 y4 y5 y6 y7
103,3 -3,3 48,1 83,8 7,8 8,3 23,0
84,6 15,4 68,7 77,5 11,3 11,1 16,6
77,9 22,1 76,2 75,3 12,6 12,1 14,3
72,0 28,0 82,6 73,3 13,7 13,0 12,3
62,3 37,7 93,3 70,0 15,5 14,4 9,0

С R тоже есть прогресс, но пока он позволил только разочароваться в пакете pls:

1) результаты по алгоритму NIPALS (method="oscorespls") не совпадают с расчётами в других пакетах (Statistica, Tanagra)
2) результаты для 4 разных методов "kernelpls", "widekernelpls", "simpls", "oscorespls" дают одинаковые результаты (по крайней мере для этого примера)
3) для одной компоненты не может выдать summary (остальное считает):
> res.nipals<-mvr(Y ~ X, ncomp = 1, method = "oscorespls", scale = TRUE)
> summary(res.nipals)
Data: X dimension: 5 3
Y dimension: 5 7
Fit method: oscorespls
Number of components considered: 1
TRAINING: % variance explained
Ошибка в dimnames(tbl) <- list(c("X", yvarnames), paste(1:object$ncomp, :
длина 'dimnames' [1] не равна протяженности многомерной матрицы
4) вместо регрессионных коэффициентов предикторов пакет выдаёт их умноженными на стандартные отклонения предикторов.

Буду смотреть другие пакеты с PLSR.


1. тонко! пакету уже как бы 15 лет исполнилось, я бы у себя "в конфигурации" искал проблему в таком случае (ну или написал авторам на почту поддержки пакета если был бы уверен в проблеме)

2. и как удалось посмотреть _что_ считает статистика? исходный код есть? вот что вообще за вычисления делает статистика? в случае {pls} достаточно посмотреть в исходный код. не нравиться {pls} -- есть еще реализации, например https://cran.r-project.org/web/packages/matrixpls/index.html

PS собственно вот http://stats.stackexchange.com/questions/2...data-not-equiv#

Сообщение отредактировал p2004r - 18.02.2017 - 00:41


Signature
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
100$
сообщение 18.02.2017 - 02:03
Сообщение #20





Группа: Пользователи
Сообщений: 902
Регистрация: 23.08.2010
Пользователь №: 22694



NIPALS 1966 г.р. {pls} v. 2.6-0 датируется 18/12/2016. Словом, переходите на SIMPLS (de Jong,1993), ребята.

Что считает Statistica тайной за семью печатями не является: Тыц!

Сообщение отредактировал 100$ - 18.02.2017 - 02:12
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
Fedor_Petuhov
сообщение 18.02.2017 - 12:40
Сообщение #21





Группа: Пользователи
Сообщений: 29
Регистрация: 10.02.2017
Пользователь №: 29307



as.numeric(mydata$classvar)+1
показал, что дело не текстовых категориях. Значит можно.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
Fedor_Petuhov
сообщение 4.03.2017 - 18:28
Сообщение #22





Группа: Пользователи
Сообщений: 29
Регистрация: 10.02.2017
Пользователь №: 29307



закрываю вопрос) стаковерфлёу в помощь был))
вот так правильно делать, мало ли на будущее у кого-то будет такой вопрос
pr.nn <- compute(nn,test_[,1:3])

pr.nn_ <- pr.nn$net.result*(max(mydata$y1+mydata$y2+mydata$y3+mydata$y4+mydata$y5+mydata$y6)-min(mydata$y1+mydata$y2+mydata$y3+mydata$y4+mydata$y5+mydata$y6))
+min(mydata$y1+mydata$y2+mydata$y3+mydata$y4+mydata$y5+mydata$y6)
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
Fedor_Petuhov
сообщение 11.03.2017 - 15:12
Сообщение #23





Группа: Пользователи
Сообщений: 29
Регистрация: 10.02.2017
Пользователь №: 29307



Коллеги, я стал работать с pls регрессией, help.gif с интерпретацией результатов

plsr(formula = y1 + y2 + y3 + y4 ~ ., ncomp = 2, data = reg, method = "oscorespls", scale = TRUE, validation = "CV", segments = 9, segment.type = "consecutive", length.seg = 3)
> summary(plsFit)
Data: X dimension: 70 3
Y dimension: 70 1
Fit method: oscorespls
Number of components considered: 2

VALIDATION: RMSEP
Cross-validated using 24 consecutive segments.
(Intercept) 1 comps 2 comps
CV 17.15 8.794 8.082
adjCV 17.15 8.785 8.067

TRAINING: % variance explained
1 comps 2 comps
X 78.12 94.41
y1 + y2 + y3 + y4 75.56 mega_shok.gif.99

что значит CV и что значит adjCV
какое вывод по этим цифрам я могу сделать?

И что значит понятие компоненты в этой регрессии?

nokh, вопрос к Вам, поскольку Вы прогали эту регрессию, возможно сможете дать небольшой ликбез.smile.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
p2004r
сообщение 11.03.2017 - 23:52
Сообщение #24





Группа: Пользователи
Сообщений: 1091
Регистрация: 26.08.2010
Пользователь №: 22699



Цитата(Fedor_Petuhov @ 11.03.2017 - 15:12) *
VALIDATION: RMSEP
Cross-validated using 24 consecutive segments.


что значит CV и что значит adjCV
какое вывод по этим цифрам я могу сделать?


Фелор, вы что _реально_ про кроссвалидацию ничего не слышали? И какого интересно "ответа" ждете, "зачитывания вслух" странички из педивикии? smile.gif

Конкретная реализация в пакете pls в нем же и _исчерпывающе_ описана ?pls::crossval (если просто набрать pls::crossval то получите код реализации)
Там же ссылка на литературный источник с описанием теории техники

Код
Mevik, B.-H., Cederkvist, H. R. (2004) Mean Squared Error of Prediction (MSEP) Estimates for
Principal Component Regression (PCR) and Partial Least Squares Regression (PLSR).
Journal of Chemometrics, 18(9), 422?429.


Signature
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
nokh
сообщение 12.03.2017 - 07:38
Сообщение #25





Группа: Пользователи
Сообщений: 1202
Регистрация: 13.01.2008
Из: Челябинск
Пользователь №: 4704



Цитата(Fedor_Petuhov @ 17.02.2017 - 19:52) *
nokh, а такой R^2 может быть вызван малым кол-вом наблюдений?

Для других показателей число наблюдений также мало, но тем не менее этого числа хватило. Поэтому вряд-ли, хотя доказать этого пока нельзя. Вы находитесь в более выгодном положении, поскольку имеете не один набор данных, а много. Их анализ позволит уже более конкретно определиться с причиной. Возможно, какие-то показатели всегда "шумят" сильнее, например, в силу меньшей концентрации или влияния на них других факторов.

Цитата(Fedor_Petuhov @ 11.03.2017 - 17:12) *
Коллеги, я стал работать с pls регрессией, help.gif с интерпретацией результатов
...
И что значит понятие компоненты в этой регрессии?
nokh, вопрос к Вам, поскольку Вы прогали эту регрессию, возможно сможете дать небольшой ликбез.smile.gif

Про компоненты нужно почитать. Если не знакомы с PLS, то можно и даже проще начать с анализа главных компонент - это базовая техника для целого семейства методов. Если кратко, то не вся информация в наборе данных важна и/или отлична от случайного шума. Главные компоненты - ряд убывающих по важности (доле объясняемой дисперсии) новых переменных, скомбинированных из исходных переменных. Они обобщают данные и позволяют представить их в пространстве меньшей размерности, поэтому такие методы называют иногда методами редукции данных с обобщением. Работу методов типа анализа избыточности (RDA) можно представить себе так: одно гипероблако облако независимых переменных неподвижно, а второе гипероблако зависимых пременных поворачивается относительно первого так, чтобы такая проекция объяснила максимум дисперсии второго. Первая такая проекция и является первой компонентой. Далее ищется вторая, ортогональная первой, третья, ортогональная перым двум и т.д., но в выложенном вами наборе 2 и 3 ничтожно малы. PLS-регрессия - смещённый вариант RDA, с акцентом не на объяснение дисперсии, а на прогноз.

К сожалению, не было времени разобраться с PLS в R, я тренировался с PLS в пакете tanagra ( http://eric.univ-lyon2.fr/~ricco/tanagra/en/tanagra.html ), который уже был у меня установлен и для которого нашёл в сети понятную мне инструкцию. Как я писал выше, один пакет R мне не понравился и хотя часть вопросов ушла, моя "конфигурация" не позволила сделать прогноз, используя его выкладки на экране и калькулятор в руках, тогда как для tanagra - позволила и результат сошёлся с выдаваемыми пакетом прогнозными значениями. Опробую chemometrics - отпишусь.

По поводу CV вам ответили. Кроссвалидация более популярна в Machine Learning, тогда как в традиционной прикладной статистике наработаны другие, включая чисто графические подходы. Я этим способом выявлять надёжные предикторы не пользуюсь, польскольку работаю обычно с небольшими наборами данных, а в них - всё не особо надёжно smile.gif Полагаю, у вас - та же ситуация, поэтому с числом необходимых и достаточных для прогноза компонент проще определиться по графику каменистой осыпи (scree plot). Число компонент равно числу предикторов, поэтому в вашем случае начальное решение должно содержать не 2, а 3 компоненты.

Сообщение отредактировал nokh - 12.03.2017 - 08:17
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 

2 страниц V  < 1 2
Добавить ответ в эту темуОткрыть тему