由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 基站异常大数据问题和我的实施方案
相关主题
算法求助!烙印有病毒思路 (转载)
平面上n个点,找出任意两点距离的最大值,怎么计算最好?从我们组看为什么华人对阿三节节败退
[bssd] functional programming matters...matlab里面怎么设置最大最小数的精度?
分母有理化是更准确吗?来美15年了,还是工程师
zhaoce才是码工的role model思科裁人预告和新闻和TODO (转载)
【炮打IT民工——我的一张大字报】 (转载)这个给分数求和的Python程序为嘛陷入死循环出不来?大牛给帮忙看看。
请有C++数值计算的同学帮忙看看,问题不难这里有没有码农架空PM等管理层的?
给CS的朋友来科普一下pCellLinus在狗狗能干过jeff dean,我看不一定。。。
相关话题的讨论汇总
话题: 凸包话题: 坏点话题: 数据话题: 基站话题: 问题
进入Programming版参与讨论
1 (共1页)
S*******e
发帖数: 525
1

多年前在这里看到了有多人提及Spark,就去看了看。后来就试一试组里的项目,经
理比较支持。在那以后的几年里,我们有好几个项目用了Spark。曾经有个项目还得到
SVP的赞许。那也是我提职为principal两三年艰难过程最后的了结 :经理早就帮忙,
VP也点头了,可是上面卡的很死。老行业,半死不活的,也无可抱怨。其实,真的非常
鸡肋,只加了5%的薪水。这个坛子还是很不错的,特别像dwong, teacherwei,
guvest等等大牛始终给坛子常年做不少贡献。。。记得赵策写的特快,好虫特能博眼球
,可是英雄气短,不再与众人为伍。
现在在家度假,闲来就再聊聊那个基站异常大数据问题。虽然做的有点辛苦,但觉得
我的解决方案中有点“学术”的味道。在这里和大家分享一下,这基本上是我一个做的
,其中不免很多疏漏和拙见,请大家手下留情,轻砸。
我曾提到我觉得我们主任把问题抽象得很好。。。很多人看了那组数据可能摸不着头
脑,我最初也是如此。现在让我重述一下我们实际上想解决的问题: 我们每小时能收
集到一亿多的一种geospatial数据点,在这一亿多中大约有几百万点是“坏点”。这些
坏点也可能是正常的(就像产品有一定的次品率)。但是, 要是某个地方比其历史来
突然持续出现很多坏点,我们估计这个地方的基站可能出问题了。我们的目的是找出这
样的区域和基站。
我的方案是这样的:
1. 先把数据按小时分段。把当前小时的“坏点”拿出来分类,比较集中的地方出现
问题的可能性比较大。
2. 把当前小时的“坏点”放在一起,这样实际上我们就只有平面(球面)这两个纬
度了。这样分类容易一些,因为要把时间纬度放在一起,“距离”不好定义。
3. 用DBScan给“坏点”分类。这里也有不少坑。很多包对‘大’数据不行。最后,
选了https://elki-project.github.io/, 经过开发者的提示,用covertree index极
大地提高了速度 – 几百万点用一个比较大的单机十几分钟就能完成(用Spark’s
Client mode, 这部分在Edge node上完成)。最初一二十万的点也需要很多小时才能完
成。 调DBScan的参数也是一个“艺术“。分类的结果得到大约3~4万的clusters。
4. 下一步要计算“坏点“率。怎么算呢?分母的点集怎么定义?这是个难点。我数
学的基础可能对我有点帮助。。。前半生研究了十几年复杂的凸分析,结果用了一个最
简单的部分。我用3)中每个类里的“坏点”产生一个凸包(convex-hull),这样就定
义了一个含有这些“坏点”的区域。所有属于这个凸包的点就是分母了。在这上面也花
了不少时间:有的凸包太大包含太多点。又试了好多凹包(concave-hull),这是一个
没严格定义的东西。最后,实际上还有些太大的凸(凹)包,虽然我本人不太满意,但
有几个人认为它本身有意义, 再分不一定好。
5. 要找到4)中的分母也不容易:有一亿点要判断它们是不是属于某个凸包。用了
GeoSpark里的SQL,但这毕竟是1亿对4万的“Cross Join“, 非常昂贵, 做不出来。
我试了一个小州的数据,倒是能算出来。可是即使把加州分成两三块,有时还是算不出
来。做“Cross Join“时,也给每个凸包画个矩形,这样可以在lat,lng上做数值比较
,好了不少但有时还是无法算出来。这个地方卡了我好久:给好多州划块,怎么实验有
时总是卡。突然有一天,我脑洞大开:把那4万个凸包每相邻的(就简单按凸包中心做
排序)100个分成一组,把这一百个凸包拼在一起,画个框,这样每次处理的数据大大
地减少了。这样还真的就能做出来了。同时,这也避免了事先画框(像把一个州分块)
把本来在一起的cluster给切开了。
6. 接下来的工作量还是很大:因为要比较历史做统计分析,还得把历史上得“坏点
“率算出来(我们选过去13个周得每周的同一天同一个小时)。这又涉及二十几个”
Cross Join“,但用5)最后的方法同样也做出来了。
7. 其它还有一些零碎工作,像找每个凸包里或附近的基站, 这涉及更多的“Cross
Join“。我还帮助前端做了用Google maps 画出凸包(polygon),坏点分布和附近的
基站等的prototype。Detail是另一个人做。
我本人是匹老马了。好在我的经理非常信任我:不管做成什么样子都不会不满意。我也
从这里和我们组里的年轻人那里得到了不少东西。我提到得那个年轻人在我们组时,我
们经理给了他不少荣誉 (评上公司优秀奖),以至于有一个老中对经理非常有意见。
其实, 大家大部分人只是做一个搬砖的工作,做好做坏做什么大多时候不是那么重要
的。
m******r
发帖数: 1033
2
principle是什么title ? 比经理还高?
S*******e
发帖数: 525
3
Principal Developer. 与经理同级。。。其实在我们公司到senior已经和经理同级了。

