2013.5.2 - KDD第十四天
今天早上来了之后就处理语料,然后发现处理好后的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,找到的初始核基本上就是确定的了,基
本上就确定就是这个作者写的。我觉得我们对这个条件可以有所利用,就是突出这个原始核的决定性,就是让后吸收的点对原始正态分布的影响力越来越小,因为后
进来的点是越来越不确定的了。而且为了规划这个影响力的递降曲线,我们可以这样做:
对每个作者,进行如下循环,来聚出这个作者的所有论文:
- 对一个作者找到核。
- 用核确定正态分布。
- 对其余待分样例,利用当前正态分布排序,越接近核的主题越靠
前。然后如果最靠近的那个仍然在正态分布里面,那么就取最前面那个,如果这个点还没有被别的同名作者认领走的话,接下来就要把它整合进来了。但如果排完序
发现即使最靠前的点都不在正态分布里的话,那么这个簇的聚簇结束了(这个界值我们可以再卡得狠一点,具体再商量,要不就先用这个,然后感觉换成狠一点的话
效果更好的话就用更狠的界值)。 - 然后再对其余几个簇用论文中给的原算法进行核不是那么确定的聚簇,就叫他预聚簇,这个与聚出来的簇可以供以后进行参考。
- 按照当前的影响力等级,用新加进来的样例修改原正态分布(而不是重新排,因为如果重新排的话,所有点都是平等的了,而且核点和非核点就没什么区别了)。
- 降低影响力等级。然后如果还有待分类样例点。跳至第3步。
Note:这里影响力的下降曲线(我们需要一个函数,代表当前样例对整体正态分布的影响力,影响力越小他对正太分布的修改权重越小,但这函数我不知
到,大概线性的是最简单的,不过当然最好做成非线性的,参数可训练的那种,然后我们可以进行训练嘛。。。)的陡峭程度我们或许需要训练一下。或者如果效果
不是很明显的话就人为,经验性地定一个吧。
另外对上面的第三步还有商量的余地,就是我么也许不需要那么强势,就是删掉"如果这个点还没有被别的同名作者认领走的话"这句话,我们可以先容许重分类点,然后最最后对这些重分类点进行处理。
这里仍然没有用到他给出的Train集,我目前想到的利用Train集的方法就是在上面的算法步骤3中,如果样例已经属于其他同名作者了,那么就跳
过该次循环(continue)了。不过他给出的Train集里面更重要的是一些社交信息,我在努力Brain
Storm,看看怎么用这个Train集构建社交图。
2013.5.2 - KDD第十四天的更多相关文章
- 2013.5.3 - KDD第十五天
今天上午把昨天的想法给中秋发过去了,然后我就开始科普随机森林: 随机森林是一种比较新的机器学习模型.经典的机器学习模型是神经网络,有半个多世纪的历史了.神经网络预测精确,但是计算量很大.上世纪八十年代 ...
- Dynamic CRM 2013学习笔记(二十四)页面保存前进行逻辑验证
我们有时要验证下页面上的一些逻辑,比如开始时间不能晚于结束时间,不对时不让保存.我们可以在相关的字段事件上处理,但这如果要判断的字段比较多时,就比较麻烦了. 这时候我们就可以利用Form的OnSave ...
- Dynamic CRM 2013学习笔记(三十四)自定义审批流5 - 自动邮件通知
审批过程中,经常要求自动发邮件:审批中要通知下一个审批人进行审批:审批完通知申请人已审批完:被拒绝后,要通知已批准的人和申请人.下面详细介绍如何实现一个自动发邮件的插件: 1. 根据审批状态来确定 ...
- 2013.5.4 - KDD第十六天
昨天下午的时候中秋给我发短信"待会儿上课吧?上课讨论下?",然后我回复"嗯,好的."然后上课的时候中秋说那个方案也许不太好执行,因为他后来看数据了,数据库里面这种"可以从从协同作者进行判断"的例子并不 ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十四):请求消息去重
为了确保信息请求消息的到达率,微信服务器在没有及时收到响应消息(ResponseMessage)的情况下,会多次发送同一条请求消息(RequestMessage),包括MsgId等在内的所有文本内容都 ...
- Dynamic CRM 2013学习笔记(二十)字段改变事件的二种实现方法
CRM里有二种方式实现字段change事件,一种是在form里,一种完全通过js来实现.本文介绍下二者的用途及区别. 1. Form里用法 这种方式估计其实也是添加一个js的function. 这种方 ...
- Dynamic CRM 2013学习笔记(二十五)JS调用web service 实现多条记录复制(克隆)功能
前面介绍过如何克隆一条当前的记录: Dynamic CRM 2013学习笔记(十四)复制/克隆记录 , 主要是通过界面上加一个字段,单击form上的clone 按钮时,改变这个字段的值以触发插件来实现 ...
- 《Linux命令行与shell脚本编程大全》 第十四章 学习笔记
第十四章:呈现数据 理解输入与输出 标准文件描述符 文件描述符 缩写 描述 0 STDIN 标准输入 1 STDOUT 标准输出 2 STDERR 标准错误 1.STDIN 代表标准输入.对于终端界面 ...
- Linux时间子系统之(十四):tick broadcast framework
专题文档汇总目录 Notes:BroadcastTick作为cpuidle的waker,硬件基础.BroadcastTick嵌入在当前系统Tick框架中.BroadcastTick设备初始化:周期性T ...
随机推荐
- python语言使用yaml 管理selenium元素
1.所有元素都在PageElement下的.yaml,如图 login_page.yaml文件: username: dec: 登录页 type: xpath value: //input[@clas ...
- [LeetCode] 245. Shortest Word Distance III 最短单词距离 III
This is a follow up of Shortest Word Distance. The only difference is now word1 could be the same as ...
- linux中安装robot环境
https://www.cnblogs.com/lgqboke/p/8252488.html(文中验证robotframework命令应该为 robot --version) 可能遇到的问题: 1.p ...
- 初识Neo4j
Neo4j是一个世界领先的开源图形数据库. 它是由Neo技术使用Java语言完全开发的. Neo4j的优点 它很容易表示连接的数据 检索/遍历/导航更多的连接数据是非常容易和快速的 它非常容易地表示半 ...
- 【C/C++开发】多线程编程中的join函数
多线程编程中的join函数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 # coding: utf-8 # 测试多线程中join的 ...
- SpringBoot系列教程web篇之如何自定义参数解析器
title: 190831-SpringBoot系列教程web篇之如何自定义参数解析器 banner: /spring-blog/imgs/190831/logo.jpg tags: 请求参数 cat ...
- DHCP、DHCP Snooping及DHCP relay工作原理入门及实践(转)
原文https://blog.51cto.com/5167020/2312718 序:DHCP服务相对简单,写本文的目的是为了讲一些DHCP安全方面的技术. 1.DHCP基础 DHCP 全称动态主机配 ...
- 【vim小记】自动保存配置
刚接触vim会发现有很多不习惯,其中,不能自动保存当前配置,每次退出要重新配置,很麻烦,好在vim早就为我们想到这些,在看手册的时候,发现里面有session, 这是用户手册的介绍: “会话保存所有 ...
- LeetCode 162. 寻找峰值(Find Peak Element) 29
162. 寻找峰值 162. Find Peak Element 题目描述 峰值元素是指其值大于左右相邻值的元素. 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元 ...
- pom.xml文件导入了坐标,也没有报错,为什么还是没有相关的jar包的?
为什么会出现这样的错误呢?仔细想了想,赶紧去本地仓库看看jar也没有导入进来 解决问题的思路,就是把假的jar包文件删除掉,然后在IDEA上的坐标复制删除粘贴,IDEA就会重新导入jar包,这时就成功 ...