Лабораторная работа №2

Андрей Чепоров

Введение

В данной лабораторной работе рассматриваются методы выбора признаков с использованием пакетов CARET, FSelector, Boruta и arules в языке R. Выполняется анализ данных, их дискретизация и построение графиков значимости признаков.


Задание 1: Графический разведочный анализ

1.1 Установка и загрузка пакетов

install.packages("caret")
library(caret)

1.2 Создание данных для анализа

set.seed(123)
x <- matrix(rnorm(50*5), ncol=5)
y <- factor(rep(c("A", "B"), 25))

1.3 Графический разведочный анализ

featurePlot(x, y)

1.4 Сохранение графика

jpeg("featurePlot_output.jpg")
featurePlot(x, y)
dev.off()

Был проведен анализ признаков с помощью функции featurePlot(), который позволил выявить различия между классами A и B. Сохранение графика в .jpg формате обеспечивает удобство представления результатов.


Задание 2: Оценка важности признаков

2.1 Установка и загрузка пакетов

install.packages("FSelector")
library(FSelector)

2.2 Использование набора данных iris

data(iris)

2.3 Определение важности признаков

weights <- information.gain(Species ~ ., iris)
print(weights)

Метод information.gain из пакета FSelector выявил наиболее важные признаки в наборе iris. Наибольшую значимость показали Petal.Width и Petal.Length, что свидетельствует об их высокой информативности для задачи классификации.


Задание 3(1): Дискретизация данных

3.1 Установка пакета arules

install.packages("arules")
library(arules)

3.2 Применение различных методов дискретизации

discretize(iris$Sepal.Length, method = "interval", categories = 4) # равная ширина интервала
discretize(iris$Sepal.Length, method = "frequency", categories = 4) # равная частота
discretize(iris$Sepal.Length, method = "cluster", categories = 4) # кластеризация
discretize(iris$Sepal.Length, method = "fixed", breaks = c(4, 5, 6, 7)) # фиксированные границы

Функция discretize() позволила преобразовать непрерывную переменную Sepal.Length в категориальную с использованием различных методов. Выбор метода дискретизации зависит от задачи анализа.


Задание 3(2): Выбор значимых признаков с Boruta

4.1 Установка и загрузка пакета Boruta

install.packages("mlbench")
install.packages("Boruta")
library(mlbench)
library(Boruta)

4.2 Загрузка набора данных Ozone

data(Ozone, package = "mlbench")
Ozone_clean <- na.omit(Ozone) # Убираем пропущенные значения

4.3 Запуск алгоритма Boruta

boruta_result <- Boruta(V4 ~ ., data = Ozone_clean, doTrace = 2)
print(boruta_result)

4.4 Построение графика важности признаков

plot(boruta_result, main = "Feature Importance")

Метод Boruta помог определить значимые признаки для переменной V4 в наборе данных Ozone. К важным признакам относятся V1, V5, V6, V7, V8, V9, V11, V12, V13, тогда как V2 и V3 были отвергнуты как неинформативные. График boxplot показывает распределение значимости признаков.