LDA in spark测试备忘

LDA是什么? 我也不懂.. 大概就是, 一堆article, 每个都是由word们组成, 想给它们聚类成K(超参数)个topic, 还能求出一个p(word|topic). 计算过程大概就是玩{article, word, topic}之间的各种概率, 迭代计算, 细节玄机茫茫多.

目标: 跑一遍流程, 有个初步了解, 能算出一个勉强能看的topic下的key word list.

  1. 分词
    找一些article语料呗. 我找的有label—为了下一步做特征选择—在label上分布不均的30万短文本.
    离线MR时候注意手动设置mapper个数, 因为感觉yarn没法准确给计算密集型任务合理分配cpu资源, container的资源还是以内存为主要分配单位?

  2. 特征选择
    因为词典太大呗. 一会儿size(vocab) * size({topic}) 要爆炸了. 矩阵再dense也扛不住给的内存小啊, 轻松OOM.
    于是搞个特征选择吧, 弄了个简易卡方检验Chi-Square, 随便挑了一些词(x百万量级), 别的扔掉.
    把article映射到特征空间上, 存个libsvm格式.

  3. 开spark跑
    原理也先不纠结, 调用包, 跑.
    代码照着官网的例子抄. 发现K值太大, 或者分的mem太少, 或者executors太少, 会OOM.
    羞耻地随便改了几下, 趁着夜深不会被撸, 设置成K=200, --num-executors 200 --driver-memory 6g --executor-memory 6g, 能出结果.
    发现了个GC时间太长, 影响发送心跳包的情形. 好多missing parents, 反复resubmit stage(resilient feature). 可以修改一些网络通信参数跑通? GC不懂, 明天仔细看看. @TODO

  4. 看看这些个数据

    • 看看p(word|topic), 可以用这个来给article分类(聚类), 看看同一类的像不像. @TODO
    • 反着归一化一下(for each word, sum over topic), 看看每个topic下面的key word. 瞅了一眼, 勉强能看. 脑补一下, 貌似跟能用还是有距离.
    • 明显的错误还是有几处的, 累了, 明天再看.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值