IIS_2023_1/alexandrov_dmitrii_lab_2/readme.md

4.6 KiB
Raw Blame History

Задание

Выполнить ранжирование признаков с помощью указанных по варианту моделей. Отобразить получившиеся значения\оценки каждого признака каждым методом\моделью и среднюю оценку. Провести анализ получившихся результатов. Определить, какие четыре признака оказались самыми важными по среднему значению.

Вариант 1. Модели:

  • Линейная регрессия (LinearRegression)
  • Случайное Лассо (RandomizedLasso)
  • Рекурсивное сокращение признаков (Recursive Feature Elimination RFE)

Запуск программы

Файл lab2.py содержит и запускает программу, аргументов и настройки вроде не требует,

Описание программы

Файл rand_lasso.py содержит реализацию RandomizedLasso, которая была 'устарена' со skilearn 0.19 и удалена с 0.21. Код взят с их гита, версии 0.19. Пробовались готовые решения с гита, однако они были либо совсем нерабочими, либо у их результатов не прослеживалось корреляции с остальными моделями, что говорило о их некачественности.

Файл lab2.py содержит непосредственно программу.

Программа создаёт набор данных с 10 признаками для последующего их ранжирования, и обрабатывает тремя моделями по варианту. Программа строит столбчатые диаграммы, которые показывают как распределились оценки важности признаков, и выводит в консоль отсортированные по убыванию важности признаки. Таким образом можно легко определить наиважнейшие признаки.

Сперва в качестве оценщика в модели RFE использовалась линейная регрессия. Однако тогда результаты были идентичны с результатами обычной модели линейной регрессии. Поэтому оценщик был заменён на предложенную в примерах sklearn модель SVR.

Результаты тестирования

По результатам тестирования, можно сказать следующее:

  • линейная регрессия и рекурсивное сокращение признаков показывают близкие значения, которые, тем не менее, расходятся в деталях.
  • случайное лассо показывает сильно завышенные результаты, однако они более-менее коррелируют с результатами других моделей.
  • средние значения позволяют выявить взвешенный результат.
  • определить, какая модель ближе к действительности однозначно сказать невозможно из-за разброса.
  • какая модель (её реализация) дальше всего от действительности наоборот немного очевидно.

Пример консольных результатов:

Linear regression

[('x4', 1.0), ('x1', 0.73), ('x2', 0.73), ('x5', 0.38), ('x10', 0.05), ('x6', 0.03), ('x9', 0.03), ('x3', 0.01), ('x7', 0.01), ('x8', 0.0)]

Random lasso

[('x1', 1.0), ('x2', 1.0), ('x4', 1.0), ('x5', 1.0), ('x10', 0.97), ('x6', 0.89), ('x9', 0.82), ('x3', 0.55), ('x7', 0.36), ('x8', 0.0)]

RFE

[('x4', 1.0), ('x1', 0.86), ('x2', 0.8), ('x5', 0.44), ('x10', 0.08), ('x6', 0.05), ('x7', 0.04), ('x3', 0.01), ('x8', 0.01), ('x9', 0.0)]

Mean

[('x4', 1.0), ('x1', 0.86), ('x2', 0.84), ('x5', 0.61), ('x10', 0.37), ('x6', 0.32), ('x9', 0.28), ('x3', 0.19), ('x7', 0.14), ('x8', 0.0)]

По данным результатам можно заключить, что наиболее влиятельные признаки по убыванию: x4, x1, x2, x5.