機械学習に関する質問と回答

Asked and Answered


回答者 Laura Martinez Molera


回帰学習器アプリのすべて

つのトピックを取り上げて、その背景について解説します。また、MATLAB® コミュニティや Simulink® コミュニティからのいくつかの質問にも回答します。


今回のコラムでは、回帰学習器アプリに関する質問をまとめています。アプリの概要について説明してから、5 つの質問を見ていきます。

1. 回帰学習器アプリは時系列データで使用できますか?

2. 学習時間を短縮するにはどうしたらよいですか?

3. 複数のモデルの結果とアプリで表示できる評価用プロットはどう解釈すればよいですか?

4. 平方根平均二乗誤差 (RMSE) が最小のモデルを選択しましたが、他にすべきことはありますか?

5. 新しいデータで予測を行うにはどうしたらよいですか?

このコラムでは、MATLAB の回帰学習器アプリについての質問に回答します。回帰一般に関するものではありません。

 

回帰学習器アプリは、2017 年からエンジニアや科学者に提供されています。回帰分析は、変数と数値的な応答の関係を理解するのに役立ち、エネルギー消費量、財務実績、製造工程パラメーターの予測などのタスクに適用することができます。

 

基本的には、回帰学習器アプリを使用することで、コードを記述せずに対話的に回帰モデルを構築し、モデルの精度と性能を測定することができます。さまざまな回帰モデルや機能の性能を迅速に比較することができます。

 

このアプリは、
機械学習
を始めたばかりの方に特に便利ですので、今回、アプリに直接関係する質問にお答えすることをとても楽しみにしています。

 

回帰学習器アプリに慣れていない方は、理解に役立つ以下のデモビデオをご覧ください。

質問 1

回帰学習器アプリは時系列データで使用できますか?

もちろんです。たとえば、回帰モデルを使用して電気負荷を予測したり、
嵐の被害額を予測したりすることができます

他の機械学習アプリケーションと同様に、時系列データをアプリで使用する前に、前処理を行い、データをクリーンにしておくことが重要です。これには、データの正しいフォーマットへの整形、すべて同じスケールでのデータの正規化、データの均等な分配、重複データや欠損データの処理、その他必要に応じたあらゆる作業が含まれます。

こちらは、Microsoft® Excel®シートに保存された時系列データの前処理に関する 5 分 44 秒のビデオです。また、
データ サイエンス チュートリアル
では、MATLAB を使用してデータをインポート、前処理、分析、および可視化する方法を紹介しています。


さらに、
MATLAB での時系列データの前処理
については、こちらのチートシートをご覧ください。

質問 2

学習に時間がかかりすぎます。モデルの学習時間を短縮するには、どうすればよいでしょうか?

回帰学習器アプリには、学習速度を上げるいくつかの方法があります。ここでは、アプリ自体の技術に焦点をあてています。


提案 1: 回帰モデルの並列学習を使用する

Parallel Computing Toolbox™をお持ちであれば、まずは回帰学習器モデルの並列学習をお試しいただけます。このオプションでは、並列プールを作成して並列学習を行い、作業を継続しながら複数のモデルの学習を同時に行うことができます。このオプションを選択すると、履歴リスト内の各学習とキュー送信されたモデルの進行状況インジケーターが表示され、個々のモデルのキャンセルもできます。この手法で、学習に費やす時間を短縮することができます。
 
回帰学習器アプリのメニューバーで [並列の使用] を選択します。

提案 2: ホールドアウト検証を使用する

お使いのデータが非常に大きい場合は、正しい検証オプションを使用しているかどうかをご確認ください。回帰学習器アプリで新しいセッションを開いてデータを選択した場合、既定では交差検証が選択されます。

 

交差検証は、データを k 分割し、モデルの学習を行い、すべての分割の平均テスト誤差を計算するのに役立ちます。この手法は、他のオプションと比較して過適合の防止に優れていますが、複数モデル学習を必要とするため、中小規模のデータセットではうまく機能します。

 

ホールドアウト検証では、スライダー コントロールを使用して、テストセットとして使用するデータの割合を選択することができます。アプリは、学習セットでモデルの学習を行い、テストセットでその性能を評価します。テストに使用されるモデルはデータの一部のみを基にするため、ホールドアウト検証は、特に大規模なデータセットに適しています。

 

もちろん、モデルの検証を行わないこともできますが、その場合、学習データへの過適合は回避できません。
回帰問題の検証オプションに関する詳細を見る

交差検証は、新しいセッションを開始するときに既定で選択されます。

