質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1299閲覧

重回帰分析の学習をしていた際に分からない問題がありました

aae_11

総合スコア178

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2020/02/08 01:30

編集2020/02/08 01:32

Pythonでの重回帰分析の基礎を学習をしていた際に、出てきた問題なのですが、以下の画像における求める「w」は何を表しているのでしょうか...?
イメージ説明
どなたか、教えて頂けましたら幸いです。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

回帰係数の行列ですね。

Xは(4, 3)の行列、yは(4, 1)の行列なので、w=(X^T X)^{-1}X^T yは(3, 1)の行列になり、Xwでyを予測することができます。

追記

実際に計算してみると理解が深まります。

python

1import numpy as np 2 3X = np.array([[1,2,3], 4 [1,2,5], 5 [1,3,4], 6 [1,5,9]]) 7y = np.array([[1], 8 [5], 9 [6], 10 [8]]) 11 12w = np.linalg.inv(X.T @ X) @ X.T @ y 13 14print(repr(w)) 15print(repr(X @ w)) 16 17""" => 18array([[-0.14285714], 19 [ 0.71428571], 20 [ 0.57142857]]) 21array([[3. ], 22 [4.14285714], 23 [4.28571429], 24 [8.57142857]]) 25""" 26

二次元配列風表現の行列として書いてみると、たとえば[[1,2,3]][[-0.14285714],[ 0.71428571],[ 0.57142857]]をかけると[[3]]が得られます。こういう感じでそれなりの予測ができる訳です。

投稿2020/02/08 01:39

編集2020/02/08 01:55
hayataka2049

総合スコア30935

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

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

aae_11

2020/02/08 01:44

ご回答ありがとうございます。 なんとなくですが、分かった気がします! つまる所、行列「x」の1行目の「1,2,3」だった場合に、yが「1」といった具合に、yを予測する為の計算方法が、「 (X^T X)^{-1}X^T y 」であるといった感じでしょうか...?
hayataka2049

2020/02/08 01:56

そうですね。行列積を求めればそのまま予測が行なえます。ちょっとpythonコードの例を追記しました。
aae_11

2020/02/08 02:10

追記ありがとうございます。 お手数をおかけし申し訳ないのですが、少しばかり疑問な点がありお聞きしたいのですが、「x」と「w」をかけますと、「3」の他に、3つのデータが格納されています。この他の3つのデータはどのようなものなのでしょうか? また、仮に、新たなデータを追加し(xに新たな行を追加)、その結果(y)を求めたい場合、その新たなデータに対して、のみパラメーターである「w」をかければ良いのではないのでしょうか...?
hayataka2049

2020/02/08 02:16

Xは(4, 3)の行列なのを思い出していただきたいのですが、(3, 1)の行列と掛け合わせると(4, 1)の行列が得られます。 どういう演算になるかというと、Xの個々の行に対して係数をかけ合わせますから、[[1,2,3]]@w, [[1,2,5]]@w,[[1,3,4]]@w, [[1,5,9]]@wがそれぞれ得られます。得られた(4, 1)の行列は観測されたデータ点すべてに対応する予測を行っていることになります。 新たなデータを予測する場合、実装としてはXの行を追加するのではなく、新たなデータの配列を用意してwをかければよいのではないでしょうか。
aae_11

2020/02/08 02:25

ご説明頂き、ありがとうございます。 なるほどです... 少し、勘違いしてしまっていたのですが、予測として出た「3」というのは、xのデータ[1,2,3]に対応していて、次のデータ [1,2,5]は[4.14285714]に対応しているといった形で、それぞれの行に対応した予測結果がxwであるということでしょうか...?
hayataka2049

2020/02/08 02:29

はい、そういうことになります。
aae_11

2020/02/08 02:32

少々混乱していたのですが、理解することができました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問