肥指分布

机器算法验证 分布 模拟
2022-03-30 22:25:33

简短的问题:
是否存在胖指分布?我敢肯定,如果它存在,那么它有一个不同的名称。

我不知道如何将其表述为分析函数。你能帮我找到它的现有版本,或者开始用比巨型模拟更干净的东西来制定它吗?

当给定数字是预期目标时,它是实际命中的数字分布,但按钮比手指小得多,因此附近的按钮有时是意外击中的按钮。

使用这样的分布是在手机上按下按钮时的虚假条目。如果我经营一家公司,必须“现在按 1”之类的“你按 1,对吗”,那么他们可以获得一个不错的胖手指概率近似值,尽管连续 2 个胖手指可能会搞砸它起来一些。 (胖手指的汉明距离?胖手指马尔可夫链?)

我想用它来尝试在按键中建立纠错功能。我有一些自己的样本,但手指“胖”或手机键盘拓扑的变化不足以保持稳健。

背景与阐述:
这是一个正常的手机键盘布局: 在此处输入图像描述

想象一下,我的手指比琴键大得多,所以当我去打 5 时,我很可能会得到 5,但我也有可能得到 2、4、6 或 8(同样可能),然后得到 1、3、7、9 的可能性较小(但不是零)(同样可能)并且极不可能得到 0。

我可以想象,如果我尝试为固定的“手指直径”键入无限数量的 5,那么我会得到值的分布。如果我的手指值较小,则分布会发生变化。如果我尝试输入不同的数字,那么分布就会改变。

在实践中,这将取决于键的布局。如果他们在一个巨大的环中而不是 3x3 网格中,那么这将是一个不同的问题。在这种情况下,我希望我们只处理 3x3 矩形网格。我还怀疑键盘有一个数字锁存器,因此只能检测到一个按键。其他按钮最多有 7 个频率,例如按下“0”时。我不确定一种干净的方式来参与它。也许目标键和候选触发键之间的归一化平方距离乘以因子?

这是我如何模拟按下五个时的分布(权重有些随意):

#number of presses
npress <- 1000

#hack this (not quadratic)
myprobs <- c(0.85)
myprobs <- c(myprobs, 0.1275/4, 0.1275/4, 0.1275/4, 0.1275/4)
myprobs <- c(myprobs, 0.019125/4, 0.019125/4, 0.019125/4, 0.019125/4)
myprobs <- c(myprobs,1-sum(myprobs) )

#order of number 
my_button <- c(5,2,4,6,8,1,3,7,9,0)

#declare before loop
y <- numeric()

#sample many button presses
for (i in 1:npress){

     #press the button, store the result 
     y[i] <- sample(my_button,size=1,prob=myprobs)

}

#hist, show counts
hist((y),freq = T)
grid()

#hist, show freq
hist((y),freq = F)
grid()

#declare before loop
my_p5 <- numeric()

# compute the probabilties
for (i in 1:length(my_button)){

     my_p5[i] <- length(which(y==my_button[i]))/npress
}

# show probability values
print(data.frame(my_button,my_p5))

附加说明:
所以我读了这篇文章:
http ://www.scientificamerican.com/article/peculiar-pattern-found-in-random-prime-numbers/

我想有一个“胖手指分布”变化的反面适用于素数的最后一位。根据质数的最后一位数字,有些数字被排除在外。

2个回答

由于我们正在处理离散数字,我立即想到使用分类分布作为每个目标键的条件分布。

因此,如果我们以用户意图按 5 为例,让K是实际按下的键,那么我们得到:

P(K=k|5)=pk,5wherepk,50andk=09pk,5=1

我们可以为每个键定义这样的分布。这是经验部分。

现在,假设实际按下的数字是k,我们想推断出预期的密钥I. 这自然表示为贝叶斯推理问题:

P(I=i|k)=P(I=i)P(k|I=i)i=09P(I=i)P(k|I=i)

这个等式告诉你用户打算按下的概率i 鉴于他们按下k.

但是,您会注意到这取决于P(I=i),这是某人打算按下的先验概率i. 我想这将取决于实际按下的电话号码(当然),但由于您不知道这一点,您将需要一些方法来调整这个先前的上下文。

底线是没有单一的胖手指分布,除非我们谈论的是以预期数量为条件的分布。如果你的纠错方法是有用的,它必须使用这些条件分布来猜测预期的数字。但是,这将需要一些有用的先验上下文,否则我希望推断的键始终是实际按下的键......不太有用。

我同意 Bey 的方法,即考虑到用户的意图,每个键被按下的条件概率对于预期的键来说是最高的。如果不是,设备制造商将重命名密钥。有些键比其他键更容易被误按。也许向中间。即使知道这一点,因为我们正在输入数字,也不可能像纠正单词那样利用,因为一个数字与下一个数字一样有效。因此,对单次击键进行纠错是不可行的。

可行的是纠正,或者可能是对给定输入数据类型中的关键错误进行不那么雄心勃勃的检测。例如,这是为 ISBN 或信用卡号完成的。但是,电话号码没有校验和。也许每个键盘的经验分布可用于最有效地检查数字 - 这是对添加的检查号码的最佳使用。