🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
MATLAB

MATLABはMathWorksで開発された数値計算や数値の視覚化のための高水準の対話型プログラミング環境です。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

1回答

1364閲覧

ガウス過程回帰で将来値を求めたい

mooo.

総合スコア2

MATLAB

MATLABはMathWorksで開発された数値計算や数値の視覚化のための高水準の対話型プログラミング環境です。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2020/12/23 06:05

プログラミング初心者の学生です、わかる方ご教授いただけると幸いです。

以下matalbのHP「テーブル内のデータの使用による GPR モデルの学習」
を参考にしてtxtファイルからデータを読み込み、データを学習させ、将来予測を行いたいです。
現状
x軸:データナンバーになっている。(与えていないのに)
学習させたはずだが、予測値、回帰式がない。

理想
X:時間軸、Y:予測したい数値
回帰式が出てきて将来値を求めたい。

参照URL(matlab:ガウス過程回帰)

matlab

1addpath '/Users/XXX/Documents' 2T=readtable('ファイル名.txt') 3gprMdl = fitrgp(T,'Weight_Square','KernelFunction','ardsquaredexponential',... 4'FitMethod','sr','PredictMethod','fic','Standardize',1) 5ypred = resubPredict(gprMdl); 6figure(); 7plot(T.Weight_Square,'r.'); 8hold on 9plot(ypred,'b'); 10xlabel('x'); 11ylabel('y'); 12legend({'data','predictions'},'Location','Best'); 13axis([0 4000 0 0.5]); 14hold off;

上記プログラムの結果として得られたもの

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2020/12/23 07:27 編集

> x軸:データナンバーになっている。(与えていないのに) 与えてないから、そうなっているのです > X:時間軸、Y:予測したい数値 横軸を時間にしたければ、 plot(時間が入ってる変数, T.Weight_Square,'r.'); plot(時間が入ってる変数, ypred,'b'); と、MATLABに教えてあげないといけません
mooo.

2020/12/23 14:48

ご教授いただきありがとうございます。 ご指摘の通りに修正すると軸も変更され予測の直線が描かれました。 何度も申し訳ありませんが、直線の式を確認する方法はあるのでしょうか。 また、曲線などに変更することは可能なのでしょうか。
jbpb0

2020/12/25 13:22

> 回帰式が出てきて https://cyberagent.ai/blog/research/10245/ の「サンプル数2のとき,3つ目の予測値はどうなるか」と書いてあるところのすぐ上の式の、N(...) のかっこの中の「,」より前が、予測値の平均値を計算する式です これが実際にどのような形になるのかが、学習に使ったサンプルデータ数が2個の場合に具体的に書いてあるのが、「サンプル数2のとき,3つ目の予測値はどうなるか」の下の式です 「上式から,以下のように考えることができます.」のすぐ上の式の {...} のかっこの中に、4個の項があります そこの項の数は、学習に使ったサンプルデータ数をN個とすると、N×N個になります その例の場合は、学習に使ったサンプルデータ数=2個なので、項数は2×2=4個しかないため、式は簡単に書けます 現実の問題に適用する場合、学習に使うサンプルデータ数が数個しかない場合は、めったにないでしょう もっとたくさんのデータを使って学習する場合がほとんどでしょう その場合は、当然式の項数もとても増えます たとえば、学習サンプルデータ数=100個の場合は、項数は100×100=10000個となります 学習サンプルデータ数=1000個の場合は、項数は1000×1000=1000000個となります そんな項数がものすごく多い式を表示させても、画面が文字だらけになって、わけがわからないですよ
mooo.

2020/12/29 04:45

ご丁寧にありがとうございます。 統計学的回帰のように式を出すことが現実的に可能であると勝手に考えていましたが、 私の機械学習の知識がなく考えが浅はかだったようです。 質問の内容もご教授いただいた内容で十二分解決した為ベストアンサーに指名させて頂きたいのですが、いかがでしょうか。
guest

回答1

0

ベストアンサー

x軸:データナンバーになっている。(与えていないのに)

与えてないから、そうなっているのです

X:時間軸、Y:予測したい数値

横軸を時間にしたければ、
plot(時間が入ってる変数, T.Weight_Square,'r.');
plot(時間が入ってる変数, ypred,'b');
と、MATLABに教えてあげないといけません

回帰式が出てきて

シンプルなベイズ最適化について
の「サンプル数2のとき,3つ目の予測値はどうなるか」と書いてあるところのすぐ上の式の、N(...) のかっこの中の「,」より前が、予測値の平均値を計算する式です

これが実際にどのような形になるのかが、学習に使ったサンプルデータ数が2個の場合に具体的に書いてあるのが、「サンプル数2のとき,3つ目の予測値はどうなるか」の下の式です
「上式から,以下のように考えることができます.」のすぐ上の式の {...} のかっこの中に、4個の項があります
そこの項の数は、学習に使ったサンプルデータ数をN個とすると、N×N個になります
その例の場合は、学習に使ったサンプルデータ数=2個なので、項数は2×2=4個しかないため、式は簡単に書けます

現実の問題に適用する場合、学習に使うサンプルデータ数が数個しかない場合は、めったにないでしょう
もっとたくさんのデータを使って学習する場合がほとんどでしょう
その場合は、当然式の項数もとても増えます
たとえば、学習サンプルデータ数=100個の場合は、項数は100×100=10000個となります
学習サンプルデータ数=1000個の場合は、項数は1000×1000=1000000個となります
そんな項数がものすごく多い式を表示させても、画面が文字だらけになって、わけがわからないですよ

将来予測を行いたい

将来予測ということは、外挿ですよね
外挿は、カーネルの選び方でかなり変わります
【機械学習+外挿】機械学習モデルで外挿してみた

投稿2020/12/31 05:53

jbpb0

総合スコア7653

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mooo.

2021/01/01 07:06

とても参考になりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問