Archive 2022 年 3 月 13 日

一个利用量子计算起卦的六爻排盘

此系统是约莫两年前所做,本来做成了微信小程序的测试版,在群里进行测试,后因事务繁忙,所以没再关心,微信小程序已然不可用,现在可直接使用手机浏览器来H5页面来​使用。 先来说一下普通的起卦模式,以往的六爻起卦,通常准确率较高的是使用模拟掷钱的方式,因为在这种情况下可以一定程度的体现随机的特性,通过生成了大量的卦,进行机器学习验证反复证明,用其它的”伪随机数“起卦方式所得到的六爻卦,准确率不如采用更贴近真实的随机方式起卦。 这种使用的方式很简单,过程就是后台随机不断变化,而通过人来选择,什么时候出卦爻,因此在一定程度上近似传统的六爻起卦过程。 那么,是否有更好的起卦方式?可以甚至省略这个步骤,起初想到的主意,直接利用CPU来进行产生随机数起卦,因为CPU所采用的硬件发生器虽然是可以达到这个目的,手机上的CPU虽然无法支持这样的功能,但可以通过服务器调用CPU指令来产生随机数,从而达到这样的目的,因此我写了一个服务端,让它专门从上面获取数据。 但是这对我而言,感觉仍然不够完美,因为它起卦所采用的随机数发生源,来自于CPU的电气噪音,也就是杂乱无章的数据,这终究让人感受不到极致的简洁。 古人在大事起卦的时候,也会沐浴焚香神清气和,而从电气噪音中来的随机数据,随机性虽然够了,但似乎总归是掺杂了那么一些浊气,虽然在实践中发现这样产生的随机数起卦,准确度虽然也有所提升,但我认为这可能体现的自于易学模型对于噪音扰乱的抵抗,因为噪音足够多的情况下,不变性也会被体现出来。 后来我找到了量子计算机,通过量子计算机来进行起卦,达到了更满意的结果,根据我们的实验,甚至在一些比如球赛及股票的预测上,粗暴的数据分析与拟合,能够让正确率跑过纯粹的概率。 在后台接入了量子计算机进行起卦,唯一不美的便是目前各大厂提供的真正量子计算机服务的使用服务费用不低,像D-WAVE的大约1美元只能调用约5200次左右,模拟大衍筮法,一个六爻卦大概就要耗费18次,模拟铜钱起卦,因为可以一次同时观测三对量子,可以节省许多,只需要6次,但即使如此,是一美元仅够起八百多个卦例,对于在实验时动不动就要研究几万个卦例的情况下,消耗颇大小。 除此之外,对于传统的六爻排盘,也做了一些特别的改进,以保证能够更加一目了然。 这个改进主要体现在一些小方面,利用色彩与符号,将卦中的信息进一步地表达出来。 首先,每个卦爻的颜色,体现的是主变卦对应位置的生克情况,其次动爻的变化加上了箭头,例如土克水,被克一端是黑色,如这里父母爻被回头克,自身又无力,显然就是克制很重的情况。当看动爻生克时,只需要看动爻箭头便能一目了然,比如观察这里的兄弟爻,值月令虽然是旺的,显然只是值一时之气。 这里还有很多信息没有呈现出来,例如亥化子为进神,子与丑发生合化等问题,这些应该如何直观呈现,也是日后需要慢慢进行雕琢的问题。 此排盘是全套系统工具之一,之后开放给内部学员们使用,如果有必要,未来将内部提供APP版本。

Read More

批处理FFMPEG切割视频

原按网上的搜索的方法,然在切开视频后,h5上不能播放,后查乃是各浏览器支持的h264编码有要求,特别是ios之safari要求更为严格,故记之如下: setlocal enabledelayedexpansion set x=0 for %%i in (.\bazhi\*) ^ do ( set /a x+=1 set new_dir=G:\\course\\bazhi\\!x! mkdir !new_dir! ffmpeg -i %%i -vcodec h264_nvenc -f hls !new_dir!\\index.m3u8 ) ffmpeg中的 -vcodec…

Read More

记一葬地

壬辰年,余见一人欲葬,虎方有缺且受岁煞,故稍言此地不可用。然其所请先生云,气乘风而散,此地常年风吹西北,此处未受风,合藏风聚气,故无害也。盖其言似有理,故主家信之。又观其主家之命,亦是刑克妻女儿孙,知其定也。事隔多年,于今年知其主家之情,葬后数年,其母乃逝,第三子夭亡,并妻患得绝症,此非虎方之应乎?然虽谓庸师害人,亦其命也。又理之虽大,亦有真假,不可不辨。

Read More

小样本情况下使用SVM的思考

今日在验证测试数据时,发现当采用cross_val_score进行交叉验证时,对于随机分配的测试集比例越大,正确率便越高,而测试集越小,平均正确率就越有可能低。 使用svm推导模型时,有两个大坑,一个是train_test_split后,当数据量不够时,学习到的样本分布差异很大,极不稳定,如何才是最优的train_test_split分法,很难确定,然后就是模型的泛化能力的评估是否可靠,这一块又与train_test_split所划分的数据集相捆绑,这直接导致了,偶尔在测试集上拿了高分,也只是一种假象。 这是因为SVM实际上拟合的是数据分布,在样本中学习到的也是分布,而样本数量在随机抽样时,分布的所呈现的结构也是不同的。 当测试集小时,有时集中推断错误的数据会集中在一起,因此便会导致在测试集上的平均表现欠佳。 因此在卷积里在图像识别时,对于图像可以进行不同分辨率的采样,其实目换就是为了得到指向一个概念的不同分布,通过这样的训练能够提升神经网络的泛化能力。 SVM的过程是直接一次性fit的,因此很难进行调整与改善,因为它每一次fit的都是整个分布的情况,难以实现渐进式学习那样的调整。 随机森林相对来说,因为有分裂子树进行局部抽样的学习机制,所以相对更容易不过拟合,但整体效果是否会更好,也看数据的实际情况。 因此对于SVM拟合的数据集,应当做出一假设,即是在已有的数据中,如果能抽样出来的子分布集中,恰好有一个泛化性能很好的分布存在,那么通过网格搜索参数的方法,是能很有可能将它搜索出来的。 而更好的泛化性,意味着,比如在实际的推断任务中,假如存在有一个完整的数据分布话,这个泛化性能好的子集分布,整体上会与这个完整的数据空间分布更为相近。 因此,如果整个数据集合是G,而近似的这个子集为g,而从G中抽出来的其它集合,如果比较小的话,例如a,b,c,那么呈现出来的分布,便不一定会与g相似。 显然比如一个整体分布是{0,1,0,0,1,0,1,0,0,0},按0.33的比例抽取出来的分布可能是{0,0,0}与{1,1,1},这也就意味着如果数据集不大,并在例较小的测试集上,进行交叉验证,得出来的分数会出现不客观地偏低的情况。 因此交叉验证取K折的话,需要进行测试所取的数据的量,应当与原有训练集的量差不多才能更好地客观反映accuracy,roc,f1之类的评分。 根据实验来看,例如用0.8比例的数据作为训练集,如用随机森林达到90%正确率,而再用全集取随机抽取0.8的比例数据集做K折验证,结果会下降到78%左右,这与大多数时候,实验时数据模型效果看起来不错,但上线后会损失10%~20%的情况相近。

Read More