Что такое стандартизация в машинном обучении?

7 приложений машинного обучения в сфере здравоохранения Изучение

В машинном обучении мы обучаем наши данные прогнозировать или классифицировать вещи таким образом, чтобы это не было жестко закодировано в машине. Итак, во-первых, у нас есть набор данных или входные данные, которые нужно предварительно обработать и обработать для получения желаемых результатов. Любая модель ML, которая должна быть построена, следует следующей процедуре:

  • Собирать данные
  • Выполнение обработки/очистки данных (масштабирование функций)
  • Данные предварительной обработки
  • Применить визуализации

Масштабирование функций — это метод стандартизации функций, присутствующих в данных, в фиксированном диапазоне. Это должно выполняться во время предварительной обработки данных. У него есть два основных пути: стандартизация и нормализация.

Стандартизация

Шаги, которые необходимо выполнить:

Сбор данных

Наши данные могут быть в различных форматах, например числа (целые числа) и слова (строки), на данный момент мы будем рассматривать только числа в нашем наборе данных.

Предположим, что наш набор данных имеет случайные числовые значения в диапазоне от 1 до 95 000 (в случайном порядке). Просто для нашего понимания рассмотрим небольшой набор данных, состоящий всего из 10 значений с числами в заданном диапазоне и рандомизированном порядке.

1) 99
2) 789
3) 1
4) 541
5) 5
6) 6589
7) 94142
8) 7
9) 50826
10) 35464

Если мы просто посмотрим на эти значения, их диапазон настолько велик, что обучение модели с 10 000 таких значений займет много времени. Вот где возникает проблема.

Понимание стандартизации

У нас есть решение для решения возникшей проблемы т.е. Стандартизация. Это помогает нам решить эту проблему:

  • Уменьшение масштаба значений до общей для всех шкалы, обычно в диапазоне от −1 до +1.
  • И сохраняя диапазон между значениями без изменений.

Итак, как мы это делаем? у нас есть математическая формула для того же, т. е. Z-Score = (Current_value — Mean) / Standard Deviation.

Формула стандартизации

Формула стандартизации

Используя эту формулу, мы заменяем все входные значения Z-оценкой для каждого значения. Следовательно, мы получаем значения в диапазоне от −1 до +1, сохраняя диапазон нетронутым.

Стандартизация выполняет следующие функции:

  • Преобразует среднее значение (μ) в 0
  • Преобразовывает в SD (σ) к 1

Это совершенно очевидно для среднего значения = 0 и SD = 1, так как все значения будут иметь такую ​​меньшую разницу, и каждое значение будет почти равно 0, следовательно, среднее значение = 0 и SD = 1.

ПРИМЕЧАНИЕ. (Просто для лучшего понимания)

Для среднего

Когда мы вычитаем значение меньше среднего, мы получаем (-ve)
результат Когда мы вычитаем значение больше среднего, мы получаем (+ve) результат

Следовательно, когда мы получаем (-ve) и (+ve) значения для вычитания значения со средним значением при суммировании всех этих значений,
мы получаем окончательное среднее значение как 0.

И когда мы получаем среднее как 0, это означает, что большинство или почти все значения равны или очень близки к 0 и имеют очень низкую дисперсию между ними.

Следовательно, SD также становится равным 1 (равно как и без разницы).

Реализация Кодекса

Здесь мы делаем следующее:

  • Расчет Z-показателя
  • Сравнение исходных значений и стандартизированных значений
  • Сравнение диапазона обоих с использованием точечных диаграмм

Python3

# Importing Libraries
import matplotlib
import matplotlib.pyplot as plt
 
# We are just using 10 values
# for our Dataset
 
# Here, dataset_0 will be constant
# as it's range is just 1 - 10
# But, dataset_1 will be scaled down
# as it's range is 1 - 95,000
 
global dataset_0, dataset_1
dataset_0 = [10, 5, 6, 1, 3, 7, 9, 4, 8, 2]
dataset_1 = [1, 99, 789, 5, 6859, 541,
             94142, 7, 50826, 35464]
 
n = len(dataset_1)
mean_ans = 0
ans = 0
j = 0

Теперь, чтобы вычислить сумму, запустите следующий код:

Python3

# Calculating summation
for i in dataset_1:
    j = j + i
    k = i*i
    ans = ans + k
 
print('n : ', n)
print("Summation (X)   : ", j)
print("Summation (X^2) : ", ans)

