# tSVMModel

指定されたエレメントを分類するためにtPredictで使えるSVMベースの分類子モデルを生成します。

tSVMModelはSVMアルゴリズムを適用して、通常tModelEncoderによって準備および提供される機能ベクターを分析します。

この分析からバイナリ分類モデルを生成し、このモデルをメモリまたはHDFSやS3など、このコンポーネントでサポートされているファイルシステムに書き込みます。

ローカルモードでは、Apache Spark 2.4.0以降のバージョンがサポートされています。

デフォルトで、このコンポーネントはTalend Studioと共には出荷されていません。機能マネージャーを使ってインストールする必要があります。 詳細は、[機能マネージャーを使って機能をインストール](https://help.qlik.com/talend/r/ja-JP/8.0/studio-user-guide/install-features-to-talend-studio)をご覧ください。

## Apache Spark BatchのtSVMModelプロパティ

これらのプロパティは、Spark Batchジョブのフレームワークで実行されているtSVMModelを設定するために使われます。

Spark BatchのtSVMModelコンポーネントは、機械学習ファミリーに属しています。

このコンポーネントは、ビッグデータ対応のTalend製品およびTalend Data Fabricで利用できます。

## 基本設定

| プロパティ | 説明 |
| --- | --- |
| [Schema] (スキーマ)と[Edit schema] (スキーマを編集) | スキーマとは行の説明のことです。処理して次のコンポーネントに渡すフィールド(カラム)数を定義します。Sparkジョブを作成する場合、フィールドの命名時は予約語のlineを避けます。<br><br>スキーマを変更するには[Edit schema] (スキーマを編集)をクリックします。現在のスキーマがリポジトリータイプの場合は、3つのオプションを利用できます。<br><br><ul> <li> <p> <span>[View schema] (スキーマを表示)</span>: スキーマのみを表示する場合は、このオプションを選択します。</p> </li> <li> <p> <span>[Change to built-in property] (組み込みのプロパティに変更)</span>: ローカルで変更を行うためにスキーマを<span>組み込み</span>に変更する場合は、このオプションを選択します。</p> </li> <li> <p> <span>[Update repository connection] (リポジトリー接続をアップデート)</span>: リポジトリーに保存されているスキーマに変更を加え、変更後にそのコンテンツをすべてのジョブにプロパゲートするかどうかを決める場合は、このオプションを選択します。</p> <p>変更を現在のジョブにのみ反映する場合は、変更後、<span>[No] (いいえ)</span>を選択し、<span>[Repository Content] (リポジトリーコンテンツ)</span>ウィンドウで再びこのスキーマのメタデータを選択します。</p> </li> </ul> |
| Label (ラベル) | 分類ラベルの提供に使う入力カラムを選択します。このカラムのレコードは、分類されるエレメントのクラス名(分類の対象)として使われます。<br><br>SVMモデルはバイナリ分類モデルであるため、2つのクラスのみが予期されます。つまり、このカラムからは2つの異なる値のみが予期されます。 |
| [Vector to process] (処理するVector) | 機能を提供するために使う入力カラムを選択します。多くの場合、このカラムはtModelEncoderによって実行された機能エンジニアリング計算の出力です。 |
| [Save the model on file system] (モデルをファイルシステムに保存) | 特定のファイルシステムにモデルを保管する場合は、このチェックボックスを選択します。オフの場合、モデルはメモリに保管されます。参照用のボタンはSpark [Local] (ローカル)モードでは機能しません。Spark YarnまたはSpark [Standalone] (スタンドアロン)モードを使用している場合は、同じジョブ内のtHDFSConfigurationなどの設定コンポーネントで接続を適切に設定したことを確認する必要があります。 |
| [Step size] (ステップサイズ) | 勾配降下法計算の最初のステップのサイズ(数値)を入力します。デフォルト値*1.0*は、データセット全体が取得されることを意味します。<br><br>多くの場合、最適なステップサイズの選択は実際には微妙です。<br><br>一般的に、分析する機能ポイントが非常に混雑している場合、各反復で十分な数のポイントをカバーするために、ステップサイズを大きくすることをお勧めします。ただし、ステップサイズが大きすぎると、各反復の時間が不適切に長くなる可能性があることにご注意ください。<br><br>一方、ステップサイズが小さいほど、収束が遅くなり、より正確なモデルが期待できます。 |
| [Number of iterations] (反復回数) | ジョブを実行してモデルをトレーニングする反復回数を入力します。 |
| [Fraction of data to be used per iteration] (反復ごとに使用するデータ片) | 勾配を計算するために各反復で使われる入力データの割合(10進数で表現)を入力します。<br><br>デフォルト値である1.0は、データセット全体が取得されることを意味します。 |
| [Regularization parameter] (規則化パラメーター) | 学習の過剰適合を回避するために、[Updater function] (Updaterファンクション)が使う正規化番号を入力します。 |
| [Updater function] (Updaterファンクション) | 2つのクラスを分離する超平面のフォームを計算するファンクションを選択します。<br><br>このファンクションは、指定された方向に勾配ステップを実行して超平面を形成するように、各反復のすべてのポイントの重みをアップデートします。<br><br>たとえば、2次元空間では、分類される点が線形的に分離可能な場合、この超平面は線または線のセットになる可能性があります。<br><br>使用可能なファンクションは次のとおりです。<br><br><ul> <li> <p> <span>[Simple] (シンプル)</span>: <span>[Regularization parameter] (正規化パラメーター)</span>は使いません。</p> </li> <li> <p> <span>L1</span>: L1正規化を実行します。</p> </li> <li> <p> <span>[Squared L2] (2乗L2)</span>: L2正規化を実行します。</p> </li> </ul> |
| [Gradient function] (勾配ファンクション) | 損失ファンクションを選択して、超平面といずれかのクラスの最も近い点との間のマージンを計算します。<br><br>このドロップダウンリストで使える損失ファンクションの詳細は、[分類の損失ファンクションを](https://en.wikipedia.org/wiki/Loss_functions_for_classification)ご覧ください。 |

## 詳細設定

| プロパティ | 説明 |
| --- | --- |
| [Use feature scaling] (機能スケーリングの使用) | トレーニングデータが収束できない場合は、このチェックボックスをオンにして、 tSVMModelが機能データをスケーリングすることにより条件数をヒューリスティックに減らします。<br><br>多くの場合、条件数を減らすと収束率が向上します。 |
| [Intercept] (インターセプト) | このチェックボックスをオンにすると、tSVMModelがインターセプト定数を自動的に計算し、それらを計算に含めます。<br><br>一般に、インターセプトはモデルの残差の平均がゼロであることを保証できます。 |
| [Validate data before training] (トレーニング前にデータを検証) | このチェックボックスをオンにして、トレーニングを開始する前にトレーニングデータのベクターが適切にフォーマットされているかどうかを確認します。 |

## 使用方法

| 使用方法のガイダンス | 説明 |
| --- | --- |
| **使用ルール** | このコンポーネントは、終了コンポーネントとして使用され、入力リンクを必要とします。<br><br>反復の最大数、またはステップサイズなどの停止条件を調整することで、トレーニングプロセスの加速が可能になります。ただし、トレーニングの停止が早すぎると精度に影響が生じるおそれがあります。 |
| [Model evaluation] (モデル評価) | 設定する必要があるパラメーターは自由パラメーターであるため、値は以前の実験や経験的推測などによって提供される場合があります。すべてのデータセットに適用できる最適値はありません。<br><br>したがって、最適な混同行列が得られるまで、さまざまなパラメーター値のセットを使って生成する分類子モデルをトレーニングする必要があります。ただし、モデルをスコアでランク付けするためには自分で評価コードを記述する必要があります。<br><br>分類子モデルのトレーニングに使うアルゴリズムに応じて、使うスコアを選択する必要があります。これにより、最も適切な混同行列を作成できます。<br><br>混同行列を分類用のTalendジョブに使う方法の例は、[スパムをフィルタリングする分類モデルを作成](https://help.qlik.com/talend/r/ja-JP/8.0/components/machine-learning/classification-model)をご覧ください。<br><br>混同行列に関する一般的な説明は、Wikipediaのhttps://en.wikipedia.org/wiki/Confusion\_matrixをご覧ください。 |
| [Spark Connection] (Spark接続) | [Run] (実行)ビューの[Spark configuration] (Spark設定)タブで、ジョブ全体でのSparkクラスターへの接続を定義します。また、ジョブでは、依存jarファイルを実行することを想定しているため、Sparkがこれらのjarファイルにアクセスできるように、これらのファイルの転送先にするファイルシステム内のディレクトリーを指定する必要があります。<br><br><ul> <li> <div> <span>Yarnモード</span>(YarnクライアントまたはYarnクラスター):<ul> <li> <p>Google Dataprocを使用している場合、<span>[Spark configuration] (Spark設定)</span>タブの<span>[Google Storage staging bucket] (Google Storageステージングバケット)</span>フィールドにバケットを指定します。</p> </li> <li> <p>HDInsightを使用している場合、<span>[Spark configuration] (Spark設定)</span>タブの<span>[Windows Azure Storage configuration] (Windows Azure Storage設定)</span>エリアでジョブのデプロイメントに使用するブロブを指定します。</p> </li> <li>Altusを使用する場合は、<span>[Spark configuration] (Spark設定)</span>タブでジョブのデプロイにS3バケットまたはAzure Data Lake Storageを指定します。</li> <li> <p>オンプレミスのディストリビューションを使用する場合は、クラスターで使われているファイルシステムに対応する設定コンポーネントを使用します。一般的に、このシステムはHDFSになるため、<a href="https://help.qlik.com/talend/r/ja-JP/8.0/components/hdfs/thdfsconfiguration">tHDFSConfiguration</a>を使用します。</p> </li> </ul> </div> </li> <li> <p> <span>[Standalone mode] (スタンドアロンモード)</span>: クラスターで使われているファイルシステム(<a href="https://help.qlik.com/talend/r/ja-JP/8.0/components/hdfs/thdfsconfiguration-properties-for-apache-spark-batch">tHDFSConfiguration Apache Spark Batch</a>や<a href="https://help.qlik.com/talend/r/ja-JP/8.0/components/amazon-s3/ts3configuration-properties-for-apache-spark-batch">tS3Configuration Apache Spark Batch</a>など)に対応する設定コンポーネントを使用します。</p> <p>ジョブ内に設定コンポーネントがない状態でDatabricksを使用している場合、ビジネスデータはDBFS (Databricks Filesystem)に直接書き込まれます。</p> </li> </ul><br><br>この接続は、ジョブごとに有効になります。 |