機械学習アルゴリズムの説明

機械学習とディープラーニングは広く受け入れられており、さらに広く誤解されています。この記事では、機械学習とディープラーニングの両方を基本的な用語で説明し、最も一般的な機械学習アルゴリズムのいくつかについて説明し、それらのアルゴリズムが予測モデルを作成するパズルの他の部分とどのように関連しているかを説明します。履歴データから。

機械学習アルゴリズムとは何ですか?

機械学習は、データからモデルを自動的に作成するためのメソッドのクラスであることを思い出してください。機械学習アルゴリズムは機械学習のエンジンです。つまり、データセットをモデルに変換するアルゴリズムです。どの種類のアルゴリズム(教師あり、教師なし、分類、回帰など)が最適に機能するかは、解決する問題の種類、利用可能なコンピューティングリソース、およびデータの性質によって異なります。

機械学習の仕組み

通常のプログラミングアルゴリズムは、コンピュータに簡単な方法で何をすべきかを指示します。たとえば、並べ替えアルゴリズムは、順序付けされていないデータを、いくつかの基準、多くの場合、データ内の1つ以上のフィールドの数字またはアルファベット順で順序付けられたデータに変換します。

線形回帰アルゴリズムは、直線、または多項式などのパラメーターが線形である別の関数を、通常は行列の反転を実行して直線とデータの間の二乗誤差を最小化することにより、数値データに適合させます。回帰直線がデータポイントの上にあるか下にあるかは関係ないため、二乗誤差がメトリックとして使用されます。線と点の間の距離だけが気になります。

パラメータが線形ではない曲線をデータ適合させる非線形回帰アルゴリズムは、線形回帰の問題とは異なり、決定論的方法では解決できないため、もう少し複雑です。代わりに、非線形回帰アルゴリズムは、ある種の反復最小化プロセスを実装します。多くの場合、最急降下の方法にいくつかのバリエーションがあります。    

最急降下法は基本的に、現在のパラメーター値で二乗誤差とその勾配を計算し、ステップサイズ(別名学習率)を選択し、「丘を下る」勾配の方向に従い、新しい二乗誤差とその勾配を再計算します。パラメータ値。最終的に、運が良ければ、プロセスは収束します。最急降下法のバリアントは、収束特性を改善しようとします。

機械学習アルゴリズムは、非線形回帰よりもさらに単純ではありません。これは、機械学習が、多項式などの特定の数学関数に適合するという制約がないためです。機械学習によって解決されることが多い問題には、回帰と分類という2つの主要なカテゴリがあります。回帰は数値データ(たとえば、特定の住所と職業を持つ人の収入の可能性はどれくらいですか?)であり、分類は非数値データ(たとえば、申請者はこのローンをデフォルトにしますか?)です。

予測の問題(たとえば、明日のMicrosoft株の始値はどうなりますか?)は、時系列データの回帰問題のサブセットです。分類の問題は、バイナリ(yesまたはno)とマルチカテゴリの問題(動物、野菜、または鉱物)に分けられることがあります。

教師あり学習と教師なし学習

これらの部門とは別に、教師ありと教師なしの2種類の機械学習アルゴリズムがあります。では教師あり学習、あなたはこのような動物の名前と一緒に動物の絵の集合としての答え、とのトレーニングデータセットを提供します。そのトレーニングの目標は、以前は見たことのない(トレーニングセットに含まれている種類の動物の)写真を正しく識別できるモデルになることです。

では教師なし学習、アルゴリズムは、意味のある結果を思い付くデータそのものと試行を通過します。結果は、たとえば、各クラスター内で関連付けられる可能性のあるデータポイントのクラスターのセットになる可能性があります。これは、クラスターがオーバーラップしない場合にうまく機能します。

トレーニングと評価は、パラメータを最適化してデータのグラウンドトゥルースに最適な値のセットを見つけることにより、教師あり学習アルゴリズムをモデルに変換します。アルゴリズムは、オプティマイザーの最急降下法の変形に依存することがよくあります。たとえば、確率的勾配降下法(SGD)は、ランダム化された開始点から複数回実行される本質的に最急降下法です。SGDの一般的な改良点は、運動量に基づいて勾配の方向を修正したり、データの1つのパス(エポックと呼ばれる)から次のパスへの進行に基づいて学習率を調整したりする要素を追加します。

