线性回归:用数值1代替预测器的非数值离散域

SdS*_*dsd 3 machine-learning supervised-learning

所以我有一个训练集,其中一个属性的域如下:

A = {Type1, Type2, Type3, ... ,Type5}
Run Code Online (Sandbox Code Playgroud)

如果域保持该形式我不能应用线性回归,因为数学假设可能无法工作,例如:

H = TxA + T1xB + T2xC + ...

(也就是说,如果我们假设所有属性都是数字,除了A属性,那么你就不能将实值参数与一个类型相乘)

我可以用数值,等效,离散值替换域,这样我可以针对这个问题进行线性回归并且可以吗?

A = {1, 2, 3, ...., 5 )
Run Code Online (Sandbox Code Playgroud)

这是最好的做法吗?如果没有,你可以在这些情况下给我一个替代方案吗?

Fre*_*Foo 5

最佳做法是进行单热(1- K)编码:对于A可以承担的每个值,定义单独的指标功能.所以五个"类型",A = type1将是

[1, 0, 0, 0, 0]
Run Code Online (Sandbox Code Playgroud)

并且A = type3

[0, 0, 1, 0, 0]
Run Code Online (Sandbox Code Playgroud)

然后将这些向量与您的其他特征连接起来,以便您的假设成为

H = w[Atype1] * [A=type1] + ... + w[Atype5] * [A=type5] + w[B] * B + ...
Run Code Online (Sandbox Code Playgroud)

使用[]表示指示器的功能.

这避免了您的方法的主要问题,即您引入了许多(可能是不正确的)偏差,例如type5 = type2 + type3.为了进一步直观,为什么这比你的编码更好,请参阅我的这个答案.