【在 m******r 的大作中提到】
: principle是什么title ? 比经理还高?
g****t
发帖数: 31659
4
非常厉害。再次感谢讲解。
理论的知识能到新的user case和真实数据跑起来的,都不简单
。很理解你的感受。多年前学的东西很多种,后来有一小点忽然冒出来有用了。感觉跟
做梦差不多。
回头我仔细看看你这个方案,再向你请教。你这个是实际出来东西的,远高于无数论文
给的计划纸。
我不是什么大牛。可以说不怎么会写程序。
我来本站,是因为不审查敏感字,这样不会被机器训练/惩罚,然后产生自我审查意识。
g****t
发帖数: 31659
5
btw, 你是数学系的phd吧?
有时候我觉得这个教育体系出了大问题。据我所知,绝大多数phd都是学过的知识在工
作以后十几年才会有一点点能在真实数据,设备,市场上有用。
不知这个看法对不对。
S*******e
发帖数: 525
6
多谢赞誉。。。写第一个这方面的帖子时,没想要多写。后来,@chunjuan比较好奇是
什么问题,接着看大家还比较感兴趣,觉得把整个项目写一下给大家看看。也有点自我
欣赏的意思 :-).

识。

【在 g****t 的大作中提到】
: 非常厉害。再次感谢讲解。
: 理论的知识能到新的user case和真实数据跑起来的,都不简单
: 。很理解你的感受。多年前学的东西很多种,后来有一小点忽然冒出来有用了。感觉跟
: 做梦差不多。
: 回头我仔细看看你这个方案,再向你请教。你这个是实际出来东西的,远高于无数论文
: 给的计划纸。
: 我不是什么大牛。可以说不怎么会写程序。
: 我来本站,是因为不审查敏感字,这样不会被机器训练/惩罚,然后产生自我审查意识。

d******c
发帖数: 2407
7
还是不太明白坏点的定义。
你之前给的数据只有位置和时间,还有基站的信息吗?如果没有基站信息,没法定义好
坏吧?
说某些点和其他点不一样就算坏点?怎么个不一样,时间上前后的数据有约束吗?还是
位置上前后的数据有约束?
S*******e
发帖数: 525
8
1. 主任把实际问题抽象成那组数据,那组数据的每个记录都是“坏点”。要是他那
个问题能被解决的话, 我这篇谈到的实际问题就能被解决。
2.实际问题有基站和其它许多附加信息,但只要上面的主要问题解决了,这些都迎刃
而解。
像我说的,这东西有点学术味道。我有点不太相信,许多人看了那个3D图看不出它的“
问题”所在。。。