機械学習のためのデータクリーニング

野生のクリーンなデータのようなものはありません。機械学習に役立つようにするには、データを積極的にフィルタリングする必要があります。たとえば、次のようにします。

  1. データを確認し、欠落しているデータが多い列を除外します。
  2. データをもう一度見て、予測に使用する列を選択します。(これは、反復するときに変更したいものです。)
  3. 残りの列にまだデータが欠落している行を除外します。
  4. 明らかなタイプミスを修正し、同等の回答をマージします。たとえば、米国、米国、米国、およびアメリカは、単一のカテゴリにマージする必要があります。
  5. 範囲外のデータを含む行を除外します。たとえば、ニューヨーク市内のタクシー旅行を分析している場合、大都市圏の境界ボックスの外側にあるピックアップまたはドロップオフの緯度と経度の行を除外する必要があります。

できることはもっとたくさんありますが、それは収集されたデータに依存します。これは面倒な場合がありますが、機械学習パイプラインでデータクリーニングの手順を設定すると、自由に変更して繰り返すことができます。

機械学習のためのデータのエンコードと正規化

マシン分類にカテゴリデータを使用するには、テキストラベルを別の形式にエンコードする必要があります。2つの一般的なエンコーディングがあります。

1つはラベルエンコーディングです。これは、各テキストラベル値が数値に置き換えられることを意味します。もう1つワンホットエンコーディングです。これは、各テキストラベル値がバイナリ値(1または0)の列に変換されることを意味します。ほとんどの機械学習フレームワークには、変換を行う関数があります。ラベルエンコーディングは、機械学習アルゴリズムを混乱させて、エンコードされた列が順序付けられていると考えることがあるため、一般に、ワンホットエンコーディングが推奨されます。

マシン回帰に数値データを使用するには、通常、データを正規化する必要があります。そうしないと、範囲が広い数値が特徴ベクトル間のユークリッド距離を支配する傾向があり、他のフィールドを犠牲にしてその効果を拡大でき、最急降下最適化の収束が困難になる可能性があります。MLのデータを正規化および標準化するには、最小-最大正規化、平均正規化、標準化、単位長へのスケーリングなど、いくつかの方法があります。このプロセスは、多くの場合、機能スケーリングと呼ばれます

機械学習機能とは何ですか?

前のセクションで特徴ベクトルについて言及したので、それらが何であるかを説明する必要があります。まず第一に、特徴は、観察されている現象の個々の測定可能な特性または特性です。「特徴」の概念は、線形回帰などの統計手法で使用される説明変数の概念に関連しています。特徴ベクトルは、単一行のすべての特徴を数値ベクトルに結合します。

機能を選択する技術の一部は、問題を説明する独立変数の最小セットを選択することです。2つの変数の相関が高い場合は、それらを1つの機能に結合するか、1つを削除する必要があります。主成分分析を実行して、相関変数を線形無相関変数のセットに変換することがあります。

人々が新しい特徴を構築したり、特徴ベクトルの次元を減らしたりするために使用する変換のいくつかは単純です。たとえば、Year of Birthから減算してYear of Death、を作成しますAge at Death。これは、生涯および死亡率の分析のための主要な独立変数です。他の場合では、特徴の構築はそれほど明白ではないかもしれません。

一般的な機械学習アルゴリズム

線形回帰やロジスティック回帰からディープニューラルネットワークやアンサンブル(他のモデルの組み合わせ)まで、複雑さの範囲で数十の機械学習アルゴリズムがあります。ただし、最も一般的なアルゴリズムには次のものがあります。

  • 線形回帰、別名最小二乗回帰(数値データの場合)
  • ロジスティック回帰(二項分類用)
  • 線形判別分析(マルチカテゴリ分類用)
  • 決定木(分類と回帰の両方)
  • ナイーブベイズ(分類と回帰の両方)
  • K最近傍法、別名KNN(分類と回帰の両方)
  • 学習ベクトル量子化、別名LVQ(分類と回帰の両方)
  • サポートベクターマシン、別名SVM(バイナリ分類用)
  • 「バギング」アンサンブルアルゴリズムの一種であるランダムフォレスト(分類と回帰の両方)
  • AdaBoostやXGBoostなどのブースティング手法は、一連のモデルを作成するアンサンブルアルゴリズムであり、新しいモデルごとに前のモデルのエラーを修正しようとします(分類と回帰の両方)

