データ分析するにあたって、ラフ集合理論関連のRのコードがあまりないわー
下近似集合を計算するのは、割と簡単だけど、ルール抽出が難しいな。
ルール抽出のコードは、また今度書いてみるとして、
とりあえず、可変精度下近似集合を返す関数。
支配関係に基づくラフ集合アプローチの下近似集合だということに注意
(Dominance based rough set approach)
------------------------------------------------------------
入力:
condition :条件属性の情報表
decision :決定属性(一つの属性のみ) →conditionと行数が同じである必要あり
clas :下近似を求めたいクラスの対象が持つ決定属性値の下限
beta :可変精度パラメータ (0, 1] の範囲の値
出力:
行数がconditionと同じのベクトル
下近似集合に属する対象の行はTRUE
下近似集合に属さない対象の行はFALSE
となる
function(condition,decision,clas,beta=1)
下近似集合を計算するのは、割と簡単だけど、ルール抽出が難しいな。
ルール抽出のコードは、また今度書いてみるとして、
とりあえず、可変精度下近似集合を返す関数。
支配関係に基づくラフ集合アプローチの下近似集合だということに注意
(Dominance based rough set approach)
------------------------------------------------------------
入力:
condition :条件属性の情報表
decision :決定属性(一つの属性のみ) →conditionと行数が同じである必要あり
clas :下近似を求めたいクラスの対象が持つ決定属性値の下限
beta :可変精度パラメータ (0, 1] の範囲の値
出力:
行数がconditionと同じのベクトル
下近似集合に属する対象の行はTRUE
下近似集合に属さない対象の行はFALSE
となる
function(condition,decision,clas,beta=1)
{
xx <- apply(condition,c(1,2),as.numeric)
decision <- apply(decision,c(1,2),as.numeric)>=clas
ans<-TRUE
for(ii in 1:nrow(condition)){
ll <- apply(t(t(xx)-xx[ii,])>=0,1,sum)>=ncol(condition)
hh <- apply(t(-(t(xx)-xx[ii,]))>=0,1,sum)>=ncol(condition)
th2 <- sum(!decision&ll)
th1 <- sum(decision&hh)
ans<-c(ans,th1/(th1+th2)>=beta)
}
tail(ans,nrow(condition))
}
------------------------------------------------------------
使用例:下近似集合に属する対象を抽出する
subset(condition, lower.apx(condition,decision,1,beta=1) )
使用例:下近似集合に属する対象を抽出する
subset(condition, lower.apx(condition,decision,1,beta=1) )