multifactor dimensionality reduction |
Здравствуйте, гость ( Вход | Регистрация )
multifactor dimensionality reduction |
21.03.2012 - 20:50
Сообщение
#61
|
|
Группа: Пользователи Сообщений: 63 Регистрация: 20.03.2012 Из: Ташкент Пользователь №: 23582 |
вот протокол исключения параметров из модели Код Progres ~ Shunt + cholesterin + diabetus.melitus + tip.1 + tip.2 Что интересно у меня нелинейная модель, но попробовал два варианта:
По п. 1 модель дала сепарабельность 96.77% т.е. в 60 из 62 наличие или отсутствие Прогресса было вычислено правильно. Теоретически подогнать модель можно и под 100% сепарабельность, но практически нельзя, т.к. модель со 100% сепарабельностью, полученная на обучающей выборке (31 пример) нестационарна. Т.е. на контрольной выборке (тоже 31 пример) имеет значительно отличающиеся матожидание и дисперсию, вычисленные по остаткам на выборке обучающей. А нестационарная модель нерепродуктивна, т.е. может быть опровергнута независимыми экспериментами. По п. 2 модель дала сепарабельность 75.81% т.е. в 47 из 62 случаев наличие или отсутствие Прогресса было вычислено правильно. Но модель нестационарна, даже по количеству распознанных Прогрессов - на обучающей выборке их 32, а на контрольной только 15. Да впрочем почему модель нестационарна понять не сложно: все признаки кроме холестерина бинарны и распределены неравномерно, т.е. добиться более или менее приемлемой стационарности при таких данных можно только на очень больших выборках. Сообщение отредактировал YVR - 21.03.2012 - 20:51 Yury V. Reshetov |
|
22.03.2012 - 01:17
Сообщение
#62
|
|
Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 |
Что интересно у меня нелинейная модель, но попробовал два варианта:
По п. 1 модель дала сепарабельность 96.77% т.е. в 60 из 62 наличие или отсутствие Прогресса было вычислено правильно. Теоретически подогнать модель можно и под 100% сепарабельность, но практически нельзя, т.к. модель со 100% сепарабельностью, полученная на обучающей выборке (31 пример) нестационарна. Т.е. на контрольной выборке (тоже 31 пример) имеет значительно отличающиеся матожидание и дисперсию, вычисленные по остаткам на выборке обучающей. А нестационарная модель нерепродуктивна, т.е. может быть опровергнута независимыми экспериментами. По п. 2 модель дала сепарабельность 75.81% т.е. в 47 из 62 случаев наличие или отсутствие Прогресса было вычислено правильно. Но модель нестационарна, даже по количеству распознанных Прогрессов - на обучающей выборке их 32, а на контрольной только 15. Да впрочем почему модель нестационарна понять не сложно: все признаки кроме холестерина бинарны и распределены неравномерно, т.е. добиться более или менее приемлемой стационарности при таких данных можно только на очень больших выборках. Все можно проверить бутстрепом Код > ci.auc(roc.model.f) 95% CI: 0.6836-0.9026 (DeLong) > ci.auc(roc.model.f,method="bootstrap") 95% CI: 0.6677-0.8945 (2000 stratified bootstrap replicates) > ci.auc(roc.model) 95% CI: 0.7209-0.926 (DeLong) > ci.auc(roc.model,method="bootstrap") 95% CI: 0.7126-0.9164 (2000 stratified bootstrap replicates) > если коэффициенты модели, то они тоже могут быть оценены Код r.boot <- t(replicate(200, as.numeric((glm(Progres ~ Shunt + cholesterin + diabetus.melitus + tip.1 + tip.2, family=binomial(logit), data.sh.f[sample.int(length(data.sh.f[,1]), replace = TRUE),]))$coefficients))) parallel(r.boot, horizontal.axis=FALSE) безусловно случаев крайне немного даже для сколько нибудь уверенных выводах даже для линейной модели |
|
23.03.2012 - 09:37
Сообщение
#63
|
|
Группа: Пользователи Сообщений: 63 Регистрация: 20.03.2012 Из: Ташкент Пользователь №: 23582 |
Собрал экспертную систему в Excel файле. Вычисляет вероятность Progress по данным из выборки.
probability.zip ( 13,49 килобайт ) Кол-во скачиваний: 240 Yury V. Reshetov |
|
23.03.2012 - 16:35
Сообщение
#64
|
|
Группа: Пользователи Сообщений: 42 Регистрация: 14.11.2011 Пользователь №: 23301 |
так а в MDR можно что то сделать???? если да то подскажите как. Спасибо!
|
|
23.03.2012 - 17:25
Сообщение
#65
|
|
Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 |
Ну нелинейно так нелинейно
Итак randomForest, он сразу пишет бутстреп оценку насколько можно доверять его результатам (естественно обучающую выборку пилит со 100% точностью) Код > names(data.sh.f) [1] "X..bolnogo" "AIK" "CA" [4] "Progres" "OP" "Shunt" [7] "Srok.gruppy" "vozrast" "IMT" [10] "Stepen.Oz." "pol" "tip.krovoobraschenija" [13] "ChSS" "AD" "AG.therapia" [16] "Statiny" "cholesterin" "stenoz.a.renalis" [19] "stenoz.arterij.nog" "insult.v.anamnese" "diabetus.melitus" [22] "tip.1" "tip.2" "tip.3" [25] "statin.ter" "statin.break" "statin.doz" > randomForest(data.sh.f[,-c(1,4,16,12)], y=factor(data.sh.f$Progres)) Call: randomForest(x = data.sh.f[, -c(1, 4, 16, 12)], y = factor(data.sh.f$Progres)) Type of random forest: classification Number of trees: 500 No. of variables tried at each split: 4 OOB estimate of error rate: 40.32% Confusion matrix: 0 1 class.error 0 15 14 0.4827586 1 11 22 0.3333333 > важность переменных > randomForest(data.sh.f[,c(7,8,9,17)], y=factor(data.sh.f$Progres)) Call: randomForest(x = data.sh.f[, c(7, 8, 9, 17)], y = factor(data.sh.f$Progres)) Type of random forest: classification Number of trees: 500 No. of variables tried at each split: 2 OOB estimate of error rate: 40.32% Confusion matrix: 0 1 class.error 0 18 11 0.3793103 1 14 19 0.4242424 varImpPlot(randomForest(data.sh.f[,-c(1,4,16,12)], y=factor(data.sh.f$Progres)), type=2) ну типа вот нелинейная важность данных для классификации. присоединим картинку как он классифицирует по первым самым важным. а не такая плохая модель Код > m.rf <-glm(Progres ~ Srok.gruppy + cholesterin + IMT + vozrast ,
+ family=binomial(logit), + data.sh.f) > roc.m.rf.f <- roc(data.sh.f$Progres, # данные из выборки + predict(m.rf, type="response")) # предсказание модели > densityplot( ~ predict(m.rf, + type = "response"), + groups = data.sh.f$Progres, + plot.points = "rug", + auto.key = TRUE) > plot(roc.m.rf.f) Call: roc.default(response = data.sh.f$Progres, predictor = predict(m.rf, type = "response")) Data: predict(m.rf, type = "response") in 29 controls (data.sh.f$Progres 0) < 33 cases (data.sh.f$Progres 1). Area under the curve: 0.7827 > ci.auc(roc.m.rf.f) 95% CI: 0.6579-0.9074 (DeLong) Сообщение отредактировал p2004r - 23.03.2012 - 17:57 |
|