Методические указания к лр. 3

install.packages("MASS")

library(MASS)

#загрузка исходных данных (набора Boston) из пакета MASS

Параметр

Значение

crim

уровень преступности на душу населения по городам

zn

 

доля земли под жилую застройку, (под участки площадью более 25000 кв. футов)

indus

доля акров, не связанных с розничной торговлей, на город

chas

Фиктивная переменная Charles River (= 1, если участок граничит с рекой; 0 в противном случае)

nox

концентрация оксидов азота (частей на 10 млн)

rm

среднее количество комнат в доме

age

доля занятых владельцами единиц, построенных до 1940 года

dis

 

средневзвешенное расстояние до пяти бостонских центров занятости

rad

индекс доступности радиальных автомобильных дорог

tax

 

полная ставка налога на имущество за каждые 10 000 долларов стоимости

ptratio

соотношение учеников и учителей по городам

black

lstat

более низкий статус населения (в процентах)

medv

 

медианная стоимость домов, занимаемых владельцами, составляет 1000 долларов

data(Boston)

#Вывод первых 5 строк набора Boston

head(Boston)

#Вывод признака indus перед нормализацией

hist(Boston$indus)

#масштабирование (нормализация) данных, необходимая для исключения

#преобладающего влияния какого-либо параметра на результат прогноза

#метод масштабирования – min-max Normalization

Boston$indus<- (Boston$indus - min(Boston$indus)) / (max(Boston$indus) - min(Boston$indus))



Рис. 1. Пример масштабирования параметра indus обучающей выборки

#выполняем масштабирование остальных параметров обучающей выборки (кроме chas)

hist(Boston$indus)

#делим данные на обучающую и тестовую выборки

set.seed(222)

inp <- sample(2, nrow(Boston), replace = TRUE, prob = c(0.7, 0.3))

train.boston <- Boston[inp==1, ]

head(train.boston)

test.boston <- Boston[inp==2, ]

head(test.boston)

#настройка нейронной сети

install.packages("neuralnet")

library(neuralnet)

set.seed(333)

#паремтры функции neuralnet

  • formula - символьное описание модели, которая должна быть установлена. По умолчанию не указано.
  • data - фрейм данных, содержащий переменные, указанные в формуле. По умолчанию не указано.

  • hidden -  вектор, определяющий количество скрытых слоев и скрытых нейронов в каждом слое. Например, вектор (3,2,1) создает нейронную сеть с тремя скрытыми слоями, первый

из которых состоит из трех, второй - из двух, а третий - из одного скрытого нейрона. По умолчанию:1. 

  • threshold - целое число, задающее порог для частных производных функции ошибки в качестве критерия остановки. По умолчанию: 0,01.

  • rep - количество повторений в тренировочном процессе. По умолчанию: 1.
  • startweights -  вектор, содержащий заданные начальные значения для весов. По умолчанию: случайные числа, полученные из стандартного нормального распределения
  • algorithm - алгоритм - строка, содержащая тип алгоритма. Возможные значения: "backprop", "rprop+", "rprop-", "sag" или "slr". "backprop" относится к традиционному обратному распространению, "rprop+" и "rprop-" относятся к устойчивому обратному распространению с отслеживанием веса и без него, а "sag" и "slr" относятся к модифицированному глобально конвергентному алгоритму (grprop). "sag" и "slr" определяют скорость обучения , которая изменяется в соответствии со всеми остальными параметрами. "sag" относится к наименьшей абсолютной производной, "slr" - к наименьшей скорости обучения. По умолчанию: "rprop+"

  • err.fct - дифференцируемая функция обнаружения ошибок. Можно использовать строки "sse" и "ce", которые относятся к "сумме квадратов ошибок" и "перекрестной энтропии’. По умолчанию: "sse"
  • act.fct  - дифференцируемая функция активации. Строки "logistic" и "tanh" возможны для логистической функции и касательной гиперболы. По умолчанию: "logistic"
  • linear.output - логический. Если act.fct не следует применять к выходным нейронам, значение linear.output должно быть ИСТИННЫМ. По умолчанию: TRUE

  • likelihood - вероятность, логическая. Если функция ошибки равна отрицательной логарифмической функции правдоподобия, вероятность должна быть ИСТИННОЙ. Затем будут рассчитаны информационный критерий Акайке (AIC, Akaike, 1973) и информационный критерий Байеса (BIC, Schwarz, 1978). По умолчанию: FALSE
  • exclude -  вектор или матрица, указывающая веса, которые должны быть исключены из обучения. Матрица с n строками и тремя столбцами исключит n весов, где первый столбец указывает уровень, второй столбец - входной нейрон веса, а третий нейрон - выходной нейрон веса. Если задано в виде вектора, то должна быть известна точная нумерация. Нумерацию можно проверить, используя предоставленный график или сохраненные начальные веса. По умолчанию: NULL
  • constant.weights - вектор, определяющий значения весов, которые исключаются из обучения и рассматриваются как фиксированные. По умолчанию: NULL

n <-neuralnet(chas~crim + zn + indus + nox + rm + age + dis + rad + tax + ptratio + black + lstat + medv,  data = train.boston,        

            hidden = 15,

#количество скрытых нейронов (вершин) в каждом слое

            err.fct = "ce",

            linear.output = FALSE,

            lifesign = 'full',

            rep = 2,

#количество повторений для обучения нейронной сети

                       algorithm = "rprop+", stepmax = 100000)

