显示带有标签的帖子 秀色可餐. 显示所有帖子
显示带有标签的帖子 秀色可餐. 显示所有帖子

2013年11月9日,星期六

我们可以哈希一下

该实验室位于西北太平洋,因此很自然地会问什么机器学习原语和 酸洗。目前有两名主要候选人: 随机特征图哈希技巧。事实证明,后者可以有益地用于随机PCA。

正如我所见,随机PCA算法 最近讨论, 是真棒。根据经验,要获得非常好的结果,似乎需要两个(或更多个)通过算法。理想情况下,可以只使用一种(结构化的)随机性将数据向下传递到某个计算上合适的维度,然后使用精确的技术将其完成。在实践中,这并不是很好,尽管有时计算上的好处(单次传递数据和低内存使用)是合理的。两遍算法使用第一遍构造正交基础,然后将该基础用于第二遍。除了额外的数据传递外,还需要存储两个传递算法作为基础,以及正交化步骤。如果原始特征维数为$ p $,所需分量数为$ k $,则存储需求为$ O(p k)$,并且正交化步骤的时间复杂度为$ O(p k)$。如果$ O(p k)$可以放入主存储器中,这不是问题,但否则就很麻烦,因为本质上需要分布式QR分解。

哈希技巧(更一般而言,结构化随机性)可以在两个极端之间建立桥梁。想法是使用结构化随机性将特征维数从$ p $减少到$ d $,以使$ O(d k)$适合主存,然后使用两次通过随机算法。这可以看作是利用结构化随机性的一遍算法与传统的两遍算法之间的插值。实际上,我们只是在尝试使用可用的空间资源来获得良好的答案。我们发现散列是稀疏域(例如文本或图形数据)的良好结构化随机性,而其他结构化随机性(例如,子采样 哈特利变换)更适合密集数据。当使用哈希时,该方法继承了哈希技巧的其他便利,例如不需要知道输入数据先验的特征基数。

这些随机方法不应令人生畏:一旦您理解它们,它们将非常简单。这是一些Matlab使用散列进行随机PCA:
function H=makehash(d,p)
  i = linspace(1,d,d);
  j = zeros(1,d);
  s = 2*randi(2,1,d)-3;

  perm = randperm(d);
  j=1+mod(perm(1:d),p);
  H = sparse(i,j,s);
end
function [V,L]=hashpca(X,k,H)
  [~,p] = size(H);
  Omega = randn(p,k+5);
  [n,~] = size(X);
  Z = (X*H)'*((X*H)*Omega)/n;
  Q = orth(Z);
  Z = (X*H)'*((X*H)*Q)/n;
  [V,Lm,~] = svd(Z,'econ');
  V = V(:,1:k);
  L = diag(Lm(1:k,1:k));
end
你可以用类似的东西来调用
>> H=makehash(1000000,100000); [V,L]=hashpca(sprandn(4000000,1000000,1e-5),5,H); L'

ans =

   1.0e-03 *

    0.1083    0.1082    0.1081    0.1080    0.1079
因此,与往常一样,好处之一就是让您在商用笔记本电脑上进行一些计算,而这又使其他实现难以为继。这是PCA产生的图片 公开可用的Twitter社会图 在我的笔记本电脑上使用大约800 MB的内存。散列节省的空间仅约20倍,因此,如果您有一台具有16 GB内存的计算机,则可以使用 红碟 毫无困难,但是当然有了更大的数据集,最终内存会变得昂贵。
该图像可能很难看懂,但是如果单击它会变大,然后如果在新选项卡中打开较大的版本并放大,则可以获得更多细节。

如果您喜欢这种东西,可以查看 ,或者您可以访问 NIPS机器学习随机方法 Nikos将讨论的研讨会。 阿伦·库玛(Arun Kumar)于今年夏天在CISL实习,他在 Biglearn 关于实施于 .

2011年12月13日,星期二

可视化人群

大约一年前,我读了Welinder等人的论文。等标题 人群的多维智慧。 那时,我刚刚开始大量利用众包来进行机器学习任务,而论文的跳跃开始了我对众包数据集的想法。因此,我很高兴地宣布,我已向 弹奏钢琴 受本文启发。

