“ 危险假象背后往往隐藏着邪魅规律”
01—突遇引力沼泽
经历过上次的碎片群攻击之后,舰队行驶地格外谨慎;但也因为BIT的存在,他们对于继续寻找引力走廊入口(第一个拉格朗日点)的信心多多少少有所增加。
又是数十个开普勒星日过去了,第一舰队就像一片树叶遨游在太空。
忽然,第一舰队领航的巡航舰K22在前方0.0005光年的位置,检测到了未知引力源;但是前方明明只是一片如同蜘蛛网一般密布的“小星体”,原则上无法产生如此强大的引力!而且引力源的分布极其不均匀,最致命的是,在目前检测到的所有未知引力源当中,哪怕最小的那个都足以将整个舰队撕毁!
全员一级警备!!!激光束打击!
就在所有人以为前面的“蜘蛛网”将被打出一个大窟窿以使舰队得以通过时,让人目瞪口呆的事情发生了:激光束并未击穿任何一个小星体,而是消失在“蜘蛛网”外围,就像一个有着严格结界的黑洞,结界外面激光束可以发挥作用,但是一旦进入结界内部立马消失不见,更不用说造成打击!
“是黑洞!”大家纷纷说道!尽管是一堆看上去并不是黑洞的天体,而且这个神奇的结界也令人费解,但却有着黑洞一般的强大作用力 。
舰长果断分析了眼前的形式:前方未知引力源处在前往引力走廊起点的必经之路上,倘若此时折返,定是前功尽弃,必须要设法穿过这个引力沼泽!
为了探测前方引力场的分布,舰长下令,以舰队所在的位置为截面中心,向截面的另一侧外围——分布着未知引力源的一侧——发射引力探测器,探测强引力点的分布和具体位置,然后对收集的数据加以分析从而可在无引力灾难的区域通行。
经过半个小时的等待,结果出来了,舰长立马指挥队员们规划通行路线,一条歪歪扭扭七拐八拐的路线随即呈现在大家眼前。没有更好的选择,只能硬着头皮前进。
其中绿色代表引力释放点,为了避开引力释放点同时避开天体碰撞,红色就是最终规划出来的路线。
有了上次的教训,这次舰长派遣了一艘无人舰k00前往试行规划路线。在大家的瞩目下,k00以0.0031倍光速沿着既定路线前行。
开始一切正常,k00不断返回路线的实况,然而好景不长,仅仅走过了路线的1/13的路程,母舰就检测到k00周边跟之前的引力检测结果不一致,就当大家一头雾水还在各种讨论分析的时候,k00失去了联系,一切信号全部消失!
K00被这个看似黑洞的区域吞噬了。
等到第一舰队再次通过引力探测器探测到疑似k00时,只发现了k00的侧翼的一块碎片… …k00确实被强大引力撕裂了。
众人错愕的同时为k00的队员们进行了默哀!
舰长随即再次进行激光引力探测,发现这次的引力分布跟上一次有很大差异,就好像他们所在的时空发生了翻天覆地的变化;然后是第三次,第四次… …每次探测的结果好像都不一样,整个舰队陷入了无限的沉默… …
“等一下”,BIT好像突然发现了什么
众人的眼光瞬间齐刷刷投向BIT。BIT将多次的探测结果进行了全息投影,但是仅仅将一片区域(就是k00失去信号的区域)的部分结果进行了投影。就在大家仍然疑惑时,BIT用手指轻轻划了一个范围,还没等BIT进一步细说,舰长发现了端倪:每次探测的时候,虽然这个区域是固定的,但区域内的引力释放点在不断地游移,就像一个国王,在领地内不断地游走,所以激光引力探测器的结果每次都不一样,探测到的都只是引力释放点的位置,但是释放点周围的区域具有跟释放点同等的引力水平,探测器根本没有探测到,也就是说至于周围哪些天体会受到引力释放点的影响从而表现出强大引力无从得知!换句话说,每个引力区域内部的点引力基本一致,即便是不靠近引力释放点,舰船飞跃这个区域一样会被撕裂!更令人难以接受的局面是,舰队面临的正是有几百上千个这样的碎片区域构成的,但我们不知道具体多少个这样的区域,也不知道每个区域的边界。
【注】:下图中蓝色区域就是内部引力释放点的游移范围,也就是说,引力探测器只是探测到了内部引力探测点的位置,本以为避开了这个位置以为就可以逃脱引力束缚,但实际上这个引力释放点的影响范围的形状非常不规则,原路线处在这个引力范围,最终导致了k00的毁灭。
BIT对舰长的分析表示赞同,但是舰队并非无计可施。BIT指着一个大概区域的多次探测结果图说道,每一个区域的大小和形状可能是不同的;而且只要不在区域内部,附近经过的物体只要以0.4‰的光速驶过就足以挣脱其强大引力的束缚,好似在区域的边界有一堵墙,把引力都挡住了(上图中的蓝色线圈就可以理解为这堵“墙”)!“墙”内的引力强到足以摧毁整个舰队,但是“墙”外的星体就没有那么大引力。
我们需要做的就是确定舰队前面这块空间内的所有类似区域(不只有探测出引力释放点,还要找出引力释放点的影响范围,即找出若干个上图中的蓝色不规则区域)就可以有效躲避,从而穿越这个引力沼泽!
星牛很机灵地问道:每个引力区域的引力释放点在不断地游移,我们如何确定每片引力区域的形状和大小呢?换句话说,我们如何知道每个区域的边界从而有效躲避?
BIT进一步指了一下之前的探测图说道:大家仔细看,每个区域的引力释放点位置虽然都在不断地变动,但是不同区域之间的引力好像存在差别,我们不能仅仅依靠观测到的有限个数的点就贸然确定其边界,因为完全有可能在我们忽略的没有观测到的地方有一个延伸出来的小空间恰好就是属于这个可怕的引力区。
星牛:那你说了半天白说… …
BIT说,别着急,你忘了上次的经历了吗?这些小星体的引力表现很有规律,我已经“看到”了决定每个星体引力大小的特征:星体直径、星体密度、星体温度、星体周边迷你行星数等;每个星体都可以表示为一个点,比方说这个星体,说着,BIT指向探测图上的一个小星体,这个小星体就可以表示为(21,443,322,53,1.9,55,… …,88)分别表示其体积为直径21,密度443,温度322,周边迷你行星数目53.. ….
星牛抢说:然后判断他们哪一个是强引力星体,哪个是弱引力星体吗?
BIT说,不!因为我们事先不知道哪种星体属于强引力星体,哪些属于弱引力星体,所以我们就没法事先训练好一个监督模型用来判断其他星体。通过特征映射我么可以看到,摆在我们面前的这个蜘蛛网一般的星体阵,在引力上的表现实际是成簇的,也就是映射之后的特征空间上属于同一个引力区域的星体之间距离很近(就像上图中蓝色线圈内的天体,在引力上表现为一簇或者一类)。我们要做的就是找出这些簇,找到每个引力区域!为了把所有相近的强引力星体所在的区域判断出来,得通过他们在新的特征空间上的“距离”,比方说这个星体aa和这个星体bb他们分别被表示为(212,54,12,98,807,33… … ,666)和(31,56,389,90,70,154… …,781),那他们之间的距离就是
还没等BIT说完,星牛就抢着说,两点之间的距离我还是会算的。
BIT笑笑接着说:为了更好的说明过程,先明确几个概念:核心点是其周围具有与之足够接近的点,如果找不到这样接近的点那它就是离群点,孤零零的,足够接近这个必须用一个数字来约束,小于这个距离的都是能彼此够得着的,接下来我们可以按照这个规则来找出那些强引力天体的区域群了。
(1:首先找到一个引力释放点P
(2:根据我们约定的这个足够近的距离值找到这样的接近(不是指物理距离,而是指根据多个特征维度表示出来的特征空间上的距离)天体形成一簇或者一类
(3:如果找不到这样的点,也就是某个点孤孤零零,周围没有接近的其他点
(4:重复上述步骤,直到把所有的天体都这样查找一遍
整个过程就像一个人举着火把黑夜中点亮其他火种,够得着的点亮,然后握手合作成为同一族,够不着的就不属于同一族了。
为了简化问题,假设所有的天体一共有13个,每个都可以表示为这样的两个特征,比如P1表示为(1,2)... ...
那么这13个点在二维空间的分布就表现为下图这样的簇,比如P3、P4、P13、P2、P1就更接近,并且与其他点有较大的距离从而表现为一簇:
BIT看出了大家的担心,随即向舰长申请了探测舰k09,前去探测路线的可行性,下图黄色路线就是避开众多蓝色引力沼泽之后的新路线。
舰长稍作思考之后同意了。
在大家注视下,k09穿越了所有的星体,成功到达了“蜘蛛网”星体阵的另一侧。
于是,大家不再有任何迟疑,整个舰队沿着这个路线开拔并有惊无险地安全通过了引力沼泽。
02—掉书袋
【1】 上述情节是对DBSCAN聚类算法的一个通俗演义。
【2】 聚类是机器学习中的一类方法,通俗点讲就是近朱者赤近墨者黑的道理,只不过聚类中涉及到的数据往往不只是单一维度上的“接近”,而是多个维度表示为数值之后的多维空间上的“接近”;区别于分类,聚类不需要监督数据,属于无监督算法。
【3】 DBSCAN对于“足够接近”这个概念是通过两个参数来刻画的,一个是距离阈值a,另一个是平均个数minpts(这是一个数),足够接近是距离
【4】 聚类算法有很多,有的只能聚出规则形状的簇,比如圆或球状的簇,而DBSCAN擅长对无规则的簇进行聚类,上述情节中的情况恰是DBSCAN的用武之地。
03—参考文献
1. 关键字:《统计学习方法》、李航
2. 关键字:《机器学习》、西瓜书、周志华
3. 关键字:coursera、DBSCAN