【问题标题】:How to Handing String Values While Performing Linear Regression Using Weka Java API如何在使用 Weka Java API 执行线性回归时处理字符串值
【发布时间】:2014-05-25 06:50:59
【问题描述】:

我正在使用 Weka Java API 执行线性回归。数据集由 UserId、用户访问的 URL、在 Page 上花费的时间组成。由于 URL 是一个字符串属性,我在使用上述数据集执行线性回归时遇到了问题。他们是否有任何现成的方法可以将 String 转换为 Weka 中的等效 Int 值。我在 Mahout 中看到过类似的功能,但在 Weka 中找不到。我可以通过计算每个字符的 ASCII 和来轻松创建一个函数来输出字符串的 Int 值,但我想要一个更可靠且已经过测试的解决方案。

【问题讨论】:

    标签: java algorithm machine-learning weka mahout


    【解决方案1】:

    线性回归只对数值起作用是正确的。但是,从分类值到数字的任何旧转换都可以正常工作,这根本不是真的。例如,对字符串进行哈希处理会给出一个数字,但作为线性回归的特征,会给出完全没有意义的结果。

    数值应具有有序且有意义的大小。 “foo.com”是 135092 而“bar.com”是 985882 是什么意思?线性回归会尝试将“bar.com”解释为“比 foo.com 大 5 倍”,这是无稽之谈。

    您可能正在考虑 1-of-n 编码,即为每个可能的值 (URL) 创建一个新的 0/1 特征。这对于 URL 是不可行的。域——也许吧。

    【讨论】:

    • 非常感谢。您能否建议我使用我的数据集获取访问最多的网址的任何其他算法。我的目标是根据用户对电子商务网站的访问向他推荐产品。
    • “获取最常访问的 URL”不是机器学习问题,而是 SQL 查询。这些都不是推荐问题。您需要明确说明您要做什么。
    • 我的应用程序跟踪用户在电子商务应用程序中的所有在线活动。在此基础上,它应该对用户行为进行情感分析,并向用户提供推荐的优惠。当然我们可以得到用户访问最多的 url,但是我的应用程序也应该能够推荐类似的产品,用户花费更多时间在
    • 我们的目标是对收集的数据应用回归或类似类型的算法,并得出一个可靠的分数,以便根据分值,我们可以推荐具有前 5 分值的产品给用户。
    【解决方案2】:

    虽然 Weka LinearRegression 分类不适用于 String 数据类型,但您可以尝试将所有网站转换为名义,可以通过算法计算。我不太确定算法究竟是如何执行的,但根据我的经验,它在某些情况下改进了结果(因为名义上的值可以算作重复值,值之间的距离 ~1 如果不相等等)。

    【讨论】:

      猜你喜欢
      • 2012-11-24
      • 2017-11-04
      • 2015-01-21
      • 2019-12-29
      • 2017-06-29
      • 2011-10-02
      • 2013-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多