gpt4 book ai didi

r - 如何以编程方式取消、推导、反编译、反向工程用于构造数据集中变量的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:28:38 30 4
gpt4 key购买 nike

我正在寻找一些算法、程序或函数来推断变量的创建方式,只要我提供其他变量即可。我认为计算机程序员会称之为“反编译”,而架构师会称之为“逆向工程”,但我想我不知道统计学家会怎么调用它......或者是否有公认的方法来做到这一点。

假设我在 data.frame 中有一个名为 newvarcategorical 列,但我不知道它到底是怎么回事建。但我确实知道用于创建它的变量。或者至少我可以提供用于创建它的详尽变量集——即使不是所有变量都被使用。

# start with an example data set
x <- mtcars

# # # # # # # # # # # # # # # # # # # # # # # #
# pretend this block of code is a black box
x <-
transform(
x ,
newvar =
ifelse( mpg > 24 , 1 ,
ifelse( cyl == 6 , 9 ,
ifelse( hp > 120 , 4 ,
ifelse( mpg > 22 , 7 , 2 ) ) ) )
)
# end of unknown block of code
# # # # # # # # # # # # # # # # # # # # # # # #

# now knowing that `mtcars` has only 11 columns to choose from
names(x)

# how were these 11 columns used to construct `newvar`?
table( x$newvar )

# here's a start..
y <- data.frame( ftable( x[ , c( 'mpg' , 'cyl' , 'hp' , 'newvar' ) ] ) )
# ..combinations with any records
y[y[,5]!=0,]
# but that's not enough to back-out the construction

所以我认为你可以用线性回归或决策树来覆盖 newvar 的构造,但这仍然需要一些思考并将系数拼凑起来才能弄清楚到底发生了什么在黑盒子里。

有没有什么算法可以猜测黑匣子,可以这么说?谢谢!!

最佳答案

一般来说,不会。即使应用了很多关于可能发生的事情的知识,它仍然(可能)不是。让我向您展示您的示例中的一个示例。添加输出是离散值并且它们是根据其他值的阈值导出的“黑匣子”的知识,分类树应该能够恢复标准。所以:

library("party")
tmp <- ctree(factor(newvar) ~ ., data=x,
controls=ctree_control(mincriterion=0, minsplit=2, minbucket=1))

我已将控制值设置为完全不合理的值,以强制算法驱动每个桶只包含一个值。即便如此,它也不是您开始时的样子:

enter image description here

所以用一个简单的例子,再加上更多的变换知识,是做不到的,一般情况下真的没有希望能够做到。

关于r - 如何以编程方式取消、推导、反编译、反向工程用于构造数据集中变量的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18195119/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com