Подскажите с нейросетью |
Здравствуйте, гость ( Вход | Регистрация )
Подскажите с нейросетью |
17.02.2017 - 00:01
Сообщение
#16
|
|
Группа: Пользователи Сообщений: 1202 Регистрация: 13.01.2008 Из: Челябинск Пользователь №: 4704 |
Разберусь с 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 |
|
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' |
|
17.02.2017 - 17:52
Сообщение
#18
|
|
Группа: Пользователи Сообщений: 29 Регистрация: 10.02.2017 Пользователь №: 29307 |
nokh, а такой R^2 может быть вызван малым кол-вом наблюдений?
|
|
18.02.2017 - 00:30
Сообщение
#19
|
|
Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 |
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 |
|
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 |
|
18.02.2017 - 12:40
Сообщение
#21
|
|
Группа: Пользователи Сообщений: 29 Регистрация: 10.02.2017 Пользователь №: 29307 |
as.numeric(mydata$classvar)+1
показал, что дело не текстовых категориях. Значит можно. |
|
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) |
|
11.03.2017 - 15:12
Сообщение
#23
|
|
Группа: Пользователи Сообщений: 29 Регистрация: 10.02.2017 Пользователь №: 29307 |
Коллеги, я стал работать с pls регрессией, с интерпретацией результатов
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 .99 что значит CV и что значит adjCV какое вывод по этим цифрам я могу сделать? И что значит понятие компоненты в этой регрессии? nokh, вопрос к Вам, поскольку Вы прогали эту регрессию, возможно сможете дать небольшой ликбез. |
|
11.03.2017 - 23:52
Сообщение
#24
|
|
Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 |
VALIDATION: RMSEP Cross-validated using 24 consecutive segments. что значит CV и что значит adjCV какое вывод по этим цифрам я могу сделать? Фелор, вы что _реально_ про кроссвалидацию ничего не слышали? И какого интересно "ответа" ждете, "зачитывания вслух" странички из педивикии? Конкретная реализация в пакете 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. |
|
12.03.2017 - 07:38
Сообщение
#25
|
|
Группа: Пользователи Сообщений: 1202 Регистрация: 13.01.2008 Из: Челябинск Пользователь №: 4704 |
nokh, а такой R^2 может быть вызван малым кол-вом наблюдений? Для других показателей число наблюдений также мало, но тем не менее этого числа хватило. Поэтому вряд-ли, хотя доказать этого пока нельзя. Вы находитесь в более выгодном положении, поскольку имеете не один набор данных, а много. Их анализ позволит уже более конкретно определиться с причиной. Возможно, какие-то показатели всегда "шумят" сильнее, например, в силу меньшей концентрации или влияния на них других факторов. Коллеги, я стал работать с pls регрессией, с интерпретацией результатов ... И что значит понятие компоненты в этой регрессии? nokh, вопрос к Вам, поскольку Вы прогали эту регрессию, возможно сможете дать небольшой ликбез. Про компоненты нужно почитать. Если не знакомы с 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, тогда как в традиционной прикладной статистике наработаны другие, включая чисто графические подходы. Я этим способом выявлять надёжные предикторы не пользуюсь, польскольку работаю обычно с небольшими наборами данных, а в них - всё не особо надёжно Полагаю, у вас - та же ситуация, поэтому с числом необходимых и достаточных для прогноза компонент проще определиться по графику каменистой осыпи (scree plot). Число компонент равно числу предикторов, поэтому в вашем случае начальное решение должно содержать не 2, а 3 компоненты. Сообщение отредактировал nokh - 12.03.2017 - 08:17 |
|