2018.11.10计算未来轻沙龙——听九个清华大神聊大数据

昨天,很荣幸参加了PaperWeekly和清华大学联合举办的“大规模数据存储与挖掘”系列讲座,汇报人是九个清华大学的研究生,从硬件加速、字符串查找、推荐系统、可视化等几个方面介绍了自己的工作。收获很大,现将讲座内容做简单整理,分享给大家,也留待自己回顾。只记录了自己感兴趣的内容,全部内容和PPT请移步PaperWeekly查阅。


张凯:软件定义存储

目前CPU发展缓慢,但存储技术发展较快。硬件追求persistant memory,软件追求降低其自身开销。随着硬件技术的飞速发展,软件的开销成为存储技术的主要掣肘。

B+树是为磁盘或其他直接存取辅助设备而设计的一种平衡查找树,在B+树中,所有记录节点都是按键值的大小顺序存放在同一层的叶节点中,各叶节点指针进行连接。我的理解是,B+树可用于查找磁盘故障。

可用机器学习算法代替B+树,预测磁盘故障。如果预测出某段时间之后磁盘可能故障,那么久提前将数据进行备份。其目的是预测故障的总体趋势,而非波峰或波谷。

李开宇:众包数据库中基于rating-ranking的Top-k查询

rating即给目标实体打分,ranking即给目标实体排序。如果给出若干个实体,如何基于众包技术(让好多人进行评判,然后综合所有人的意见给出结论)对其进行打分或排序是要解决的问题。问题的解决分为以下几个步骤:

1. 数据获取。首先可以通过爬虫等技术得到若干打分或排序,或者在网络上进行提问,让用户进行反馈。然而,众包是需要花钱的,如何通过提问最少的问题分析出自己想要的答案是一个需要研究的问题。

2. 去噪。有些人的回答可能不可靠。比如对某部电影评分,他因为不喜欢其中某个演员而打了低分,但这并不能反映电影的真实水平。所以要通过去噪来对数据进行预处理。

3. 分布预测。可以通过对得分的统计得到得分的分布情况。我们希望知道其最可能服从哪种分布。

在rating task中,人对实体的打分可构成一个分布。我们可以考虑人的可信度,为每个打分赋予权重。

在ranking task中,不同的人可能给实体集合以不同的ranking。这时候可以用逆序数给出一个最终的参考排序:若某个排列与所有人给出排列的逆序数之和最小,那么就将这个排列作为最终的排列。

权重等未知参数可通过梯度下降法进行求解。

李秀星:数据库中的字符串查询

利用树形查询结构进行查询。将低频标签放在前面,高频标签放在后面。查询时优先匹配低频词,这样能更快匹配到对应目标。

可以先对所有数据进行聚类(作者用的是kmeans++),聚类后的数据有中心点。这样查询时先与聚类中心比较,然后再查询最为匹配的那个聚类中心下属的个体。

袁海涛:基于大数据的出行轨迹分析

(这时候已经开始有点走神了……)

评估两个轨迹的相似度。相似度有两种定义方式:

1. 基于采样点匹配的轨迹相似度

2. 基于路段交集的轨迹相似度

孙佶:分布式字符串查询系统

问题1:实体匹配。判断两个实体是否为同一实体。实际上是字符串匹配问题。这个问题是NP难的。

问题2:查询推荐问题。

目前常用的字符串相似性度量主要有以下几种:

1. 余弦距离。两个字符串向量的余弦。

2. 欧氏距离。两个字符串向量的欧氏距离。

3. 编辑距离。字符串1转化成字符串2所需要的最少编辑次数。编辑指的是修改字符。

4. Jaccard距离。1-两字符串的交集/两字符串的并集。

字符串近似查询时,返回与查询字符串相似性大于阈值的字符串。(作者用的是Jaccard距离)

骆昱宇:DeepEye-数据可视化

传统可视化方法:加载数据集-手动选择列-数据转化-可视化。

怎样融合人类认知进行数据可视化?

1. 给定一个可视化怎样判断好坏?

利用分类器进行判别。

2. 给出若干个可视化结果,怎样判断哪个更好?

基于偏序关系的可视化排序。

根据列的重要性、转化质量等给每个可视化图赋予一组参数(图的向量化)。若某个图a的所有参数都大于另一个图b,那么a,b满足偏序关系a>b。

利用机器学习算法和偏序关系综合排序,可以得到较现有方法更好的结果。

秦雪迪:基于关键字搜索的数据可视化

根据图之间的关联构造有向图。将每个图看作一个节点,图之间的关系看作连边(相似关系是双向边,还有覆盖关系等),并根据不同关系赋予边权重。然后用PageRank算法计算出最重要的图节点作为最佳可视化结果。

刘宁:基于医疗大数据的死亡预测

