特徴抽出のユースケース・シナリオ
あなたは、受講者の回答シートまたはフォームのスキャンに使用できる手書きの数字を認識するソフトウェア・アプリケーションを開発しています。特徴抽出手法を使用して、データ・セットのディメンション性を低減し、新しい特徴空間を生成しようとしています。この特徴空間は、元のデータのシグナルを元のデータの一次結合として集中させます。
他のシナリオでは、特徴抽出を使用して、ドキュメントのテーマの抽出、特徴の分類などを実行できます。
削減された特徴は、分類やクラスタリング・アルゴリズムなどの他の機械学習アルゴリズムで使用できます。
このユースケースでは、ニューラル・ネットワーク・アルゴリズムを使用して、変換された空間の手書きの数字を認識し、これを元のデータを使用した精度と対比します。
あなたは、デフォルトの特徴抽出アルゴリズムのNon-Negative Matrix Factorization (NMF)を次の2つの方法で使用しようとしています:
- 上位16個の特徴の投影を作成し、それらの機能を使用してニューラル・ネットワーク(NN)モデルを提供する
- 様々な属性と上位6個の特徴ベクトル間の相関を使用して、属性選択を手動で実行し、ニューラル・ネットワーク・モデルにそれらの特徴を提供する。
あなたは、8x8イメージ・マトリックス(64の入力属性)に基づいて正しい手書きの数字を予測するために、ニューラル・ネットワーク・モデルを作成しています。
関連コンテンツ
トピック | リンク |
---|---|
OML4SQL GitHubの例 | 特徴抽出 - Non-Negative Matrix Factorization |
CREATE_MODEL2 プロシージャ
|
CREATE_MODEL2プロシージャ |
一般的なモデル設定 | DBMS_DATA_MINING — モデル設定 |
Non-negative Matrix Factorization (NMF)の設定 | DBMS_DATA_MINING - アルゴリズムの設定: Non-Negative Matrix Factorization |
ニューラル・ネットワークの設定 | DBMS_DATA_MINING - アルゴリズムの設定: ニューラル・ネットワーク |
データ・ディクショナリ設定 | Oracle Machine Learningのデータ・ディクショナリ・ビュー |
NMF - モデル・ディテール・ビュー | Non-Negative Matrix Factorizationのモデル・ディテール・ビュー |
ニューラル・ネットワーク - モデル・ディテール・ビュー | ニューラル・ネットワークのモデル・ディテール・ビュー |
特徴抽出について | 特徴抽出 |
NMFについて | Non-Negative Matrix Factorization |
分類について | 分類 |
ニューラル・ネットワークについて | ニューラル・ネットワーク |
OML4SQLユースケースの探求を開始する前に、次の用意ができていることを確認します。
- データ・セット
あなたは、ScikitライブラリのDIGITSデータ・セットを使用しています。この例では、DDLスクリプトを使用してDIGITS表を作成し、データベースにロードします。rawデータ・セットは、https://github.com/scikit-learn/scikit-learn/blob/main/sklearn/datasets/data/digits.csv.gzからダウンロードすることもできます
- データベース
次のオプションからデータベースを選択または作成します:
- 無償のクラウド・アカウントを取得します。https://cloud.oracle.com/databaseにアクセスし、「Oracle Database Cloud Service (DBCS)」または「Oracle Autonomous Database」を選択します。アカウントを作成してインスタンスを作成します。Autonomous Databaseクイック・スタート・ワークショップを参照してください。
- Oracle Database (オンプレミス)の最新バージョンをダウンロードします。
- 機械学習ツール
データベースの選択内容に応じて、次のいずれかを実行します。
- Oracle Autonomous Database用のOML Notebooksを使用します。
- オンプレミス・データベースまたはDBCSに接続されたOracle SQL Developerをインストールして使用します。SQL Developerのインストールおよび起動を参照してください。
- その他の要件
データ・マイニング権限(ADWに対して自動的に設定されます)。Oracle Machine Learning for SQLのためのシステム権限を参照してください。
関連トピック
データのロード
DIGITS
という表を作成します。この表は、データ・セットへのアクセスに使用されます。
- システムにDDLスクリプトhttps://objectstorage.us-ashburn-1.oraclecloud.com/n/adwc4pm/b/OML_Data/o/digits.sqlをダウンロードします。
- テキスト・エディタでファイルを開き、
OML_USER02.DIGITS
を<your username>.DIGITS
に置き換えます。たとえば、OML Notebookアカウントのユーザー名がOML_USER
の場合は、OML_USER02.DIGITS
をOML_USER.DIGITS
に置き換えます。 - ファイルを保存します。
- コードをコピーし、ADBのOML Notebooksを使用してノートブックに入力します。または、Oracle SQL Developerをオンプレミス・データベースまたはDBCSで使用することもできます。
- パラグラフを実行します。
- データにアクセスします。
- データ・セットの様々な属性または列を詳細に調べます。
- データ品質を(データを探索することで)評価します。
データの調査
数字データ・セットには、64の数値の特徴または列(8x8ピクセル・イメージ)があります。各イメージは手書きの数字です。このデータ・セットでは0から9の数字が使用されます。
データの探索
データにアクセスできたら、データを調べ、データの品質を理解して評価します。
データ品質の評価
これは適切にキュレートされたデータ・セットであるため、ノイズ、欠損値(システムまたはランダム)および外れ値はありません。
次のステップは、データの探索的分析に役立ちます。
これで、データの探索ステージが完了します。OMLでは、自動データ準備(ADP)をサポートしています。ADPはモデル設定によって有効になります。ADPを有効にすると、アルゴリズムで必要とされる変換が自動的に実行され、モデルに埋め込まれます。このステップは、モデルの構築ステージで実行します。一般的に使用されるデータの準備方法には、ビニング、正規化、欠損値の処理があります。
関連トピック
モデルの構築
データ・セットを使用してモデルを構築します。DBMS_DATA_MINING.CREATE_MODEL2
プロシージャを使用してモデルを構築し、モデル設定を指定します。
アルゴリズムの選択
次のアルゴリズムのいずれかを選択して、特徴抽出の問題を解決できます:
- 明示的セマンティック分析(ESA) - このアルゴリズムは、このユースケース・データ・セットには適用できません。
- Non-Negative Matrix Factorization(NMF)
- 特異値分解(SVG)
Non-Negative Matrix Factorization (NMF)は、高次元のデータを分析するための一般的なツールになりました。これは、スパース(ほとんどがゼロの値を含む欠損値。このデータ・セット内の多くのセルまたはピクセルにはゼロが含まれている可能性がありますが、実際には欠損していません)および負でないデータ・ベクターのセットから意味のある特徴を自動的に抽出するためです。NMFでは、XがWHとほぼ同じになるように、低ランク・マトリックス近似を使用してマトリックスXを近似します。サブマトリックスWにはNMF基本列ベクターが含まれ、サブマトリックスHには関連する係数(重み)が含まれています。NMFが自動的にスパースを抽出し、簡単に解釈可能な要因を抽出できるため、評価が高まりました。数字のイメージなどのイメージ認識の場合、基本イメージは様々な手書きの数字のプロトタイプを表し、Hの列はどの特徴がどのイメージに存在するかを示します。Oracle Machine Learningでは、特徴抽出のデフォルト・アルゴリズムとしてNMFが使用されます。
このユースケースでは、データをトレーニングおよびテスト・データとして60対40に分割し、それを使用して、ニューラル・ネットワーク(NN)を使用して別のモデルのNMFモデルと比較します。確認したことがないデータでモデルがどのように実行されるかを確認することを考えているため、データを分割しようとしています。データ・セット全体を元のNMFモデルに配置し、それを分割してからNNに渡した場合、そのデータをテストしようとすると、そのデータはNMFモデルによってすでに確認されています。完全に新しいデータがある場合、特徴の抽出はそのデータに基づいていません。トレーニング・データを使用してモデルを構築し、モデルが構築されたら、そのモデルを使用してテスト・データをスコアリングします。
次のステップでは、選択したアルゴリズムを使用してモデルを構築する方法について説明します。
評価
診断メトリックを表示し、品質チェックを実行してモデルを評価します。
特徴抽出用の特定のテスト・パラメータ・セットはありません。このユースケースでは、評価は主にNNモデルとNMFモデルとの比較で構成されます。
ディクショナリ・ビューおよびモデル・ビュー
モデルおよびビュー・モデル設定に関する情報を取得するには、データ・ディクショナリ・ビューおよびモデル・ディテール・ビューを問い合せることができます。モデル・ディテール・ビューの特定のビューには、モデルの評価に役立つモデル統計が表示されます。
ディクショナリ・ビューを問い合せます。ビューのデータベース管理者(DBA)およびUSERバージョンも使用可能です。使用可能なディクショナリ・ビューについてさらに学習するには、Oracle Machine Learningのデータ・ディクショナリ・ビューを参照してください。モデル・ディテール・ビューはアルゴリズムに固有です。モデル・ディテール・ビューを表示することで、作成したモデルに関する詳細なインサイトを取得できます。モデル・ディテール・ビューの名前はDM$xxで始まります(xxはビュー接頭辞に相当します)。詳細は、モデル・ディテール・ビューを参照してください。
次のステップを使用すると、様々なディクショナリ・ビューおよびモデル・ディテール・ビューを表示できます。
モデルの評価と比較
あなたは、NMF特徴抽出アルゴリズムを使用して、データを変換し、予測精度を向上させる目的でNNモデルにデータをフィードしました。次に、これらの分類モデルを評価し、モデルの精度を比較します。
元のデータ・セットを使用してニューラル・ネットワーク分類モデルを構築し、その後、NMFモデルによって変換されたデータ・セットを使用して、別のニューラル・ネットワーク・モデルを構築しました。これらの分類モデルを評価します。これらのメトリックを比較する場合は、予測の精度を調べることによってモデルの品質を検討します。メトリックは、様々な特徴抽出アルゴリズムによって作成されたモデル、設定が異なる同じ抽出アルゴリズムで作成されたモデル、または異なる分類アルゴリズムと設定で作成されたモデル間で比較することもできます。
-
モデルが収束しているかどうかを確認するには、ニューラル・ネットワーク・モデルのモデル・ビューを表示します。
%script SELECT VIEW_NAME, VIEW_TYPE FROM USER_MINING_MODEL_VIEWS WHERE MODEL_NAME='NN_ORIG_DIGITS' ORDER BY VIEW_NAME;
VIEW_NAME VIEW_TYPE DM$VANN_ORIG_DIGITS Neural Network Weights DM$VCNN_ORIG_DIGITS Scoring Cost Matrix DM$VGNN_ORIG_DIGITS Global Name-Value Pairs DM$VNNN_ORIG_DIGITS Normalization and Missing Value Handling DM$VSNN_ORIG_DIGITS Computed Settings DM$VTNN_ORIG_DIGITS Classification Targets DM$VWNN_ORIG_DIGITS Model Build Alerts 7 rows selected. ---------------------------
-
ビュー
DM$VGNN_ORIG_DIGITS
を表示して、グローバルな名前と値のペアをチェックし、モデルが収束しているかどうかを確認します。つまり、結果の改善点がなくなるまでモデルが反復されます。%sql SELECT * from DM$VGNN_ORIG_DIGITS;
-
モデルの品質を確認するには、次のPCT精度コードを実行します:
%sql SELECT count(*) NUM_TEST_DIGITS, ROUND((SUM(CASE WHEN (TARGET - PRED_TARGET) = 0 THEN 1 ELSE 0 END) / COUNT(*))*100,4) PCT_OVERALL_ACCURACY FROM (SELECT TARGET, ROUND(PREDICTION(NN_ORIG_DIGITS USING *), 1) PRED_TARGET FROM TEST_DIGITS)
-
ターゲットの数字ごとにモデルの品質を確認するには、次のPCT精度コードを実行します:
%sql SELECT TARGET, count(*) NUM_TEST_DIGITS, ROUND((SUM(CASE WHEN (TARGET - PRED_TARGET) = 0 THEN 1 ELSE 0 END) / COUNT(*))*100,4) PCT_ACCURACY FROM (SELECT TARGET, ROUND(PREDICTION(NN_ORIG_DIGITS USING *), 1) PRED_TARGET FROM TEST_DIGITS) GROUP BY TARGET ORDER BY TARGET
- モデルを評価するには、次のSQL
PREDICTION
関数を使用して、混同行列を生成します。%script SELECT "target" AS actual_target_value, PREDICTION(NN_ORIG_DIGITS USING *) AS predicted_target_value, COUNT(*) AS value FROM TEST_DIGITS GROUP BY "target", PREDICTION(NN_ORIG_DIGITS USING *) ORDER BY 1, 2;
ACTUAL_TARGET_VALUE PREDICTED_TARGET_VALUE VALUE 0 0 81 1 1 83 1 8 1 2 1 1 2 2 72 3 2 1 3 3 68 3 5 1 4 4 65 4 7 1 5 5 63 5 6 1 5 7 1 5 9 1 ACTUAL_TARGET_VALUE PREDICTED_TARGET_VALUE VALUE 6 5 2 6 6 64 7 7 63 7 9 1 8 1 1 8 2 1 8 7 1 8 8 55 8 9 1 9 3 1 9 5 1 9 8 1 9 9 81 27 rows selected. ---------------------------
スコア
NMFモデルのスコアリングによって、新しい特徴空間にデータ投影が生成されます。投影の規模は、レコードが特徴にマップされる強度を示します。
このユースケースでは、ニューラル・ネットワーク・モデルを使用して比較する投影を生成するオプションが2つあります。1つは、NMFの上位16個の特徴にニューラル・ネットワーク・モデルを構築して、数字を予測することです。もう1つは、各特徴ベクターに対して最も高い係数を持つ元の属性を手動で選択して、ニューラル・ネットワーク・モデルを構築することです。
オプション1では、新しいTRAIN
およびTEST
ビューを作成し、NNモデルを構築します。
選択した属性のスコア
あなたは、係数に基づいて、抽出された各特徴ベクター内の属性を手動で選択して、別のニューラル・ネットワーク・モデルを作成しようとしています。
- 特徴1: IMG51、IMG12、IMG59、IMG4、IMG27、IMG28、IMG44、IMG11、IMG37、IMG61、IMG50
- 特徴2: IMG32、IMG39、IMG56、IMG0、IMG20、IMG19、
- 特徴3: IMG18、IMG36、IMG26、IMG21、IMG42
- 特徴4: IMG60、IMG3、IMG43、IMG34、
- 特徴5: IMG53、IMG13、IMG58、IMG10
- 特徴6: IMG29、IMG35、IMG52
次に、新しいTRAIN
およびTEST
ビューを作成し、ニューラル・ネットワーク・モデルを構築します。
表4-1 PCT精度比較
モデル | NUM_TEST_DIGITS | PCT_OVERALL_ACCURACY |
---|---|---|
抽出された特徴を入力とするNNモデル1 | 725 | 96 |
NMFデータの上位16個の特徴を持つNNモデル2 | 725 | 79.4483 |
各特徴ベクターに最高の係数を持つ元の属性を持つNNモデル3 | 725 | 96.1379 |
16個のNMFの特徴の投影を使用するNNモデルは、全体の精度が低いことがわかりました。ただし、NNへの入力として減少した属性セットを使用するモデル(NMFが最も重要であると示唆される64個の合計属性うち33個を使用)は、元の属性と比較すると、全体の精度がわずかに向上しています。
このようにして、アプリケーションでこれらのモデルのいずれかを使用して、受講者シートまたはフォームを読み取り、手書きの数字を認識できます。