提案 3: 特定のモデルのみでデータの学習を行う

ある特定のモデルでデータが機能すること、ある特定のモデルの学習に時間がかかりすぎることがわかっている場合は、アプリ内のすべてのモデルの学習を行うのではなく、その特定のモデルを選択または選択解除することができます。確信がない場合は、一般に学習の速いモデルをすべて学習させる [すべてのクイック学習] のオプションをお試しいただくことができます。その後、最良のモデルを見つけるには、平方根平均二乗誤差 (RMSE) が最小となった特定のグループのモデルをすべて学習させます。
回帰モデルの学習に関する詳細を見る

提案 4: 学習データをスリムにする

十分なデータを入手するにはどうしたらよいかということがよく議論されますが、ここで重要なのは、正しいデータが十分にあるかどうかということです。もう利用できない過去の不要なデータが残っているということもあるかもしれません。このようなデータの削減によって学習時間を短縮させることができますが、当然ながらデータの精度やデータ表現には注意する必要があります。データの削減は非常に慎重に行う必要があるため、他に選択肢がある場合は行わないようにします。

質問 3

複数のモデルの結果とアプリで表示できる評価用プロットはどう解釈すればよいですか?

これはとてもよい質問です。読み込んだデータで学習したモデルの結果を解釈するには、いくつかの手順が必要です。

手順 1: 平方根平均二乗誤差が最小のモデルを見つける


RMSE は、予測値と各モデルで観測された値の間の距離、つまり、これらの残差の広がりを測定します。このアプリでは、最小の RMSE が四角で囲まれます。



手順 2: モデルを調査する


最小の RMSE を含むモデルを選択し、次にアプリ内で
使用可能な異なるプロット
を確認します。よく使う 2 つのプロットは、[応答プロット] および [予測と実際のプロット] です。

最小の RMSE は太字になっていて、四角で囲まれています。

応答プロット

[応答プロット] は、観測値に対して予測した応答を垂直線で表示します。このプロットは、モデルの学習に使われていない、ホールドアウトされた観測値に対する予測値がプロット内に表示されるため、ホールドアウト検証または交差検証を使用している場合には、特に興味深い結果となります。
[応答プロット] を使用して予測値と観測値の間の距離を確認します。

予測と実際のプロット

[予測と実際のプロット] は、モデルの性能を確認するのに役立ちます。モデルの予測された応答が、実際の真の応答に対してプロットされます。このプロットでは、完全な回帰モデルであれば、予測された応答が観測された値と同じになるためすべての点が対角線上に並ぶことになります。しかし、現実にはそうはなりません。そこで、対角線にできるだけ近いところに点が位置し、対角線の周囲で大まかに左右対称になるよう分散することを目標にします。プロットでパターンを検出した場合、モデルが改良可能であることを意味します。別のモデルタイプの学習を行うか、または高度なオプションを使用することでモデルをより柔軟性の高いものにすることができます。

[予測と実際のプロット] は、回帰モデルの精度を可視化するのに役立ちます。

質問 4

RMSE が最小のモデルを選択したのですが、最適化するために他に必要なことはありますか?

データの初期モデルの学習を行って評価した後、モデルのハイパーパラメーターを調整することで、最高の性能を得られます。

 

モデルに最適なハイパーパラメーター値を自動的に選択して求めるには、
ハイパーパラメーター最適化機能
を使用します。このアプリは、モデルの平均二乗誤差 (MSE) を最小にするために、さまざまなハイパーパラメーター値の組み合わせを試行し、最適化されたハイパーパラメーターで新しいモデルを返します。

 

ハイパーパラメーター調整の影響はモデルによって異なるため、初期モデルでは最適な性能を得られない場合があります。この場合、複数のタイプのモデルでハイパーパラメーターを最適化する必要があります。

質問 5

予測を行うにはどうしたらよいですか?

十分に学習済みの最適化されたモデルを使用して新しいデータで予測を行うには、モデルを別の場所に送る必要があります。MATLAB のワークスペースにエクスポートしたり、アプリと同じ手順でモデルの学習を行うための MATLAB コードを生成したりすることができます。そこから、MATLAB Compiler™ を使用してモデルを展開するか、MATLAB Coder™ を使用してモデルから C/C++ コードを生成することができます。

例を参照して、必要な手順についてご確認ください

最後までお読みいただき、ありがとうございました。機械学習に関して、このコラムで取り上げて欲しいご質問などがありましたら、以下のフォームから送りください。

ご提案いただきありがとうございます。