Страницы

Поиск по вопросам

четверг, 16 мая 2019 г.

Что означает random_state из TSNE?

Ставил 3 разных значений random_state, это: (None, 0, 1).
Так и не понял, в чем заключается суть этого метода. Читал документацию, ответ на сайте, но так и не понял.


Ответ

Суть параметра random_state (во всех функциях и методах из SciKit-Learn) в воспроизводимых случайных значениях. Т.е. если явно задать значение random_state отличным от None - то генерируемые псевдослучайные величины будут иметь одни и те же значения при каждом вызове.
Пример:
In [1]: import numpy as np
In [2]: np.random.seed(31415)
In [3]: np.random.randint(10, size=(5,5)) Out[3]: array([[7, 3, 5, 8, 2], [6, 6, 3, 5, 6], [0, 0, 8, 3, 6], [1, 6, 8, 5, 1], [4, 6, 9, 2, 7]])
In [4]: np.random.seed(31415)
In [5]: np.random.randint(10, size=(5,5)) Out[5]: array([[7, 3, 5, 8, 2], [6, 6, 3, 5, 6], [0, 0, 8, 3, 6], [1, 6, 8, 5, 1], [4, 6, 9, 2, 7]])
In [6]: np.random.seed(31415)
In [7]: np.random.randint(10, size=(5,5)) Out[7]: array([[7, 3, 5, 8, 2], [6, 6, 3, 5, 6], [0, 0, 8, 3, 6], [1, 6, 8, 5, 1], [4, 6, 9, 2, 7]])
PS если вы запустите данный код на вашем компьютере - вы получите те же самые значения в матрицах.
Зачем это нужно?
В задачах машинного обучения и не только часто используется генератор пседослучайных чисел для инициализации различных параметров, весов в нейросетях, случайного разделения дата сета на обучающий и проверочный сеты.
Соответственно если мы хотим сравнить несколько методов или разные наборы параметров, то для честного сравнения надо использовать одинаковые обучающие и проверочные сеты.
Также бывает полезно создать наборы данных случайным, но воспроизводимым способом. Например вы создали несколько различных вычислительных методов и хотите их сравнить или проверить правильность - для этого необходимо использовать одинаковые входные данные.

Комментариев нет:

Отправить комментарий