我怎样才能为泰坦尼克号制作反向传播算法
How can I made Backpropagation algorithm for Titanic
我想为泰坦尼克号(Kaggle 竞赛)制作反向传播算法。
这很容易做到,但我有一个问题。反向传播算法是关于数字的。但是我们在泰坦尼克号中有字符串类型。例如,
我们有一列“性别”(男性或女性)、“登船”(S、C 或 Q)。我不会使用“姓名”和“票”。我不知道我可以用“性别”和“登船”列做什么。我如何将这些东西用于反向传播算法。
我的想法如何解决这个问题
我想我可以对男性使用 number int=1,对女性使用 number int=2。我也可以用数字 1 表示 S,2 表示 C,3 表示 Q。
你觉得我的想法怎么样?如何为泰坦尼克号制作反向传播算法? (可能我的想法不是很好)
My idea how to resolve this problem I think I can use number int=1 for male and number int=2 for female. Also I can use number 1 for S and 2 for C and 3 for Q.
这是几乎正确的。对于只有两个值的特征,用 0 和 1 编码就可以了。但是,如果您的分类特征具有超过 2 个可能值,则永远不要将它们编码为单个数字。这种编码只能用于 ordinal 特征,也就是说,尽管 "not numbers" 它们确实有顺序。例如,如果你有 "small, big, huge" 那么你可以将它们编码为 1, 2, 3 但如果你的值是完全不可排序的,你应该 one hot encode 它们,这意味着有K 个可能的值在您的表示中变成 K 位,您只需将 1 放在给定位置(导致(红色,蓝色,绿色)编码为 [1 0 0],[0 1 0],[0 0 1]。
如果不遵守这条规则会怎样?假设您的特征是一个名字,您有四种可能性 "James, Mark, Eve, Kate",您将其编码为 1、2、3、4。然后,如果您的模型得知 James 和 Eve 获得了好成绩,而 Kate 没有,它会(或者至少有相当大的概率会)推断出 Mark 也有很好的分数,因为从模型的角度来看,没有名字,只有任意特征,并且值为 1 的人是好的,有价值的3 是好的,4 是坏的,所以假设“2”也是好的是一个不错的推理。请注意,这只是编码的结果,如果您只是以不同的方式排列名称 - 您会得到不同的结果。使用 one-hot 编码不会发生这种情况。
如果您想使用仅在 R^d 空间上定义的方法,这就是 ML 中通常执行的操作。当然,如果你对这个特性了解得更多,你有时可以想出更好的编码,例如颜色可以分解成它们的 RGB 表示,这样你就可以直接编码红色、橙色和黄色之间的相似性。一般来说 - 一种热编码是 最安全的 方法,任何其他方法都会引入一些可能误导您的模型的假设(如果它们是错误的)。
我想为泰坦尼克号(Kaggle 竞赛)制作反向传播算法。
这很容易做到,但我有一个问题。反向传播算法是关于数字的。但是我们在泰坦尼克号中有字符串类型。例如,
我们有一列“性别”(男性或女性)、“登船”(S、C 或 Q)。我不会使用“姓名”和“票”。我不知道我可以用“性别”和“登船”列做什么。我如何将这些东西用于反向传播算法。
我的想法如何解决这个问题 我想我可以对男性使用 number int=1,对女性使用 number int=2。我也可以用数字 1 表示 S,2 表示 C,3 表示 Q。
你觉得我的想法怎么样?如何为泰坦尼克号制作反向传播算法? (可能我的想法不是很好)
My idea how to resolve this problem I think I can use number int=1 for male and number int=2 for female. Also I can use number 1 for S and 2 for C and 3 for Q.
这是几乎正确的。对于只有两个值的特征,用 0 和 1 编码就可以了。但是,如果您的分类特征具有超过 2 个可能值,则永远不要将它们编码为单个数字。这种编码只能用于 ordinal 特征,也就是说,尽管 "not numbers" 它们确实有顺序。例如,如果你有 "small, big, huge" 那么你可以将它们编码为 1, 2, 3 但如果你的值是完全不可排序的,你应该 one hot encode 它们,这意味着有K 个可能的值在您的表示中变成 K 位,您只需将 1 放在给定位置(导致(红色,蓝色,绿色)编码为 [1 0 0],[0 1 0],[0 0 1]。
如果不遵守这条规则会怎样?假设您的特征是一个名字,您有四种可能性 "James, Mark, Eve, Kate",您将其编码为 1、2、3、4。然后,如果您的模型得知 James 和 Eve 获得了好成绩,而 Kate 没有,它会(或者至少有相当大的概率会)推断出 Mark 也有很好的分数,因为从模型的角度来看,没有名字,只有任意特征,并且值为 1 的人是好的,有价值的3 是好的,4 是坏的,所以假设“2”也是好的是一个不错的推理。请注意,这只是编码的结果,如果您只是以不同的方式排列名称 - 您会得到不同的结果。使用 one-hot 编码不会发生这种情况。
如果您想使用仅在 R^d 空间上定义的方法,这就是 ML 中通常执行的操作。当然,如果你对这个特性了解得更多,你有时可以想出更好的编码,例如颜色可以分解成它们的 RGB 表示,这样你就可以直接编码红色、橙色和黄色之间的相似性。一般来说 - 一种热编码是 最安全的 方法,任何其他方法都会引入一些可能误导您的模型的假设(如果它们是错误的)。