一、随机种子seed
我们在接触机器学习和深度学习的过程中,总是遇到随机种子seed,在使用的过程中总是不知所云,下面我们就探讨一下随机种子。
#不设置随机种子
import random
print(random.random())
print(random.random())
print(random.random())
print(random.random())
......
[result]
0.45492700451402135
0.7707838056590222
0.705513226934028
0.7319589730332557
......
会发现每次生成0~1之间的小数且不重复,但有时候我们需要对实验进行复现,由于是随机数,很难达到实验结果最好的精度。但随机种子的出现就有了可能。
随机种子(Random Seed)是一个用于生成随机数的起始值或种子值。在机器学习和统计学中,使用随机种子可以控制随机过程的可重复性。
import random
random.seed(10)
print(random.random())
print(random.random())
random.seed(10)
print(random.random())
print(random.random())
[result]
0.5714025946899135
0.4288890546751146
0.5714025946899135
0.4288890546751146
我们可以这样理解,每个随机种子确定了一个随机序列,当再次使用这个随机种子的时候,这个序列就按最初的排序方法进行排序。使用随机种子可以对样本和标签以相同的随机序列进行随机打乱。
import random
a = [i for i in range(10) ]
b = [i for i in range(10,20)]
#a= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
#b= [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
random.seed(2023)
random.shuffle(a)
random.seed(2023)
random.shuffle(b)
print(a)
print(b)
[result]
[1, 0, 3, 8, 5, 4, 2, 9, 7, 6]
[11, 10, 13, 18, 15, 14, 12, 19, 17, 16]
总结
使用随机种子的好处包括:
-
结果可重现性:通过设置相同的随机种子,可以确保每次运行时获得相同的随机数序列,使实验结果可重现,方便调试和比较不同模型或算法的性能。
-
模型比较:在比较不同模型或算法的性能时,使用相同的随机种子可以确保每个模型或算法在相同的随机条件下进行比较,消除了随机性对结果的影响。
-
调试和开发:在调试和开发阶段,使用固定的随机种子可以使得结果可重现,方便定位问题和调整模型参数。
常见的设置随机种子的方式包括:
- 设置为固定的整数值,例如 random_state = 0。
- 使用当前时间作为种子值,例如 random_state = None 或 random_state = int(time.time())。
- 使用其他可确定的值,例如数据集的标识符或任务的编号。