2.4.1 透過層について

Oracle Machine Learning for Rの透過層は、OREbaseOREgraphicsOREdplyrおよびOREstatsのパッケージで実装されます。

これらのOML4Rパッケージには、オープン・ソースRのbasegraphicsおよびstatsのパッケージの関数のオーバーロードされたメソッドがそれぞれ含まれています。

これらのパッケージのメソッドおよび関数を使用すると、Oracle Databaseインスタンスの表およびビューに対応するdata.frameおよびその他のRプロキシ・オブジェクトを作成できます。そのようなオブジェクトを使用するR式を実行すると、メソッドおよび関数はSQL問合せを透過的に生成してデータベースに送信します。その後、データベースは問合せを実行し、通常は結果もプロキシ・オブジェクトとして返して、データとクライアント間のデータ移動を最小限に抑えます。これは、結果によっては大きくなる可能性があるためです。

データベース表またはビューは、data.frameのサブクラスであるore.frameオブジェクトで表されます。その他のOML4Rクラスは、vectorから継承されるore.vectorなど、対応するRクラスから継承されます。OML4Rは、Oracle Databaseのデータ型をOML4Rのクラスに(たとえば、NUMBERを完全なマップ・リストに)マップします。

透過層メソッドおよび関数を使用して、分析用のデータベース常駐データを準備できます。次に、他のOML4Rパッケージの関数を使用してモデルを構築し、それを使用してデータをスコアリングできます。

例2-2 Rでの種ごとの花弁の長さの平均の調査

この例では、Rデータ・フレームirisからIRIS_TABLEという表を作成します。次に、オーバーロードされた集計関数を使用して、種ごとに花弁の長さの平均を計算します。

ore.create(iris, table = 'IRIS_TABLE')
aggplen = aggregate(IRIS_TABLE$Petal.Length,
                    by = list(species = IRIS_TABLE$Species),
                    FUN = mean)
aggplen
この例のリスト
R> ore.create(iris, table = 'IRIS_TABLE')
R> aggplen = aggregate(IRIS_TABLE$Petal.Length,
                       by = list(species = IRIS_TABLE$Species),
                       FUN = mean)
R> aggplen
              species     x
setosa         setosa 1.462
versicolor versicolor 4.260
virginica   virginica 5.552

例2-3 前の例に対応するSQL

この例では、前の例のaggregate関数に対応するSQLを示します。

SELECT "Species", AVG("Petal.Length")
FROM IRIS_TABLE
GROUP BY "Species"
ORDER BY "Species";
 
Species     AVG("PETAL.LENGTH") 
----------- ------------------- 
setosa       1.4620000000000002 
versicolor   4.26
virginica    5.552