機械学習とは?
過去データから予測するというフローのなかで、機械学習によって予測モデル自体を機械が過去データから学習して自動的に作り上げることができます。
大量のデータの中から、属性の相関を散布図などで見比べて手探りで分析しているケースも多いと思いますが、機械学習を利用することによって、経験や勘だけに頼らずに、数学的なアルゴリズムをベースに自動的に予測モデルを作り上げることができます。
機械学習プラットフォームを構築するにあたって
最近はいろいろな言語のライブラリも充実しているため、ノートpcでも簡単に機械学習が実行できる時代になりました。
ただ、実際にプラットフォームとして継続的な使用を考えると学習用データや結果データの格納先がほしくなり、ライブラリだけでなくデータを管理するプラットフォームの必要性がでてきます。
機械学習プラットフォームを構築するにあたってポイントとなることを列挙しました。
- アルゴリズム
- 操作性
- パフォーマンス
- データ管理
- ジョブ管理
- セキュリティ
アルゴリズム
アルゴリズムとしては、分析で使用したいアルゴリズムがあるかどうかがポイントとなります。
機械学習をつかえると謳うサービスは多いですが、その中に自分の行いたい分析にマッチしたアルゴリズムがあるかは重要となります。
操作性
プログラム言語のAPIからGUIツールまで幅広くあるため、自分のスキルレベルにあった操作方法を持つかは重要になります。
パフォーマンス
データ量が多ければ、分析の精度が上がりやすくなります。大量のデータを扱えるパフォーマンスを持つかは重要となります。
データ管理
大体のデータがすぐに分析できる形になっていない場合が多いため、データ結合や加工処理、データ連携などが行える環境が必要となります。
ジョブ管理
分析が業務に組み込まれていく場合には、ジョブとして定期的に分析フローを回せる状態になっていると運用面がとても楽になります。
セキュリティ
分析対象のデータは顧客の過去の行動ログなど一般的な業務データに比べて重要なデータのケースが往々にしてあります。データを格納するプラットフォームがセキュリティを満たせるものかどうかが重要になります。
並べてみると分析というよりもインフラ視点が強いかもしれませんが、分析とは意外と地味な作業が多いものです。
Oracle Database Cloud Service上で機械学習環境を構築してみよう
前置きが長くなりましたが、Oracle Database Cloud Service (DBCS)上に作成されたデータベースに機械学習環境を構築してみようと思います。
構築までの流れは以下の4stepとなります。データベース作成の待ち時間も含めて2時間程度で完了できます。実際に手を動かす時間としては30分程度で完了する手順となっています、
- DBCS上にデータベースを作成する
- Oracle SQL Developerをクライアントにインストールする
- Oracle SQL DeveloperでDBCS上で作成したデータベースに接続する
- Oracle Data MinerのプラグインをOracle SQL Developerにインストール
1. DBCS上にデータベースを作成する
作成にあたりSSH公開鍵が必要となりますので、事前に暗号鍵をPuTTyなどで作成しておきます。
Oracle Database Cloud Serviceのページにログイン後、サービスの作成をクリックして必要な情報を記入していきます。
最初はサービス・レベルを選択します。Virtual Imageの方が請求金額は安いですが、インストール作業をGUIで済ませられる通常のOracle Database Cloud Serviceを今回は選択します。
次に課金体系として毎時か毎月1のものかを選択します。今回は毎月を選択します。
サービス・レベルと課金体系を選択したら、データベースのバージョンを選択します。機械学習は11gでも使用できますが、今回は最新のOracle Database 12cリリース1を選択します。
ここまでは特にどちらを選択しても影響はありませんでしたが、ソフトウェア・エディションの選択には注意が必要です。2
機械学習機能はOracle DatabaseのOracle Advanced Analytics Optionに含まれているため、High Performanceまたは、Extreme Performanceを選択します。今回はEnterprise Edition ― High Performanceを選択します。
サービスの詳細を記載します。ここでは主にサービス構成やデータベース構成、バックアップの有無を決めていきます。今回は、サービス構成としてはサービス名をOracleMLとして、1 OCPU 7.5GBメモリの最小構成で作成していきます。作成しておいた公開鍵を選択します。データベース構成としては、領域は250GBとして、パスワードを設定し、データベース名(SID)をORCL、PDB名をPDB1とします。バックアップはなしを選択します。
最後にこれまで設定した値の確認を行い問題がなければ作成ボタンを押してデータベースを作成します。
Oracle Database Cloud Serviceのページに先ほど作成したサービス名のものが砂時計のアイコン付きでステータスがIn Progressで表示されているのを確認できると思います。Oracle Databaseのイメージがインストールされるのに1時間程度かかりますが、DBCS上にデータベースを作成する手順はここまでとなります。完了後は砂時計のマークがなくなり、ステータスの項目が消えます。
2. Oracle SQL Developerをクライアントにインストールする
Oracle SQL DeveloperはOracle Databaseのフリーの開発環境です。後述するOracle Data Minerというプラグインを入れることによって、Oracle Databaseの機械学習の分析フローを開発するツールとしても利用することができます。
Oracle SQL Developerのインストールにはダウンロードページからライセンス同意書に対して同意し、クライアントのOS3に対応したものをダウンロードします。
今回はクライアントはWindowsの環境として、Windows用のダウンロードリンクをクリックすると、sqldeveloper-x-x.zipのようなファイルがダウンロードされます。
空のフォルダを作成し、そこで先ほどのzipファイルを解凍すればOracle SQL Developerのインストールは完了です。
3. Oracle SQL DeveloperでDBCS上で作成したデータベースに接続する
まずは、DBCS上に作成したデータベースの接続情報を確認します。Oracle Database Cloud Serviceのページから先ほど作成したサービス名をクリックすると詳細ページを確認できます。ここの追加情報(show detail)をクリックすると接続文字列などの情報が確認できます。Oracle SQL Developerの接続で必要な情報は、パブリックIPと接続文字列の1521/以降の文字列となります。下の図の赤い四角で塗りつぶした箇所が該当します。
それでは、先ほどインストールしたOracle SQL Developerを起動します。解凍するとsqldeveloperフォルダがあり、その直下のディレクトリにsqldeveloper.exeが存在するはずです。こちらを実行することによって、Oracle SQL Developerを起動できます。
DBCS上のデータベースは初期状態では22番ポートしか空いていないため、sshトンネリングを活用して接続します。Oracle SQL Developerの表示タブから、sshを選択するとSSHホストというウィンドウが表示されます。ここから、SSHホストを右クリックすると、新規SSHホストと表示されますので、そちらを選択します。
Nameには任意の名前を指定できますが、今回はDBCStunnelと入力し、ホストには先ほどDBCSで作成したデータベースのパブリックIPを記入します。ユーザー名はoracleを指定します。鍵ファイルの仕様をチェックし、DBCS上のデータベース作成に使用した公開鍵の対となる暗号鍵へのパスを選択します。Oracle Databaseの接続にはリスナー接続を利用するため、1521ポートへのポートフォワードを設定します。Add a Local Port Forwardのチェックボックスを選択し、名前はそのままDefaultとし、ホストをlocalhost、ポートを1521とします。OKを押すとSSHホストウィンドウに今回作成した名前の項目が表示されます。
接続ウィンドウにある接続を右クリックすると、接続の作成が表示されますので、そちらを選択します。任意の接続名を入力できますが管理者用の接続をまずは作成したいので、今回はadmin接続とします。ユーザー名はsysとします。パスワードはDBCSでデータベースを作成したときに作成したときと同じものを入力します。パスワードの保存を有効にすると次回から接続の際にパスワードが聞かれなくなります。今回はテスト環境の為、有効にしますがセキュリティ上は有効にしないことを推奨します。
接続タイプからSSHを選択し、ロールでSYSDBAを選択します。ポート転送の欄から先ほどSSHホストで作成したものを選択します。SID4でなく、サービス名を選択し、DBCSで作成したデータベースの接続文字列の1521/以降の文字列を入力します。
テストを選択し、無事に接続ステータスが成功になることを確認できましたら、接続を押します。これで、DBCS上に作成したデータベースへの接続は完了です。
4. Oracle Data MinerのプラグインをOracle SQL Developerにインストール
Oracle Data MinerのプラグインはOracle SQL Developerからインストール可能です。プラグインは特定のユーザーのスキーマに対して、Oracle Data Miner用のリポジトリが作成される形となります。
先ほど作成した、SYSDBA権限を持ったユーザーで接続し、Oracle Data Miner用のユーザーを作成します。先ほど作成したadmin接続の+アイコンを選択し表示された項目から、他のユーザーを右クリックするとユーザーの作成が表示されますので、そちらを選択します。
ユーザー名、ログイン用パスワード、デフォルト表領域、一時表領域を入力します。付与されたロールタブから、CONNECTを選択します。割当て容量から、デフォルト表領域で指定した表の項目で無制限を選択します。SQLタブから実際に発行されるSQLが確認できますが、こちらのSQLをデータベースで直接流すことによっても同様のユーザーを作成することができます。今回はユーザー名をdmuser、パスワードも仮置きでdmuserとし、デフォルト表領域をUSERS、一時表領域をTEMPとします。適用を選択するとSQLが発行され、ユーザーが作成されます。
先ほど作成したユーザーに対しても同様の手順で接続を作成します。先ほどはロールでsysdbaを選択しましたが、今回はsysdba権限は必要ないので、デフォルトを選択します。
Oracle SQL DeveloperのツールからData Miner->表示と選択します。Data Minerのウィンドウが表示されるので、接続を右クリックし、接続の追加を選択します。Connectionで先ほど作成したユーザーを選択し、OKを選択します。
選択したユーザー名がData Minerのウィンドウの中に表示されますので、そのユーザーを選択します。一番初めに選択したときは、リポジトリがインストールされていませんというポップアップウィンドウが表示されます。はいを選択肢します。
パスワードはDBCSでデータベースを作成したときのものとなります。
デフォルト表領域と一時表領域を選択します。
※なぜか一時表領域と表示されるはずのところにもODMRSYSと表示されている。。
デモ・データもインストールするかチェックボックスから選択して、開始を押せばあとは待つだけです。大体10分程度の時間でインストールは完了します。
Oracle Database Cloud Service上で機械学習環境構築はこれで完了となります。
次回はこの環境で実際に機械学習を行ってみたいと思います。
注釈
-
毎月の場合、月単位でしかクラウド上のインスタンスを止めたりして節約することはできないが、毎時のものをひと月起動し続けた場合に比べて、20%ほど安い価格となります。 ↩
-
Enterprise Edition(EE)では、Oracle Enterprise Editionの全ての機能+表領域暗号化(デフォルトon)が使用できます。Enterprise Edition ― High Performance(EE-HP)では、Real Application Cluster, In-Memory, Active Data Guard以外の全てのオプションが使用できます。Enterprise Edition ― Extreme Performance(EE-EP)では、Real Application Cluster, In-Memory, Active Data Guardを含むすべてのオプションが使用できます。価格は、EE-EP, EE-HP, EE, SEと順に安くなっていきます。 ↩
-
2016年1月時点で最新のバージョン4.1.3はWindows 7,8,10とWindows Server 2008/2012, Linux または Mac OS Xに対応しています。また、実行にはJava version 1.8以上が必要となります。 ↩
-
SIDに対して接続するには、接続文字列でなく作成したデータベースのSIDを入力します。12cでSIDに接続した場合、PDBでなく、CDBに接続することになります。 ↩