今天早上来了之后就处理语料,然后发现处理好后的gbk编码的语料在HPC上没法训,而utf8在上面训练可以。后来就让它在上面训着,学长还没来。

学长回来之后问他怎么回事,他说不应该,然后我们看了一下第一条的gbk语料,发现可以,然后学长说认为是我处理出来的语料还是有问题,还需要在继续检查。

下午回来之后,就看到了秋哥的邮件:

差不多是这个意思,第三点需要注意的。不仅仅是建立哈工大的高文的这一类,还需要建立中科院的高文的一类,或者另外一个高文的一类。

思路跟附件中Name Disambiguation Using Atomic Clusters很像,可以参考一下,可行的话你就用这个方法做吧。

这篇文章Disambiguating Authors in Academic Publications using Random Forests讲的是判断论文相似度的。

另外可以参考一下清华的唐杰的工作,他们做的arnetminer也是很好的。A Combination Approach to Web User Profiling这个是综述。

这些文章中引用的文章也可以看。差不多就开始写吧。

然后utf的模型已经训完了,gbk的模型还没好。一杯咖啡下去之后,就边听FM电台,边抄自传。

晚上的实验是硬件实验室最后一个实验,向这里说了再见。

回来之后就开始搜论文,找了好多随机森林的资料,然后边搜集边脑补:

随机森林:


机器学习中,随机森林是一个包含多个决策树的分类器, 并且其输出的类别是由个别树输出的类别的众数而定。Leo Breiman和Adele
Cutler发展出推论出随机森林的算法。 而 "Random Forests" 是他们的商标。 这个术语是1995年由贝尔实验室的Tin Kam
Ho所提出的随机决策森林(random decision forests)而来的。这个方法则是结合 Breimans 的 "Bootstrap
aggregating" 想法和 Ho 的"random subspace method"" 以建造决策树的集合。

学习算法:

1. 用 N 来表示训练例子的个数,M表示变量的数目。
2. 我们会被告知一个数 m ,被用来决定当在一个节点上做决定时,会使用到多少个变量。m应小于M
3. 从N个训练案例中以可重复取样的方式,取样N次,形成一组训练集(即bootstrap取样)。并使用这棵树来对剩余预测其类别,并评估其误差。
4. 对于每一个节点,随机选择m个基于此点上的变量。根据这 m 个变量,计算其最佳的分割方式。
5. 每棵树都会完整成长而不会剪枝(Pruning)(这有可能在建完一棵正常树状分类器后会被采用)。

Warning:

1. 随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟合。
2. 对于有不同级别的属性的数据,级别划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的。

然后晚上回寝室就开始看《Name Disambiguation Using Atomic Clusters》,发现这篇文章的想法跟我们的想法不只是像而已,简直就是一模一样。这篇文章也是像人工降雨一样,通过利用核(他叫atomic cluster)来聚集其他周围的点。先找到确定性的核,然后围绕核一点点聚集。

不过他的目的跟我们的不太一样。他希望给一堆文章,能把所有簇都聚集起来,而我们是只聚集这个作者的那一簇。而且他的目标是使同簇里面的每一篇文章属于同一个作者就可以了,不用判断是那个作者,而我们的题目需要把簇跟作者对应起来。


里面最大的不同就是他的核本身就是带概率的,有一定的不确定性,而按照我们昨天讨论的那个机制,利用那个trick,找到的初始核基本上就是确定的了,基
本上就确定就是这个作者写的。我觉得我们对这个条件可以有所利用,就是突出这个原始核的决定性,就是让后吸收的点对原始正态分布的影响力越来越小,因为后
进来的点是越来越不确定的了。而且为了规划这个影响力的递降曲线,我们可以这样做:

对每个作者,进行如下循环,来聚出这个作者的所有论文:

  1. 对一个作者找到核。
  2. 用核确定正态分布。
  3. 对其余待分样例,利用当前正态分布排序,越接近核的主题越靠
    前。然后如果最靠近的那个仍然在正态分布里面,那么就取最前面那个,如果这个点还没有被别的同名作者认领走的话,接下来就要把它整合进来了。但如果排完序
    发现即使最靠前的点都不在正态分布里的话,那么这个簇的聚簇结束了(这个界值我们可以再卡得狠一点,具体再商量,要不就先用这个,然后感觉换成狠一点的话
    效果更好的话就用更狠的界值)。
  4. 然后再对其余几个簇用论文中给的原算法进行核不是那么确定的聚簇,就叫他预聚簇,这个与聚出来的簇可以供以后进行参考。
  5. 按照当前的影响力等级,用新加进来的样例修改原正态分布(而不是重新排,因为如果重新排的话,所有点都是平等的了,而且核点和非核点就没什么区别了)。
  6. 降低影响力等级。然后如果还有待分类样例点。跳至第3步。

Note:这里影响力的下降曲线(我们需要一个函数,代表当前样例对整体正态分布的影响力,影响力越小他对正太分布的修改权重越小,但这函数我不知
到,大概线性的是最简单的,不过当然最好做成非线性的,参数可训练的那种,然后我们可以进行训练嘛。。。)的陡峭程度我们或许需要训练一下。或者如果效果
不是很明显的话就人为,经验性地定一个吧。

另外对上面的第三步还有商量的余地,就是我么也许不需要那么强势,就是删掉"如果这个点还没有被别的同名作者认领走的话"这句话,我们可以先容许重分类点,然后最最后对这些重分类点进行处理。

这里仍然没有用到他给出的Train集,我目前想到的利用Train集的方法就是在上面的算法步骤3中,如果样例已经属于其他同名作者了,那么就跳
过该次循环(continue)了。不过他给出的Train集里面更重要的是一些社交信息,我在努力Brain
Storm,看看怎么用这个Train集构建社交图。