我说``灵感来自''是因为模型要简单得多。特别是因为在我的数据集中通常每个项目的评分很少(例如3),所以我继承了简单项目模型的传统(即,单个标量难度参数$ \ beta $)。因此,我嵌入了隐藏的标签,而不是嵌入项目。每个工人都被建模为一个概率分类器,该分类器由与隐藏标签原型的距离\ [
p(l_ {ij} = r | \ alpha,\ beta,\ tau,z)\ propto \ exp(-\ beta_j \ lVert \ tau_ {z_j} + \ alpha_ {z_jr}-\ tau_r-\ alpha_ {ir} \ rVert ^ 2)。
\]这里$ l_ {ij} $是工作人员$ i $在项目$ j $上报告的标签,$ \ alpha_ {ir} $是工作人员$ i $的$ d $维偏差矢量,标签为$ r $ ,$ \ beta_j $是项目$ j $的难度参数,$ \ tau_r $是标签$ r $的$ d $维原型向量,$ z_j $是项目$ j $的真实隐藏标签,而$ d $是嵌入的维数。尽管需要随机初始化$ \ tau $才能打破对称性,但是此参数化操作可确保$ \ alpha_ {ir} = 0 $是合理的起始条件。 $ \ alpha $是$ L ^ 2 $正则化的(高斯先验),而$ \ tau $不是正则化的(无信息先验)。关于不变性的注释:通过将$ \ tau $转换并旋转到规范位置来消除$ d $对称性($ \ tau_0 $约束在原点,$ \ tau_1 $约束在由第一个单位向量等)。

尽管我的动机是可视化(对应于$ d = 2 $或$ d = 3 $),但还有其他两种可能的用法。 $ d = 1 $类似于非单调 顺序约束 并且可能适合某些问题。较大的$ d $可能有用,因为每个工人的参数从$ O(| L | ^ 2)$减少到$ O(d | L |)$,这可能与 减少处理的多标签问题.

推理与以前一样(我对分类器使用了多项逻辑回归),但工人模型当然发生了变化。实际上,该工人模型的速度比多项式工人模型的速度慢大约3倍,但是由于该工人模型导致每个工人参数的减少,因此公平的比较可能与低秩逼近比较,后者也较慢。这是完成我的规范演示任务的软件,可从其个人资料预测Twitter用户的种族。
strategy = nominalembed
initial_t = 10000
eta = 1.0
rho = 0.9
n_items = 16547
n_labels = 9
n_worker_bits = 16
n_feature_bits = 18
n_dims = 2
seed = 45
test_only = false
prediction file = (no output)
data file = (stdin)
cumul    since    cumul    since      example current current current  current
avg q    last     avg ce   last       counter   label predict ratings features
-1.64616 -1.64616 -1.90946 -1.90946         2      -1       2       4       30
-1.60512 -1.56865 -1.93926 -1.95912         5      -1       2       3       32
-1.38015 -1.15517 -2.13355 -2.32784        10      -1       1       4       28
-1.11627 -0.82685 -2.08542 -2.03194        19      -1       2       3       21
-0.89318 -0.63424 -1.89668 -1.68574        36      -1       1       3       35
-0.90385 -0.91498 -1.62015 -1.31849        69      -1       8       4       27
-0.99486 -1.0903  -1.5287  -1.43162       134      -1       1       4       54
-0.93116 -0.86077 -1.42049 -1.30809       263      -1       1       4       45
-0.90436 -0.87592 -1.47783 -1.5365        520      -1       1       3       13
-0.92706 -0.95001 -1.42042 -1.36223      1033      -1       2       1       11
-0.96477 -1.00259 -1.33948 -1.25791      2058      -1       8       3       21
-0.95079 -0.93672 -1.2513  -1.16272      4107      -1       1       3       44
-0.91765 -0.88423 -1.13014 -1.0087       8204      -1       0       3       26
-0.90145 -0.88529 -0.98977 -0.84921     16397      -1       8       3       23
-0.86520 -0.82882 -0.80860 -0.62731     32782      -1       8       3       20
-0.83186 -0.79852 -0.63999 -0.47132     65551      -1       1       3       56
-0.79732 -0.76279 -0.50123 -0.36243    131088      -1       2       3       35
-0.77279 -0.74826 -0.40255 -0.30386    262161      -1       8       3       41
-0.75345 -0.73413 -0.33804 -0.27352    524306      -1       2       3       43
-0.74128 -0.72911 -0.29748 -0.25692   1048595      -1       1       4       45
-0.73829 -0.72691 -0.28774 -0.25064   1323760      -1       1       3       27
applying deferred prior updates ... finished

