我正在尝试使用房价预测作为一个实际案例来学习机器学习。目前,我遇到了关于社区的问题。
在大多数机器学习示例中,我看到使用的特征包括卧室数量、楼层面积、土地面积等。直观上,这些特征与房价有很强的相关性。然而,社区的情况并非如此。假设我随机为每个社区分配一个neighborhood_id,我无法判断id为100的社区的房价是高于还是低于id为53的社区的房价。
我想知道我是否需要进行一些数据预处理,比如为每个社区找出平均价格,然后使用处理后的数据,或者是否存在可以从看似无关的特征中找出关系的现有机器学习算法?
回答:
我假设您正在尝试在包含连续和分类数据的回归模型中解释社区与房价之间的关系。从我记得的来看,R会自动使用独热编码处理分类变量。
有几种方法可以从分类变量中创建数据抽象来解决这个问题:
1) 独热编码
假设您正在尝试根据楼层面积和社区来预测房价。假设楼层面积是连续的,而社区是分类变量,共有A、B和C三个可能的社区。一种可能性是将社区编码为独热向量,并将每个分类变量视为一个新的二进制变量:
neighborhood A B C A 1 0 0 B 0 1 0 B 0 1 0 C 0 0 1
回归模型将类似于:
y = c0*bias + c1*floor_space + c2*A + c3*B + c4*C
请注意,这个社区变量类似于回归模型中的偏置。每个社区的系数可以被解释为社区的“偏置”。
2) 从分类到连续
让我们称Dx和Dy为所有社区到地图上一个固定点的水平和垂直距离。通过这样做,您创建了一个数据抽象,将社区这个分类变量转换为两个连续变量。通过这种方式,您可以将房价与从固定点出发的水平和垂直距离相关联。
请注意,只有当从分类到连续的转换是有意义时,这种方法才适用。