Подготовка (pre-processing) данных

แชร์
ฝัง
  • เผยแพร่เมื่อ 12 พ.ค. 2020
  • Запишетесь на полный курс Машинного обучения на Python по адресу support@ittensive.com
    После сбора всех данных и выявления всех ограничений и взаимосвязей финальный набор данных нужно подготовить к обработке моделью машинного обучения.
    Нормирование и стандартизация
    Большинство моделей лучше работают с значениями параметров, если они находятся в одном диапазоне - например, от 0 до 1. Поэтому сильно разнородные значения параметров принято приводить к одному диапазону: это повышает точность работы модели (почему так происходит, разберем в следующих уроках).
    Для приведения значений независимых параметров к одному диапазону есть несколько вариантов. Первый - вычесть минимальное значение параметра из всех его значений и разделить на разницу между максимальным и минимальным. Тогда все значения этого параметра будут строго от 0 до 1 (за счет множителей можно добиться и значений от -3 до 3). Константы такого преобразования будут различаться от параметра к параметру.
    Второй вариант - стандартизация (z-нормализация), приведение значений к нормальному распределению. Для этого из всех значений вычитают среднее и делят на корень из дисперсии. Значения параметра будут находиться примерно от -3 до 3. Этот вариант предпочтительнее, если значения параметра распределены нормально.
    Категории и единичные векторы
    Нормирование данных отлично работает для числовых (номинативных) и даже ранговых параметров. Но для категориальных признаков (например, пол респондента) не работает. Для корректной работы с категориальными данными их преобразуют в единичные векторы. Например, записи
    id Пол
    1 Мужской
    2 Мужской
    3 Женский
    4 Женский
    Становятся
    id Пол_Мужской Пол_Женский
    1 1 0
    2 1 0
    3 0 1
    4 0 1
    И затем эти значения можно преобразовать обычным образом.
    Циклические значения
    В ряде случаев вводят дополнительные параметры, синус и косинус от значения параметра, если параметр предполагает цикличность. Например, это может быть направление ветра (в градусах после 360 идет 0), день (от 1 до 365), неделя (от 1 до 53) и месяц (от 1 до 12) года - все эти значения идут по кругу.
    Тригонометрические значения будут находиться в диапазоне от -1 до 1, поэтому дополнительно их можно разделить на 2 и прибавить 0,5, чтобы получить нормированные значения.
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 11

  • @l379
    @l379 4 ปีที่แล้ว +1

    Благодарю Вас за структурность

  • @chaddoomslayer4721
    @chaddoomslayer4721 2 ปีที่แล้ว

    Отличный ликбез! Спасибо!

  • @ClosiusBeg
    @ClosiusBeg 3 ปีที่แล้ว +1

    огромное спасибо!!!!

  • @grbak
    @grbak 2 ปีที่แล้ว

    Лайк!

  • @user-iz9sj1nn5q
    @user-iz9sj1nn5q 3 หลายเดือนก่อน

    1:00
    1:40
    2:05 3 основных аспекта подготовки данных
    2:09 1. Нормирование данных
    3:14 4:09 при наличии отрицательных чисел диапазон получается [-1; 1] и почему не использовали более простую формулу нормирования - x/max (тоже ведь все значения будут в пределах данного диапазона)?
    4:37 z-нормализация
    5:24 зачем нужно
    6:23 2. Категориальные данные
    6:30 Приведение к единичным векторам
    8:28
    8:42 3. Циклические параметры
    9:27 Тригонометрические функции
    11:38
    12:35

  • @viteksmarket9711
    @viteksmarket9711 3 ปีที่แล้ว

    Так то интересно, спасибо, но музычка заставляет заснуть

  • @ClosiusBeg
    @ClosiusBeg 3 ปีที่แล้ว

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

    • @ittensive
      @ittensive  3 ปีที่แล้ว

      Отличный комментарий. В реальности, все выборки - это некоторое приближение к исходному распределению генеральной совокупности. А большинство распределений являются нормальными. Т.е. z-нормализацию можно применять к любому набору данных, другой вопрос - какой от этого будет результат, если, например, у нас бинарные данные (есть/нет признак).

  • @ivanshelonik3979
    @ivanshelonik3979 2 ปีที่แล้ว +1

    Подскажите пожалуйста, есть ли смысл в алгоритмах деревьев решений (например xgboost/catboost) представлять временные фичи в циклическом виде?
    Время(например час) мы можем представить 2мя колонками cos/sin одновременно!. По сплит рулу деревьев у нас идёт разбиение лишь по одной колонке, а нам нужно, что бы модель учитывала одновременно 2 колонки, иначе выходит для 1-й sin или cos может быть а течении 24 часов несколько одинаковых точек
    Благодарю за ответ

    • @ittensive
      @ittensive  2 ปีที่แล้ว +1

      если модель строится только по одному из парных атрибутов, то, наверное, важность второго минимальна. Технически, можно сделать какой-нибудь sinx / cosx, чтобы был учет обоих атрибутов, но это будет уже не циклично

    • @ivanshelonik3979
      @ivanshelonik3979 2 ปีที่แล้ว

      @@ittensive Благодарю за ответ