tau:
     \  latent dimension
      |   0       1   
label |
    0 | 0.0000  0.0000
    1 | 2.6737  0.0000
    2 | 3.5386  -1.3961
    3 | 1.3373  -1.2188
    4 | -1.5965 -1.4927
    5 | 0.0136  -2.9098
    6 | -2.4236 1.4345
    7 | -0.0450 2.2672
    8 | 2.1513  -1.5638
  447.48s user 1.28s system 97% cpu 7:38.84 total
上面的过程会为每个项目的隐藏标签生成估计值(后验分布),以及将尝试推广到新实例的分类器和尝试推广到新工人的工人模型。此外,还有一些可视化的东西:
  1. 隐藏的标签原型向量$ \ tau_r $。靠得更近意味着两个标签更容易混淆。
  2. 每个工人的噪声矢量$ \ alpha_ {ir} $。这些调整每位用户的隐藏标签原型,导致偏差和准确性上的差异。
  3. 通过在标签上的后分布,通过形成隐藏的标签原型向量的凸组合,可以将这些项放置到潜在空间中。
这是主要标签落入二维嵌入的方式。标签的文本以该标签的$ \ tau $的值为中心(对于新工人,$ \ alpha_ {ir} = 0 $,因此$ \ tau $定义默认的混淆矩阵)。典型的$ \ beta $是1,因此在此图上的距离3表示混淆的可能性非常低。 (单击图像放大)。


结果取决于随机种子。最受欢迎的标签(亚洲,西班牙,黑色,白色和N / A)保持相对位置,但不太受欢迎的标签会四处走动。这是上面针对不同随机种子的图:请注意,x轴缩小了,但这对于后续图更方便。 (单击图像放大)。


在其余的情节中,我会坚持使用这种随机种子。现在,我将在绘图上为每个工人的原型矢量($ \ tau_z + \ alpha_ {iz} $)放置一个点。 (单击图像放大)。


点的图案提供了有关整个工人群体中错误图案分布的一些直觉。例如,西班牙裔标签周围的点具有比水平扩展更多的水平扩展。这表明在区分白人和西班牙裔与区分黑人和西班牙裔之间存在更多差异。白人和西班牙裔之间的区别更多是文化而非种族。 美国人口普查局将白人列为种族,但将“西班牙裔或拉丁裔”列为种族;因此,从某种意义上说,这是糟糕的实验设计,但是由于广告商非常关注这种区别,因此我必须使其发挥作用。

最后,这是一些根据个人资料的隐藏标签上的后验分布嵌入到潜在空间中的个人资料照片。单击下面的图像以获取矢量版本,您可以放大并查看详细信息。


在某些情况下,鉴于其嵌入位置,这些照片似乎没有任何意义。其中一些是因为工人是嘈杂的贴标签者。但是,工人可以访问并根据整个配置文件决定标签。因此,最好将这些照片视为``特定种族选择使用的个人资料照片的示例'',而不是这些种族本身的照片的示例。

最新版本 弹奏钢琴 可从 Google代码存储库.

2011年10月13日,星期四

熊谈论机器学习和移民政策

灵感来自 福布斯文章 关于美国针对技术工人的移民政策改革,我决定制作此视频。请享用!

此外,如果您了解机器学习和优化,请随时与我联系以获取有关就业的信息。

机器学习劳动力市场的状况


更新:我 将此移至github 因为Xtranormal倒闭了。

p

2011年6月13日,星期一

更好的标签相似性可视化