【在 d******c 的大作中提到】
: 还是不太明白坏点的定义。
: 你之前给的数据只有位置和时间,还有基站的信息吗?如果没有基站信息,没法定义好
: 坏吧?
: 说某些点和其他点不一样就算坏点?怎么个不一样,时间上前后的数据有约束吗?还是
: 位置上前后的数据有约束?

m******r
发帖数: 1033
9
如果是'坏点', 怎么会有这么大数据量?
第二,假设worst case, 一个基站瘫痪了,server down, ( 当然其他基站会自动
cover, 我们简化问题,假设附近没有其他基站), 那么坏点是怎么收集起来的? 这
就好比你只能看成功飞回来的战斗机哪里被子弹击中了。 没有飞回来的战斗机,你也
不知道哪里被击中。因为没法收集数据。
S*******e
发帖数: 525
10
数据怎么收集的是商业秘密,我在这儿不能说。要是透露一点的话,就是google也收集
了不少我们收集的信息。我认为大家应该把精力放到那个抽象问题上,那是一个让大家
动脑筋,而又不被细枝末叶掩盖的好问题。

【在 m******r 的大作中提到】
: 如果是'坏点', 怎么会有这么大数据量?
: 第二,假设worst case, 一个基站瘫痪了,server down, ( 当然其他基站会自动
: cover, 我们简化问题,假设附近没有其他基站), 那么坏点是怎么收集起来的? 这
: 就好比你只能看成功飞回来的战斗机哪里被子弹击中了。 没有飞回来的战斗机,你也
: 不知道哪里被击中。因为没法收集数据。

相关主题
请有C++数值计算的同学帮忙看看,问题不难从我们组看为什么华人对阿三节节败退
给CS的朋友来科普一下pCellmatlab里面怎么设置最大最小数的精度?
烙印有病毒思路 (转载)来美15年了,还是工程师
进入Programming版参与讨论
c******n
发帖数: 16666
11
你这个确实是很独特的问题
而且很巧的是 和我之前做过一个泥石流的项目有点相同点 那个是纯学术类 和你这边
有点像的是 泥石流冲下峡谷 改变地貌 这里会有堆积 那里会有冲刷 整套模型是在高
精度的dem数据支持下运行的
所以稍微看懂你拿个问题之后 我第一反应 可以拿来当这做 而且这本身就有一个时间
因素在影响最后结果 掉线的多了点 坑就深了点 如果只是flickering那一会儿这个坑
又给填好了 最后我按高度slice一下就好了
现在 手机web发帖 等下在容我重新看看你原帖确认下
不过我那个和你这个比起来 还是少了几个量级 而且只管结果 处理速度什么都不是
问题 扔大型机跑几天就好了 原始程序也是很非cs的学术风 没有多线程 没有内存优化
而且全部存储都扔内存里

【在 S*******e 的大作中提到】
: 数据怎么收集的是商业秘密,我在这儿不能说。要是透露一点的话,就是google也收集
: 了不少我们收集的信息。我认为大家应该把精力放到那个抽象问题上,那是一个让大家
: 动脑筋,而又不被细枝末叶掩盖的好问题。

S*******e
发帖数: 525
12
羞于提起。 能用到一点那么多年的心血还是蛮兴奋的。

【在 g****t 的大作中提到】
: btw, 你是数学系的phd吧?
: 有时候我觉得这个教育体系出了大问题。据我所知,绝大多数phd都是学过的知识在工
: 作以后十几年才会有一点点能在真实数据,设备,市场上有用。
: 不知这个看法对不对。

m******r
发帖数: 1033
13
看不出问题,太正常了。
好比医生给我个x光片, 什么都不说,我连个门都摸不着。人家给你讲讲,这里有个阴
影,像是癌症;那里变小了,完了,膝盖某个方向磨损差不多了,但还不至于做换膝手
术; 你才恍然大悟。

【在 S*******e 的大作中提到】
: 羞于提起。 能用到一点那么多年的心血还是蛮兴奋的。
g****t
发帖数: 31659
14
我完全可以理解。这种机会在大公司一般干十年才能有一两次。
散户的好处就是天天可以兴奋。