Рис. 2. Результаты первой и второй итераций

# визуализация построенной нейронной сети (рис. 2), черные линии – веса,

# синие – смещения

Первая итерация дает ошибку (рис. 2): 0.06541, вторая – 0.01633. Для дальнейших вычислений будем использовать вторую итерацию.
plot(n, rep = 2)# может быть здесь rep=2


Рис. 3. Визуализация построенной нейронной сети

 

# генерация ошибки нейронной сети по весам между входом, скрытыми слоями и выходом

n$result.matrix


Рис. 4. Фрагмент результатов генерации ошибки

# функция subset используется для исключения зависимой переменной из тестовой выборки

# (рис. 5)

test <- subset(test.boston, select = c("crim","zn","indus","nox","rm","age","dis","rad","tax","ptratio","black","lstat","medv"))

head (test)

Рис. 5. Результат работы функции subset

#Функция compute создает переменную прогноза

n.results <- compute (n, test)

# переменная result содержит сводную таблицу прогнозируемых и фактических результатов

results <- data.frame (actual = test.boston $ chas, prediction = n.results $ net.result)

results


Рис. 6.  Фрагмент сводной таблицы прогнозируемых и фактических результатов

# составление матрицы путаницы

# функция sapply округляет результаты

roundres<-sapply(results,round,digits=0)

roundres1 =data.frame(roundres)

attach(roundres1)

#вывод матрицы путаницы*(см. примечание) (рис. 7)

table(actual,prediction)


Рис. 7.  Фрагмент сводной таблицы прогнозируемых и фактических результатов

Метрика accuracy составляет 0, 89 или 89%.

Этот показатель может быть улучшен ручным подбором количества скрытых слоев и количества  нейронов в каждом из них.


В таблице 6.7 приведены метрики проведенной классификации:

Таблица 1.  Метрики проведенной классификации

 

Метрики

accuracy

error-rate

TP rate

FP rate

(recall)

TN rate

precision

F-measure

 

0.89

0.11

0.95

0.85

0.15

0.92

0.88


#Еще один вариант вывода матрицы путаницы
#Устанавливаем библиотеку  caret
install.packages("caret")
library(caret)
confmatr <- table(prediction, actual)

confusionMatrix(confmatr)
*

1.      Матрица неточностей (матрица путаницы) (confusion matrix) – таблица, в которой строки являются реально существующие объекты некоторого класса. Столбцы таблицы – прогнозируемые объекты некоторого класса. На основе матрицы может быть вычислена метрика accuracy. Например,

Имеется 12 изображений автомобилей. Из них 7 – обычные автомобили, 5 – болиды.  Классификатор правильно определил 5 обычных автомобилей из 7, а два были ошибочно определены, как болиды. Из 5 болидов классификатор верно распознал 3 болида и 2 были распознан, как обычный автомобиль. В матрице неточности все примеры, принадлежащие одному классу из двух, считаются положительными (positive), а все пример, принадлежащие другому классу – отрицательными (negative). Значения за пределами диагонали рассматриваются, как ошибки. В примере 2 обычных автомобиля и 2 болида были неправильно распознаны. То есть, из 12 изображений 4 изображения распознаны с ошибками, а 8 – правильно.

 

Таблица 6.1. Матрица неточностей

 


             Фактический класс

 

Прогнозируемый класс

Обычный автомобиль

Болид

Обычный автомобиль

5 (TP)

2 (FN)

Болид

2 (FP)

3 (TN)

2.      Accuracy (точность) метрика бинарной классификации - доля правильных ответов модели. Измеряется отношением числа правильных ответов модели, к числу всех объектов. Эта метрика измеряет количество верно классифицированных объектов относительно общего количества всех объектов. Метрику не следует использовать  для несбалансированных классов, (большое количество  экземпляров одного класса и небольшое другого класса)

                                                                               

где

-         TP       - количество положительных примеров, определенных правильно

-        TN        -  количество отрицательных примеров, определенных правильно

-         FP       - количество положительных примеров, определенных ошибочно

-         FN       - количество отрицательных примеров, определенных ошибочно

Например, из 100 писем, не являющихся спамом, 90 классификатор определил верно ( ), и из 10 спам-писем, 5 классификатор определил верно

3.                  TP rate (чувствительность) или recall (эффективность) – процент верно классифицированных объектов рассматриваемого класса:                            


4.                  FP rate – количество объектов, другого класса, ошибочно распознанных, как объекты рассматриваемого класса:

                         

5.                  TN rate (специфичность (specificity)) – количество объектов, другого класса, ошибочно распознанных, как объекты рассматриваемого класса:

                                         

6.                  Precision (точность) - процент верно классифицированных объектов,  отнесенных алгоритмом к рассматриваемому классу:

                                       

7.                  Error rate (misclassification error) - ошибка неправильной классификации:        

                                       

8.                  Среднее гармоническое precision и recall:

                        

9.      Корень из среднеквадратичной ошибки (RMSE) (Root Меаn Squared Error) (RMSD) или среднеквадратичное отклонение (Root Меаn Squared Deviation) - метрика регрессии, в которой каждая из ошибок возводится в квадрат, что усиливает значимость такой ошибки. В результате – можно избежать крупных ошибок.

,                                            

          где  MSE - среднеквадратичная ошибка,  - оцениваемый параметр,   – правило для вычисления оценки.

Последнее изменение: Пятница, 21 марта 2025, 01:39