私たちがよく耳にするニューラルネットワークとディープニューラルネットワークはどこにありますか?これらは、GPUまたはその他の特殊なハードウェアが必要になるほど計算集約的である傾向があるため、画像分類や音声認識など、単純なアルゴリズムには適していない特殊な問題にのみ使用する必要があります。「深い」とは、ニューラルネットワークに多くの隠れ層があることを意味することに注意してください。

ニューラルネットワークとディープラーニングの詳細については、「ディープラーニングの実際の意味」を参照してください。

機械学習アルゴリズムのハイパーパラメータ

機械学習アルゴリズムは、データをトレーニングして、予測値またはクラスに影響を与える各独立変数の最適な重みのセットを見つけます。アルゴリズム自体には、ハイパーパラメータと呼ばれる変数があります。これらは、決定される重みではなくアルゴリズムの動作を制御するため、パラメーターではなくハイパーパラメーターと呼ばれます。

最も重要なハイパーパラメータは、多くの場合、学習率です。これは、最適化するときに試行する次の重みのセットを見つけるときに使用されるステップサイズを決定します。学習率が高すぎると、最急降下法がプラトーまたは次善のポイントにすぐに収束する可能性があります。学習率が低すぎると、最急降下法が停止し、完全に収束しない場合があります。

他の多くの一般的なハイパーパラメータは、使用されるアルゴリズムによって異なります。ほとんどのアルゴリズムには、エポックの最大数、実行の最大時間、エポックからエポックへの最小の改善などの停止パラメーターがあります。特定のアルゴリズムには、検索の形状を制御するハイパーパラメータがあります。たとえば、ランダムフォレスト分類器には、葉ごとの最小サンプル、最大深度、分割時の最小サンプル、葉の最小重量分率などのハイパーパラメータがあります。

ハイパーパラメータ調整

現在、いくつかの本番機械学習プラットフォームが自動ハイパーパラメータ調整を提供しています。基本的に、変更するハイパーパラメータと、場合によっては最適化するメトリックをシステムに指示すると、システムは、許可された数の実行にわたってそれらのハイパーパラメータをスイープします。(Google CloudハイパーパラメータチューニングはTensorFlowモデルから適切な指標を抽出するため、指定する必要はありません。)

ハイパーパラメータをスイープするための3つの検索アルゴリズムがあります:ベイズ最適化、グリッド検索、およびランダム検索。ベイズ最適化が最も効率的である傾向があります。

できるだけ多くのハイパーパラメータを調整すると、最良の答えが得られると思います。ただし、自分の個人用ハードウェアで実行していない限り、非常に高額になる可能性があります。いずれにせよ、収穫逓減があります。経験を積むと、データとアルゴリズムの選択にとってどのハイパーパラメータが最も重要であるかがわかります。

自動機械学習

アルゴリズムの選択について言えば、どのアルゴリズムまたはアルゴリズムのアンサンブルがデータに最適なモデルを提供するかを知る唯一の方法があり、それはそれらすべてを試すことです。可能なすべての正規化と機能の選択も試してみると、組み合わせ爆発に直面しています。

すべてを手動で試すことは現実的ではないため、もちろん機械学習ツールプロバイダーはAutoMLシステムのリリースに多大な努力を払ってきました。最良のものは、機能エンジニアリングとアルゴリズムおよび正規化のスイープを組み合わせたものです。最適なモデルのハイパーパラメータ調整は、多くの場合、後で残されます。ただし、機能エンジニアリングは自動化するのが難しい問題であり、すべてのAutoMLシステムがそれを処理するわけではありません。

要約すると、機械学習アルゴリズムは機械学習パズルのほんの一部です。アルゴリズムの選択(手動または自動)に加えて、オプティマイザー、データクリーニング、特徴選択、特徴正規化、および(オプションで)ハイパーパラメーター調整を処理する必要があります。

これらすべてを処理し、データに対して機能するモデルを構築したら、モデルをデプロイし、条件の変化に応じてモデルを更新します。ただし、本番環境で機械学習モデルを管理することは、他のすべてのワームの可能性です。