Значение параметра S = 90294
Загружаем таблицу
df=read.csv("F://ML/ML Block 4/Рубежный контроль 1/Optimization.txt", header = TRUE, sep = "\t")
Формируем случайную выборку случайного размера из исходной таблицы df.
set.seed(90294)
n = 600+sample(nrow(df)-600,1)
set.seed(90294)
rand_sample=df[sample(nrow(df), n), ]
Определить размер выборки, количество переменных, типы переменных, наличие факторов(категориальных признаков) и пропущенных значений
str(rand_sample)
## 'data.frame': 5112 obs. of 10 variables:
## $ States : int 5 9 4 10 8 10 10 8 9 2 ...
## $ Params : int 8 6 3 11 7 8 12 8 16 2 ...
## $ Trial : int 17 2 3 12 4 14 17 2 11 25 ...
## $ Time : num 3.098 0 0.672 60.163 8.762 ...
## $ Distance : num 0.54 0.7137 0.0461 0.7783 0.4083 ...
## $ Iterations : int 2 1 2 3 2 21 4 4 10 283 ...
## $ ResFit : num 0.432 0.11 0.251 0.773 0.126 ...
## $ GoalFit : num 0.5 0.9 0.4 1 0.8 1 1 0.8 0.9 0.198 ...
## $ MissFitFlag: int 0 0 0 0 0 1 0 0 0 0 ...
## $ Alg : int 3 4 2 4 4 2 4 2 3 0 ...
Выборка состоит из 5112 наблюдений, 10 переменных, числовых (целочисленных и вещественных).
length(complete.cases(rand_sample))
## [1] 5112
Функция вернула логический вектор длиной = 5112, следовательно пропущенные значения в выборке отсутствуют.
Проверим, какие переменные в таблице - факторы
lapply(rand_sample, is.factor)
## $States
## [1] FALSE
##
## $Params
## [1] FALSE
##
## $Trial
## [1] FALSE
##
## $Time
## [1] FALSE
##
## $Distance
## [1] FALSE
##
## $Iterations
## [1] FALSE
##
## $ResFit
## [1] FALSE
##
## $GoalFit
## [1] FALSE
##
## $MissFitFlag
## [1] FALSE
##
## $Alg
## [1] FALSE
Функция вернула список с FALSE, однако, исходя из описания признаков, можно сказать что факторами являются признаки - MissFitFlag и Alg
При наличии категориальных признаков следует изменить тип соответствующих столбцов таблицы на factor, указав все предусмотренные уровни факторов
factor_alg = rand_sample$Alg
factor_alg=as.factor(factor_alg)
levels(factor_alg)<-c("Градиентный метод","Полный перебор","Перебор 2 параметров","Перебор 3 параметров","Перебор 4 параметров")
factor_mff = rand_sample$MissFitFlag
factor_mff=as.factor(factor_mff)
levels(factor_mff)<-c("Идентифицировано","Не идентифицировано")
Построить выборочные гистограммы распределения времени вычислений, числа итераций и значение меры расхождения модели и наблюдений
time=rand_sample$Time
hist(time,main = "Time")
iterations=rand_sample$Iterations
hist(iterations,xlim=range(0,2500),ylim=range(0,5000),main = "Iterations")
resfit=rand_sample$ResFit
hist(resfit,xlim=range(0,6),main = "ResFit")
Построить диаграмму рассеяния для всех пар числовых признаков
params=rand_sample$Params
states=rand_sample$States
distance=rand_sample$Distance
trial=rand_sample$Trial
goalfit=rand_sample$GoalFit
pairs(~time+iterations+resfit+params+states+distance+trial+goalfit)
С помощью функции cor(x, y) оценить величину линейной зависимости времени вычислений от числа параметров модели
cor(time,params)
## [1] 0.3966927
Построить ящичные графики для пары признаков Time и States , а также пары признаков Time и Params
boxplot(time~states, xlab="States", ylab="Time")
boxplot(time~params,xlab="Params", ylab="Time")
Определить количества наблюдений для каждого алгоритма
table(factor_alg)
## factor_alg
## Градиентный метод Полный перебор Перебор 2 параметров
## 1275 701 1192
## Перебор 3 параметров Перебор 4 параметров
## 1038 906
С помощью функции table(x,y) построить таблицу, содержащую в ячейках число наблюдений для соответствующего алгоритма (x) и соответствующего числа параметров (y)
table(factor_alg,params)
## params
## factor_alg 1 2 3 4 5 6 7 8 9 10 11 12 13
## Градиентный метод 127 126 110 111 100 91 84 86 65 73 58 58 50
## Полный перебор 131 136 112 118 105 99 0 0 0 0 0 0 0
## Перебор 2 параметров 0 136 112 115 107 101 83 94 77 80 67 50 45
## Перебор 3 параметров 0 0 117 111 95 110 88 88 73 73 59 60 37
## Перебор 4 параметров 0 0 0 106 91 93 84 91 67 76 65 54 39
## params
## factor_alg 14 15 16 17 18
## Градиентный метод 42 33 29 16 16
## Полный перебор 0 0 0 0 0
## Перебор 2 параметров 38 30 30 16 11
## Перебор 3 параметров 40 31 29 12 15
## Перебор 4 параметров 46 28 32 19 15
Определить лучший алгоритм в смысле общего количества успешно подогнанных за 200 секунд моделей
table(factor_alg,factor_mff)
## factor_mff
## factor_alg Идентифицировано Не идентифицировано
## Градиентный метод 919 356
## Полный перебор 596 105
## Перебор 2 параметров 1036 156
## Перебор 3 параметров 960 78
## Перебор 4 параметров 843 63
a=table(factor_alg,factor_mff)[,1]
b= table(factor_alg)
a/b
## factor_alg
## Градиентный метод Полный перебор Перебор 2 параметров
## 0.7207843 0.8502140 0.8691275
## Перебор 3 параметров Перебор 4 параметров
## 0.9248555 0.9304636
Можно сделать вывод, что лучший алгоритм - “Перебор 4 параметров”
Построить график зависимости числа ошибок лучшего алгоритма от числа состояний модели
plot(table(states,factor_alg,factor_mff)[,5,2],xlab="States",ylab="Не идентифицировано",type="l")
Построить график зависимости числа ошибок лучшего алгоритма от числа состояний модели
plot(table(params,factor_alg,factor_mff)[,5,2],xlab="States",ylab="Не идентифицировано",type="l")