代码之家  ›  专栏  ›  技术社区  ›  ercan

对于这种特定的场景,您建议使用哪种数据挖掘算法?

  •  7
  • ercan  · 技术社区  · 14 年前

    这不是一个与编程直接相关的问题,而是选择正确的数据挖掘算法。

    我想从人们的名字,他们居住的地区,以及他们是否有网络产品来推断他们的年龄。其背后的想法是:

    • 有些名字是过时的或在某个特定的十年流行(名人、政客等)(这在美国可能不成立,但在感兴趣的国家却是如此),
    • 年轻人比老年人更多地使用因特网。

    • 大约500个不同的名称(具有太多类的标称输入变量)
    • Internet是/否(二进制输入变量)
    • 91个不同的出生年份(数值目标变量,范围:1910-1992)

    因为我有太多的名义输入,我不认为回归是一个好的候选人。因为目标是数值的,我也不认为决策树是一个好的选择。有人能给我推荐一种适用于这种情况的方法吗?

    5 回复  |  直到 14 年前
        1
  •  3
  •   John with waffle    14 年前

    我认为你可以设计离散变量来反映你试图确定的分裂。你似乎不需要对他们的确切年龄进行回归。

    一种可能性是对年龄进行聚类,然后将这些聚类视为离散变量。如果这不合适,另一种可能是将年龄划分为平均分配的箱子。

    有一种技术可以很好地满足您的需要,它不是直接对年龄进行聚类或分区,而是对每个名字的平均年龄进行聚类或分区。也就是说,生成一个所有平均年龄的列表,然后用这个代替。(不过,如果这里的离散类别过于细粒度,那么分类器中可能存在一些统计问题)。

    然而,最好的情况是,如果你清楚地知道什么年龄段适合“年轻”和“老年”。然后,直接使用这些。

        2
  •  3
  •   Justin Peel    14 年前

    新答案

    我会尝试使用回归,但以我指定的方式。我会尝试将每个变量二进制化(如果这是正确的术语)。因特网变量是二进制的,但是我会把它变成两个独立的二进制值。我将用一个例子来说明,因为我觉得它会更有启发性。在我的示例中,我只使用三个名称(Gertrude、Jennifer和Mary)和internet变量。

    我有4个女人。以下是他们的数据:

    Gertrude, Internet, 57
    Jennifer, Internet, 23
    Gertrude, No Internet, 60
    Mary, No Internet, 35
    

    我会生成一个矩阵,a,像这样(每一行代表我列表中的一个相应的女性):

    [[1,0,0,1,0], 
     [0,1,0,1,0],
     [1,0,0,0,1],
     [0,0,1,0,1]]
    

    前三列表示名称,后两列表示Internet/No-Internet。因此,列表示

    [Gertrude, Jennifer, Mary, Internet, No Internet]
    

    b=[[57],
       [23],
       [60],
       [35]]
    

    您可能会担心A现在将是一个巨大的矩阵,但它是一个巨大的,非常稀疏的矩阵,因此可以非常有效地以稀疏矩阵的形式存储。每行有3个1,其余为0。你可以用稀疏矩阵求解。你需要对预测的年龄做一些相关的测试,看看它有多有效。

        3
  •  2
  •   Grembo    14 年前

    你可以看看babynamewizard。它显示了名称频率随时间的变化,应该有助于将名称转换为数字输入。此外,您应该能够使用人口普查.gov获取与区域关联的数值的数据。我建议在DSL接入的可用性方面增加一个标志——许多农村地区没有DSL覆盖。无覆盖=互联网服务需求减少。

    我的第一个倾向是把你的回答分成两组,一组很可能在学校或工作中使用过电脑,另一组则不太可能。在他们职业生涯或学校教育的早期接触计算机可能会对他们以后使用计算机的可能性产生一些影响。然后你可以分别考虑各组的回归。这将消除您输入的一些自然关联。

        4
  •  1
  •   Yorgos    14 年前

    我将使用一个接受名义属性和数值类的分类算法,比如M5(对于树或规则)。也许我会把它和bagging元分类器结合起来以减少方差。原始算法M5是由R.Quinlan和王勇提出的改进算法。

    R RWeka )

    Weka

    罗斯·J·昆兰: Learning with Continuous Classes . 在:第五届澳大利亚人工智能联席会议,新加坡,343-3481992年。

    Y、 Wang,I.H.Witten: Induction of model trees for predicting continuous classes . 在:第九届欧洲机器学习会议海报,1997年。

        5
  •  1
  •   mariana soffer    14 年前

    我认为和你稍有不同,我相信树是处理名义数据的优秀算法,因为它们可以帮助你建立一个模型,你可以很容易地解释和识别这些名义变量和它的不同值的影响。 你也可以使用带有虚拟变量的回归来表示名义属性,这也是一个很好的解决方案。 但您也可以使用其他算法,如支持向量机(smo),它将名义变量转换为二元虚拟变量,这与回归中的方法相同。