Выход :

n :  10
Summation (X)   :  188733
Summation (X^2) :  12751664695

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

Python3

# Calculating Standard Deviation
part_1 = ans/n
part_2 = mean_ans*mean_ans
standard_deviation = part_1 - part_2
print("Standard Deviation : ", standard_deviation)

Выход :

1275166469.5

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

Python3

# Calculating Mean
mean = j/n
mean

Выход :

18873.3

Чтобы рассчитать Z-оценку для каждого значения набора данных_1

Python3

# Calculating the Z-Score for each 
# Value of dataset_1
final_z_score = []
print("Calculating Z-Score of Each Value in dataset_1")
 
for i in dataset_1:
    z_score = (i-mean)/standard_deviation
    final_z_score.append("{:.20f}".format(z_score))

Сравнение значений исходного набора данных и уменьшенного набора данных

Python3

# Comparing the Values of Original Dataset and Saled Down Dataset
print("\nOriginal DataSet   |               Z-Score ")
print()
for i in range(len(dataset_1)):
    print("    ", dataset_1[i], "          |     ", final_z_score[i])

Выход :

Original DataSet   |               Z-Score 

     1           |      -0.00001479987158649171
     99          |      -0.00001472301887561513
     789         |      -0.00001418191305413712
     5           |      -0.00001479673474114981
     6859        |      -0.00000942175024780167
     541         |      -0.00001437639746533501
     94142       |      0.00005902656774649453
     7           |      -0.00001479516631847886
     50826       |      0.00002505766953904366
     35464       |      0.00001301061500347112

Теперь мы сравним и увидим график исходных значений и стандартизированных значений.

Python3

# Here We are checking the Graph
# of the Original Values
plt.scatter(dataset_0, dataset_1, label="stars",
            color="blue", marker="*", s=40)
plt.xlabel('x - axis')
plt.ylabel('y - axis')
plt.legend()
plt.show()
   
# Here we are checking the Graph of
# the Standardized Values
plt.scatter(dataset_0, final_z_score, label="stars",
            color="blue", marker="*", s=30)
plt.xlabel('x - axis')
plt.ylabel('y - axis')
plt.legend()
plt.show()

Выход :

График исходных значений

График исходных значений

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

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

Python3

final_z_score = []
 
for i in dataset_1:
    z_score = (i-mean)/standard_deviation
    final_z_score.append("{:.20f}".format(z_score))

Сравнение значений исходного набора данных и уменьшенного набора данных.

Python3

print("  Original DataSet   |               Z-Score ")
print()
for i in range(len(dataset_1)):
    print("         ", dataset_1[i], "         |     ", final_z_score[i])

Выход :

  Original DataSet   |               Z-Score 

          1          |      -0.00001479987158649171
          99         |      -0.00001472301887561513
          789        |      -0.00001418191305413712
          5          |      -0.00001479673474114981
          6859       |      -0.00000942175024780167
          541        |      -0.00001437639746533501
          94142      |      0.00005902656774649453
          7          |      -0.00001479516631847886
          50826      |      0.00002505766953904366
          35464      |      0.00001301061500347112

Сравнение диапазона значений с помощью графиков

1) График исходных значений

Python3

# Now we will compare and see the graph 
# of the Original Values and the 
# Standardized Values
import matplotlib
import matplotlib.pyplot as plt
 
# Here We are checking the Graph of the 
# Original Values
plt.scatter(dataset_0, dataset_1, label="stars",
            color="blue", marker="*", s=40)
 
plt.xlabel('x - axis')
plt.ylabel('y - axis')
 
plt.title('Original Values')
plt.legend()
 
plt.show()

Выход :

График исходных значе

График исходных значений

2) График стандартизированных значений

Python3

import matplotlib 
import matplotlib.pyplot as plt
 
plt.scatter(dataset_0, final_z_score, label= "stars"
            color= "blue", marker= "*", s=30)
   
plt.xlabel('x - axis')
plt.ylabel('y - axis')
 
plt.title('Original Values')
plt.legend()
   
plt.show()

Выход :

рафик стандартизированн

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

Поэтому мы рассмотрели, поняли концепцию, а также внедрили концепцию стандартизации в машинном обучении.

Читайте также:  3 особенности, которые новички упускают из виду при создании API
Оцените статью
bestprogrammer.ru
Добавить комментарий