2013-08-18 137 views
0

我想实现“误差概率和平均相关系数”算法。 (更多信息Page 143。这是一个从一组特征中选择未使用特征的算法,据我所知,这个算法不限于布尔值特征,但我不知道如何将它用于连续特征。这是我能找到的关于该算法的唯一例子。特征选择算法POE1ACC用于连续值的特征

enter image descriptidfdfdfd

因此,X将被预测的功能和C是任何功能要计算的C错误值的概率,他们选择哪些是值因此C的PoE为(1-7/9)+(1-6/7)= 3/16 = 1875.

因此我的问题是:我们如何使用一个连续的特性而不是布尔特性来计算PoE?还是不可能?

回答

1

您描述的算法是一种特征选择算法,类似于前向选择技术。在每一步中,我们发现,这个标准最小的新功能网络连接:

weight_1 * ErrorProbability(Fi) + weight_2 * Acc(Fi) 

ACC(FI)表示已经选择的特征Fi和其他功能之间的平均相关性。你想尽量减少这一点,以使所有的功能不相关,因此有一个良好的条件问题。

ErrorProbability(Fi)表示功能是否正确描述了要预测的变量。例如,假设你想预测,如果明天会下雨取决于温度(连续功能)

贝叶斯错误率(http://en.wikipedia.org/wiki/Bayes_error_rate):

P = Sum_Ci { Integral_xeHi { P(x|Ci)*P(Ci) } } 

在我们的例子

  • Ci属于{rainy;不下雨}

  • X是温度

  • 嗨的实例表示所有的温度,这将导致一个词预测。

有趣的是,你可以采取任何你喜欢的预测。

现在,假设你有所有的温度在一个向量,所有国家多雨/不在另一个向量阴雨:

为了有P(X |多雨),请考虑以下值:

temperaturesWhenRainy <- temperatures[which(state=='rainy')] 

接下来你应该做的是绘制这些值的直方图。那么你应该尝试在它上面安装一个发行版。你将有一个参数公式P(x | Rainy)。

如果你的分布为高斯分布,你可以简单地做到这一点:

m <- mean(temperaturesWhenRainy) 
s <- sd(temperaturesWhenRainy) 

鉴于一些x值,你有P的概率密度(X |阴雨):

p <- dnorm(x, mean = m, sd = s) 

你可以为P(x | Not Rainy)执行相同的过程。那么P(Rainy)和P(Not Rainy)很容易计算。

一旦你拥有了所有的东西,你就可以使用贝叶斯错误率公式,这个公式可以产生一个连续特征的ErrorProbability。

干杯

+0

谢谢!我明白我必须做什么。我现在有温度了,当莱尼(在你的例子中)。但是,我怎么能使用分布的P(x | Rainy)的值?如果我得到这个,P(Raint)很简单。而且,有没有可以用于贝叶斯错误率的软件包,还是我必须实施自我? – Asqan

+0

我在等你的回答:) @David – Asqan