MetaMap3D可以挖掘文本中的concepts,做相当于entity linking的工作。

冉晨伟:基于因子图的微博实体链接

实体链接即将文本中的实体链接到知识图谱中的实体。一般都是长文本中的实体链接。然而,微博中的文本上下文少,噪音大,更新快,比较难处理。

作者提出用因子图模型进行实体链接,并结合注意力机制进行操作。得到了很好的结果。

 

总结:

听讲座的时候正好是下午,比较困,好多idea没有仔细听,不过还是有挺多收获的。利用逆序数整合不同用户ranking,得到标准ranking的算法可以用于知识图谱中重要概念标准的生成;基于偏序关系的重要图选取可以进行扩展,应用于其他领域中的重要个体选取问题;将图与图之间的关系转化成复杂网络,并利用PageRank算法评估重要节点的方法也可以拿来借鉴,进行重要个体的选取。有时候经典算法的恰当利用也会产生比较好的效果,所以自己那些奇奇怪怪的想法貌似也合情合理了。

顺便立个flag,最近有个自认为不错的想法,希望下周能实现一下,万一成功了呢?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一个简单的美发沙龙会员管理系统的C语言程序。 ```c #include <stdio.h> #include <string.h> #define MAX_MEMBERS 100 // 会员结构体 typedef struct { char name[20]; // 姓名 char phone_number[12]; // 手机号码 int points; // 积分 } Member; // 会员数组 Member members[MAX_MEMBERS]; int num_members = 0; // 显示主菜单 void show_menu() { printf("欢迎使用美发沙龙会员管理系统\n"); printf("1. 添加会员\n"); printf("2. 修改会员信息\n"); printf("3. 删除会员\n"); printf("4. 查询会员信息\n"); printf("5. 显示所有会员信息\n"); printf("6. 退出系统\n"); printf("请选择操作:"); } // 添加会员 void add_member() { if (num_members >= MAX_MEMBERS) { printf("会员数量已达上限,无法添加新会员!\n"); return; } Member new_member; printf("请输入会员姓名:"); scanf("%s", new_member.name); printf("请输入会员手机号码:"); scanf("%s", new_member.phone_number); new_member.points = 0; members[num_members++] = new_member; printf("添加会员成功!\n"); } // 修改会员信息 void modify_member() { char phone_number[12]; printf("请输入要修改的会员手机号码:"); scanf("%s", phone_number); int index = -1; for (int i = 0; i < num_members; i++) { if (strcmp(members[i].phone_number, phone_number) == 0) { index = i; break; } } if (index == -1) { printf("找不到该会员!\n"); return; } Member *member = &members[index]; printf("请输入会员姓名(原姓名:%s):", member->name); scanf("%s", member->name); printf("请输入会员手机号码(原手机号码:%s):", member->phone_number); scanf("%s", member->phone_number); printf("修改会员信息成功!\n"); } // 删除会员 void delete_member() { char phone_number[12]; printf("请输入要删除的会员手机号码:"); scanf("%s", phone_number); int index = -1; for (int i = 0; i < num_members; i++) { if (strcmp(members[i].phone_number, phone_number) == 0) { index = i; break; } } if (index == -1) { printf("找不到该会员!\n"); return; } for (int i = index; i < num_members - 1; i++) { members[i] = members[i + 1]; } num_members--; printf("删除会员成功!\n"); } // 查询会员信息 void search_member() { char phone_number[12]; printf("请输入要查询的会员手机号码:"); scanf("%s", phone_number); int index = -1; for (int i = 0; i < num_members; i++) { if (strcmp(members[i].phone_number, phone_number) == 0) { index = i; break; } } if (index == -1) { printf("找不到该会员!\n"); return; } Member *member = &members[index]; printf("姓名:%s\n", member->name); printf("手机号码:%s\n", member->phone_number); printf("积分:%d\n", member->points); } // 显示所有会员信息 void show_all_members() { printf("所有会员信息:\n"); printf("%-10s%-15s%-10s\n", "姓名", "手机号码", "积分"); for (int i = 0; i < num_members; i++) { Member *member = &members[i]; printf("%-10s%-15s%-10d\n", member->name, member->phone_number, member->points); } } int main() { int choice; do { show_menu(); scanf("%d", &choice); switch (choice) { case 1: add_member(); break; case 2: modify_member(); break; case 3: delete_member(); break; case 4: search_member(); break; case 5: show_all_members(); break; case 6: printf("谢谢使用美发沙龙会员管理系统,再见!\n"); break; default: printf("无效的选择,请重新选择!\n"); break; } } while (choice != 6); return 0; } ``` 这个程序实现了以下功能: 1. 添加会员 2. 修改会员信息 3. 删除会员 4. 查询会员信息 5. 显示所有会员信息 6. 退出系统 您可以根据实际需要进行修改和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值