好吧,我花了整个周末的大部分时间来改善自己的 标签相似度可视化,没有很好的理由,只是发痒时就必须挠痒。这就是最终看起来最好的东西。
  1. 计算每个哈希标签的词项频率向量。
    1. 对于每个推文X:
      1. 对于X $中的每个主题标签$ h:
        1. 对于X $中的每个非标签令牌$ t \:
          1. $(h,t)$的增量计数。
  2. 计算前1000个最频繁的标签中的每个标签对的成对余弦$ \ cos \ theta(h,h ^ \ prime)$。
  3. 将相似度定义为$ s(h,h ^ \ prime)= \ arccos(\ cos \ theta(h,h ^ \ prime))$。
    1. 与$ 1.0-\ cos \ theta(h,h ^ \ prime)$相比,我得到的负特征值更少。这是在超球面上移动和跨越超弦之间的区别。
  4. 做60维 MDS 在$ s $。
    1. 60个特征值中有两个为负,因此我将其视为0。所以实际上是58维MDS。
    2. 我在这里得到任何负特征值时感到有些惊讶,因为我所有的项向量都占据了超球面的正超象限。显然,我的超直觉需要超调……或者我有一个错误。
  5. 将产生的60维表示输入 吨位 .
    1. 我使用困惑10。
我选择t-SNE是因为高维结构似乎是相对孤立的簇。我推断是因为我将邻域定义为$ \ epsilon \ theta $球并运行 弗洛伊德·沃歇尔 在邻域图中,我注意到我必须使用一个非常大的邻域($ \ cos \ theta \ geq 0.8 $),然后才能获得足够大的连接组件以变得有趣。

最终,当我绘制此标签时,我尝试将颜色随机化,以便在所有标签相互叠放时能够看到一些东西。真的png不能公正,您应该得到 pdf版本 并放大。

2011年6月9日,星期四

标签相似性可视化

永远不要低估漂亮图片的力量。一方面, 探索性数据分析 确实有助于建立更好的模型。此外,无论您想要更多的补助金还是更多的薪水,漂亮的图片都是说服人们您正在做有趣事情的好方法。

所以我开始研究Twitter 井号 采用;最终目标是通过在编写推文时自动建议或纠正哈希标签,在阅读推文时解释哈希标签等来改进我们的客户端软件。Twitter的新手用户经常抱怨这没有任何意义,因此这将是一个不错的选择增值。

标签受累于 词汇问题。基本上,您说的是#potato,我说的是#spud。通常,人们使用的变体在语义上几乎是等效的,但有时在词汇上却完全不同。一些例子是
  • #shoutouts和#shoutout:这种情况似乎适合词法分析。
  • #imjustsaying和#imjustsayin:这些都非常接近,也许我们希望基于``阻止''的策略能够奏效。
  • #nowplaying和#np:有很多用长缩写代替长哈希标签的示例,以节省费用,也许可以为此制定定制的词汇策略。
  • #libya和#feb17:完全不是词法,但是这些标签的当前几乎等效的性质可能随时间而不稳定。
代替词法驱动的方法,最好开发一种数据驱动的方法来建议,更正或解释哈希标签:毕竟,不乏推文。

好了,偷偷摸摸,这是漂亮的照片。我在推文样本中提取了1000个最受欢迎的哈希标签,并通过将所有带有该哈希标签的推文相加来计算每个哈希标签的词项频率向量。接下来,我计算 余弦相似度 哈希标记之间,阈值设为0.985,然后将结果反馈给Mathematica的 图形图。这是结果(点击放大)。
根据我要花多少时间,合理的下一步是雇用一些 降维 技术将其投影到2维并查看生成的图片(希望能提供更多信息)。但是,即使上面的简单过程也会产生一些有趣的信息:
  1. 通常,此图有助于围绕使用的某些词法转换建立直觉。
  2. 哈希标签用于执行以下操作:指示要遵循的意愿和意图进行交互。
  3. 对于英语和葡萄牙语的读者来说,星座运势显然都很重要。但是用来描述每个符号的实际单词模式却非常相似。 :)
  4. 有几种方法可以限定潜在的煽动性言论,以表明寻求真相的动机(``真实对话''集群)。
  5. 我最喜欢的#sex和#porn群集。在互联网上,它们确实是相同的。