2013.5.2 - KDD第十四天的更多相关文章

  1. 2013.5.3 - KDD第十五天

    今天上午把昨天的想法给中秋发过去了,然后我就开始科普随机森林: 随机森林是一种比较新的机器学习模型.经典的机器学习模型是神经网络,有半个多世纪的历史了.神经网络预测精确,但是计算量很大.上世纪八十年代 ...

  2. Dynamic CRM 2013学习笔记(二十四)页面保存前进行逻辑验证

    我们有时要验证下页面上的一些逻辑,比如开始时间不能晚于结束时间,不对时不让保存.我们可以在相关的字段事件上处理,但这如果要判断的字段比较多时,就比较麻烦了. 这时候我们就可以利用Form的OnSave ...

  3. Dynamic CRM 2013学习笔记(三十四)自定义审批流5 - 自动邮件通知

    审批过程中,经常要求自动发邮件:审批中要通知下一个审批人进行审批:审批完通知申请人已审批完:被拒绝后,要通知已批准的人和申请人.下面详细介绍如何实现一个自动发邮件的插件:   1. 根据审批状态来确定 ...

  4. 2013.5.4 - KDD第十六天

    昨天下午的时候中秋给我发短信"待会儿上课吧?上课讨论下?",然后我回复"嗯,好的."然后上课的时候中秋说那个方案也许不太好执行,因为他后来看数据了,数据库里面这种"可以从从协同作者进行判断"的例子并不 ...

  5. Senparc.Weixin.MP SDK 微信公众平台开发教程(十四):请求消息去重

    为了确保信息请求消息的到达率,微信服务器在没有及时收到响应消息(ResponseMessage)的情况下,会多次发送同一条请求消息(RequestMessage),包括MsgId等在内的所有文本内容都 ...

  6. Dynamic CRM 2013学习笔记(二十)字段改变事件的二种实现方法

    CRM里有二种方式实现字段change事件,一种是在form里,一种完全通过js来实现.本文介绍下二者的用途及区别. 1. Form里用法 这种方式估计其实也是添加一个js的function. 这种方 ...

  7. Dynamic CRM 2013学习笔记(二十五)JS调用web service 实现多条记录复制(克隆)功能

    前面介绍过如何克隆一条当前的记录: Dynamic CRM 2013学习笔记(十四)复制/克隆记录 , 主要是通过界面上加一个字段,单击form上的clone 按钮时,改变这个字段的值以触发插件来实现 ...

  8. 《Linux命令行与shell脚本编程大全》 第十四章 学习笔记

    第十四章:呈现数据 理解输入与输出 标准文件描述符 文件描述符 缩写 描述 0 STDIN 标准输入 1 STDOUT 标准输出 2 STDERR 标准错误 1.STDIN 代表标准输入.对于终端界面 ...

  9. Linux时间子系统之(十四):tick broadcast framework

    专题文档汇总目录 Notes:BroadcastTick作为cpuidle的waker,硬件基础.BroadcastTick嵌入在当前系统Tick框架中.BroadcastTick设备初始化:周期性T ...

随机推荐

  1. 关于PLSQL配置了正确的Oracle客户端但是不能识别tnsnames.ora问题

    场景描述: 在通过安装Oracle客户端使用PLSQL的时候发现PLSQL在已经正常配置了Oracle Home和Ocdi library的情况下不能识别tnsnames.ora中的有效配置. 正常安 ...

  2. [LeetCode] 220. Contains Duplicate III 包含重复元素 III

    Given an array of integers, find out whether there are two distinct indices i and j in the array suc ...

  3. 【SSH进阶之路】Spring的IOC逐层深入——Spring的IOC原理[通俗解释一下](三)

    1. IoC理论的背景我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 图1:软件系统中耦合的对象 如果我们打开机械 ...

  4. linux echo -e 处理特殊字符

    linux echo -e 处理特殊字符 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:\a 发出警告声:\b 删除前一个字符:\c 最后不加上换行符号:\f 换行但光标仍旧停留 ...

  5. 「模拟赛20191019」C 推式子+贪心+树状数组

    题目描述 给定一棵\(n\)个点的有根树,根节点编号为\(1\),点有点权. 定义\(d(v)\)表示\(v\)到\(1\)的路径上的边数. 定义\(f(v,u)\)在\(v<u\)且\(v\) ...

  6. jQuery “没有属性”选择器

    可以使用.not() 或 :not() 选择器. $('.container:not([data-timestamp])') 或者 $('.container').not('[data-timesta ...

  7. Delphi 10 Seattle plus 新特性——System.JSON.Builders

    { 全能中间件 —— 简单.高效.稳定.安全的三层中间件 1.支持 多账套多数据库,包括SQLite, MySQL, SQL Server, Oracle, PostgreSQL, DB2, SQL ...

  8. Typora语法使用说明

    目录 文本 标题 超链接 锚点 列表 引用 插入图片 脚注 代码 LaTex公式 插入表情 任务列表 高亮 注脚 文本 代码: *斜体* **粗体** ***斜体加粗体*** ~~删除线~~ < ...

  9. 一行代码让3D翻转后的文本恢复清晰

    FlashPlayer10提供的3D功能有一个相当蛋疼的问题:只要设置过rotationX.rotationY或者rotationZ属性,显示对象里面的文字(尤其是设备字体,位图文本)就会一直处于模糊 ...

  10. java之结合代码理解synchronized关键字

    为了保证数据的一致性即实现线程的安全性,java虚拟机提供了同步和锁机制.synchronized关键字是最基本的互斥同步手段.除此之外,还可以使用java.util.concurrent包中的重入锁 ...