【在 S*******e 的大作中提到】
: 羞于提起。 能用到一点那么多年的心血还是蛮兴奋的。
g****t
发帖数: 31659
15
My two cents:
algorithm技术含量在于查分母的点这个trick。
假如框以外也有分母的点,他的办法略有损失准确性。
但是根据数据因地制宜发明个trick的能力,一般人是不具备的。
"
把那4万个凸包每相邻的(就简单按凸包中心做
排序)100个分成一组,把这一百个凸包拼在一起,画个框,这样每次处理的数据大大
地减少了。"
这步肯定不是对所有类型数据都有效的假大空。
但是应该是对楼主的项目管用的实用技术。

【在 m******r 的大作中提到】
: 看不出问题,太正常了。
: 好比医生给我个x光片, 什么都不说,我连个门都摸不着。人家给你讲讲,这里有个阴
: 影,像是癌症;那里变小了,完了,膝盖某个方向磨损差不多了,但还不至于做换膝手
: 术; 你才恍然大悟。

w********m
发帖数: 1137
16
这个就相当于是engineering和science的区别吧。
另外一个例子就是,打车业务的nearby service找附近available的车。
理论上应该找附近一个圆的车。这个很麻烦。
为了engineering的需要,都是取的矩形。
这样只需要取左上和右下两个点就可以了。
g****t
发帖数: 31659
17
可能的一个类比:先定义一些地标建筑。然后查这些建筑附近,available 的车的浓度
。如果
density超大或者超小,则需要解释。
我觉得
楼主的问题最复杂的其实是第一步,就是他的主任猜出来的
什么是坏点的定义和所使用的indictor. 这个setup, 穿透了信号和现实,非常难。因
为一次试错也许就要一年。
绝大多数时候,信号的异常不等于机器的异常。(楼主做的是信号的异常。)这两边隔
着一层纸,但这层纸很难穿透。所以用什么信号是他们的商业机密。


: 这个就相当于是engineering和science的区别吧。

: 另外一个例子就是,打车业务的nearby service找附近available的车。

: 理论上应该找附近一个圆的车。这个很麻烦。

: 为了engineering的需要,都是取的矩形。

: 这样只需要取左上和右下两个点就可以了。



【在 w********m 的大作中提到】
: 这个就相当于是engineering和science的区别吧。
: 另外一个例子就是,打车业务的nearby service找附近available的车。
: 理论上应该找附近一个圆的车。这个很麻烦。
: 为了engineering的需要,都是取的矩形。
: 这样只需要取左上和右下两个点就可以了。

s********k
发帖数: 6180
18
你这个例子,看看能不能用sparkML来做啊,只有spark可能不够,spark处理的数据
offline还要做training,不然就是纯粹online做slide windowing的比较了?

【在 S*******e 的大作中提到】
: 羞于提起。 能用到一点那么多年的心血还是蛮兴奋的。
d******c
发帖数: 2407
19
你原来帖子里写的是
a. Find the anomalous points in this data set
但是实际上那些数据全是坏点?我还是不太明白。
附加信息是必要的,没有附加信息没法理解点之间的相互关系和约束。如果是完全没有
约束的一些点,没法定义好坏。

【在 S*******e 的大作中提到】
: 羞于提起。 能用到一点那么多年的心血还是蛮兴奋的。
1 (共1页)
进入Programming版参与讨论
相关主题
程序员有哪些借口可以让自己写出低质量的代码?zhaoce才是码工的role model
新公司是否会知道你依旧在旧公司任职? (转载)【炮打IT民工——我的一张大字报】 (转载)
[bssd]bbs是不是最后会剩下我跟wdong两人?请有C++数值计算的同学帮忙看看,问题不难
做项目的思路给CS的朋友来科普一下pCell
算法求助!烙印有病毒思路 (转载)
平面上n个点,找出任意两点距离的最大值,怎么计算最好?从我们组看为什么华人对阿三节节败退
[bssd] functional programming matters...matlab里面怎么设置最大最小数的精度?
分母有理化是更准确吗?来美15年了,还是工程师
相关话题的讨论汇总
话题: 凸包话题: 坏点话题: 数据话题: 基站话题: 问题