ディープラーニングについてディープにラーニング。

思いっきり、自分が学んだことのアウトプットしていきますが、何分初心者。もし何かアドバイス等頂けましたら幸いです!

共分散について

最近はめっぽう数学にはまっている。
もう少ししたら、パイトーチのSSDに進むが、
なにぶん、ここまで数学を全くやってこなかったので、
年末年始の休みでいっきに数学の基礎を知ろうとしている段階だ。

あぁ、早くコード書きたい笑

共分散

聞きなれない言葉だが、
共分散とは、2組のデータの関係性を表現する数値のこと。

あまり初めはぴんと来なかったが、例を出すと理解が深まった。

では、どうやって求めるのか?

初めにテキストで書いておく、

①まずは、それぞれ数値のへいきんをとる。
②それぞれの数値を平均点と引き算し、それぞれ対応する数値をかける
③かけたものを全て足算して、最後にまた平均値をとる
この結果が
正:Xは大きい場合、Yも大きく、XがちいさければYも小さい
0ないし0に近い:XとYはあまり関係がない
負:Xが大きかったらYが小さく、Xが小さかったら、Yが大きい傾向にある

では、例を出す。
国語の点数(X)と数学の点数(Y)がそれぞれ下記の通りだったとしよう。

X=50、70、40、60、80
Y=60、80、50、50、70

f:id:kawam0t0:20200101191520p:plain


そうすると結果が正の数値であったため、Xが大きければ、Yも大きく、
Xが小さければ、Yも小さくなる、という傾向にあることが分かった。

import numpy as np
import matplotlib.pyplot as plt
 
x = np.array([50, 70, 40, 60, 80])  # 数学の点数
y = np.array([60, 80, 50, 50, 70])  # 英語の点数
z = np.array([60, 40, 60, 40, 30])  # 国語の点数

cov_xy = np.average((x-np.average(x))*(y-np.average(y)))
print("cov_xy", cov_xy)

cov_xz = np.average((x-np.average(x))*(z-np.average(z)))
print("cov_xz", cov_xz)

plt.scatter(x, y, marker="*", label="xy")
plt.scatter(x, z, marker="+", label="xz")
plt.legend()
plt.show()

f:id:kawam0t0:20200101191656p:plain