#線形回帰モデル
線形回帰は、連続値をとる目的変数yと説明変数xの線形関係をモデル化します。線形関係とは、説明変数が増加(減少)するのに応じて、目的変数も単調に増加(減少)する関係です。説明変数が一つの場合を単回帰と呼び、説明変数が複数の場合を重回帰と呼びます。単回帰の式は、目的変数と説明変数の関係をモデル化する線形回帰モデルは以下で定義される。
{y = w_0 + w_1x}
重回帰の式は、目的変数を説明変数の線形和で表現する線形回帰モデルは以下で定義されます。
{y = w_0x_0 + w_1x_1 + \cdots +w_mx_m = \sum^m_{i=0}w_ix_i}
確率的勾配降下法におけるパラメータθの更新式
θ_{t+1}=θ_{t}-\frac{\partial{f}}{\partial{x}}
モーメンタムにおけるパラメータθの更新式
θ_{t+1}=θ_{t}-\frac{\partial{f}}{\partial{x}}
#非線形回帰モデル
回帰モデルが線形でないモデル。
非線形の場合は、基底展開法を用いる。
基底関数
ある関数を表現するの基底ベクトルのこと。
対象となる空間に属する全ての元(関数)は、この基底関数の線形結合で表される。
この基底関数と呼ばれる非線形関数とパラメータベクトルの線形結合を使用。
未知パラメータは最小二乗法や最尤法により推定する。
基底関数として、使われるものは次の通り。
多項式基底
ガウス型基底関数
スプライン関数/Bスプライン関数
#ロジスティック回帰モデル
#主成分分析
ライブラリ
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import sklearn
import scipy as sp
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
from pandas import plotting
データ
data = np.array([[-1, -1], [0, 0], [1, 1]])
標準化
sc = StandardScaler()
data_std = sc.fit_transform(data)
相関関数の算出とグラフ化
print('相関関数{:.3f}:'.format(sp.stats.pearsonr(data_std[:, 0], data_std[:, 1])[0]))
plt.scatter(data_std[:,0], data_std[:, 1])
plt.show()
主成分分析
pca = PCA(n_components = 2)
pca.fit(data_std)
固有ベクトル
print(pca.components_)
分散
print('各主成分の分散:{}'.format(pca.explained_variance_))
分散割合
print('各主成分の分散割合:{}'.format(pca.explained_variance_ratio_))
結果
相関関数1.000:
[[ 0.70710678 0.70710678]
[ 0.70710678 -0.70710678]]
各主成分の分散:[3.00000000e+00 5.15937696e-33]
各主成分の分散割合:[1.00000000e+00 1.71979232e-33]
#アルゴリズム
#サポートベクターマシーン