機械学習モデルのトレーニング

完了

機械学習モデルのトレーニングには、特徴に適用できる許容できる正確な関数を決定し、対応するラベルを計算するために、機械学習アルゴリズムをトレーニング データに適合させる必要があります。 これは概念的に単純な考え方のように思えるかもしれません。ただし、トレーニングされたデータだけでなく、新しいデータに対して正確な予測を生成するモデルをトレーニングする実際のプロセスは困難であり、複数のアルゴリズムとパラメーターを使用してモデルを繰り返しトレーニングおよび評価する反復的なアプローチが含まれます。

データをトレーニングして検証する

機械学習モデルをトレーニングする場合の一般的なアプローチは、 トレーニング と検証のためにデータをサブセットにランダムに分割 することです。 その後、トレーニング データセットを使用してアルゴリズムに合わせてモデルをトレーニングし、保持した検証データでモデルのパフォーマンスをテストできます。 これにより、モデルが十分に一般化され、トレーニングされていないデータに対しても正確な予測を生成できることが保証されます。

トレーニングされたデータに対して適切に予測されるが、新しいデータではうまく機能しないモデルは、トレーニング データに 過剰に適合 していると説明されます。

通常は、約 70% のデータを使用してモデルをトレーニングし、検証のために約 30% を保持する必要があります。

機械学習のアルゴリズム

多くの機械学習アルゴリズムがあり、解決する必要がある機械学習の問題の種類に基づいて、さまざまなアルゴリズムの種類にグループ化されています。 ほとんどの機械学習フレームワークには、回帰と分類のための複数のアルゴリズムと、クラスタリングなどの教師なし機械学習の問題に対するアルゴリズムが含まれています。

解決するモデルを作成する問題の種類を特定したら、その種類の複数のアルゴリズムから選択できます。 各型内には、多くの場合、さまざまな種類の数学演算に基づいて、複数のアルゴリズムから選択できます。 たとえば、分類用のアルゴリズムのセット内には、次の種類のアルゴリズムがあります。

  • ロジスティック関数を繰り返し適用して、可能な各クラスの確率を表す 0 から 1 の値を計算し、予測されたクラスと実際の既知のラベル値の差に基づいて関数の係数を最適化するロジスティック回帰アルゴリズム。
  • 個々の特徴が考慮されるデシジョン ツリーを定義するツリーベースの関数。その値に基づいて、適切なクラス ラベルが決定されるまで、別の特徴が考慮されます。
  • 複数の手法を組み合わせて最適な全体的な予測関数を見つけるアンサンブル アルゴリズム。

"最適な" アルゴリズムはデータに依存し、通常、判断するには反復的な試行とエラーが必要です。

ハイパーパラメーター

機械学習アルゴリズムの パラメーター は、トレーニング対象のデータ特徴 (およびラベル) です。 さらに、ほとんどの機械学習アルゴリズムには、アルゴリズムの動作方法に影響を与えるために使用できる ハイパーパラメーター が用意されています。 ハイパーパラメーターを使用すると、モデルで許可するランダム性のレベル (十分に一般化されますが、それでも許容できる正確な予測が生成されます)、最適なモデルを見つけるために実行された反復回数 (トレーニング時間のオーバーフィットを回避して最適化できるようにする)、ツリー モデルで考慮される分岐の数などを制御できます。 およびその他のアルゴリズム固有の要因。

モデルフィッティング

モデルを実際にトレーニングするには、アルゴリズムをデータに合わせる必要があります。 これを行うために使用される特定の構文とデータ形式は、機械学習フレームワークによって異なる場合がありますが、原則は常に同じです。 教師あり機械学習の場合は、既知のラベルに基づいてアルゴリズムを特徴に適合させます。 教師なし機械学習の場合は、特徴を指定し、アルゴリズムがそれらを個別のクラスターに分割しようとします。

次の例は、Spark MLlib フレームワークを使用してロジスティック回帰モデルのトレーニングを開始するために使用されるコードを示しています。 トレーニング データは、ラベルが整数値の列にあり、対応する特徴が値の単一ベクトル (配列) として表されるデータフレームとして提供されます。 この例では、2 つのハイパーパラメーター (maxIterregParam) も指定されています。

from pyspark.ml.classification import LogisticRegression

lr = LogisticRegression(labelCol="label", featuresCol="features", maxIter=10, regParam=0.3)
model = lr.fit(training_df)