今回は『回帰分析』について書きます!!定番ですが、まずはWiki先生に聞いてみます.
回帰(かいき、英: regression)とは、統計学において、Y が連続値の時にデータに Y = f(X) というモデル(「定量的な関係の構造
」)を当てはめる事。別の言い方では、連続尺度の従属変数(目的変数)Y と独立変数(説明変数)X の間にモデルを当てはめること。X が1次元ならば単回帰、X が2次元以上ならば重回帰と言う。Y が離散の場合は分類と言う。
回帰分析(かいきぶんせき、英: regression analysis)とは、回帰により分析する事。
回帰で使われる、最も基本的なモデルは Y = AX + B という形式の線形回帰である。
出展元:Wikipedia
簡単に言うと、ある値を分析して,”X”と”Y”の相関関係を確認⇒今後”X”が変化した時に”Y”がどんな風に変化するかを予測するという分析手法です。
これだけだと解りづらいので…子供さんの年齢と身長を例に説明します!!
X軸に年齢,Y軸に身長を取っています。
育ち盛りの子供さん。すぐに体も大きくなって服も切れなくなる…8歳になった時の身長、気になりませんか!?
これを予測するための手法が回帰分析です.
一口に回帰分析といっても色々な計算パターンが存在しますが,最も単純な線形単回帰分析を行った例が☟☟☟のグラフです.
最小二乗法という計算方法で導き出された線が追加されています。
この記事を読んで得する人は??機械学習初心者は必見
今回は回帰分析をこれから始めたい方に読んでいただきたいです。実際にPythonのNumpyを使って分析を実践します!!
回帰分析は機械学習エンジニアやデータサイエンティストは必ずと言っていほどぶちあたる壁なので、こんな方は読んで損がないです。☟☟☟
- 回帰分析の基礎を学んで、イメージをつかみたい方
- 機械学習、AI系のエンジニア・データサイエンティストを志す方
- Pythonの”Numpy”これ『ナムパイ』と読みます.ギリ知ってた方
線形回帰と非線形回帰~”直線”か”直線じゃない”か
線形回帰というのはさきほども例に出しましたが、非常にシンプルで、一本の直線を引いて予測する手法、つまり1次式を用いた分析方法です。☟☟☟
それに対して、非線形回帰は2次式以上!!複雑な分布のデータにも対応できます!!
単回帰分析と重回帰分析~”単体”か”重ねる”か
年齢と体重の2次元のパラメータを使って分析できますので,より精度があがります。現在ではExcelの機能を使えば簡単に分析することもできますので,簡単な分析であればお勧めです。
2次元以上であれば全て『重回帰分析』になります。
Python Numpy 使って単回帰分析をやってみる.
CreepyNutsさん大好きです!!特にRさん。前回書いた記事です。☟☟☟
https://kgrneer.com/creepy-nuts-python/
それでは早速コードを書いて行きます☟☟
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
#変数 fig = plt.figure()
ax = fig.add_subplot(1,1,1)
#y軸csvデータ読み込み
data = pd.read_csv('cp.csv')
y = np.array(data)#配列化
y = y.reshape(-1,)#次元変更(2から1次元)
#日付のx軸を作成
x = pd.date_range('2019-08-30 00:00:00', periods=16, freq='d')
#線形回帰次数1
x1=np.arange(16)
ab = np.polyfit(x1,y,1)
y1 = np.poly1d(ab)(x1)
#非線形回帰次数5
ab = np.polyfit(x1,y,5)
y2 = np.poly1d(ab)(x1)
#グラフ作成
ax.plot(x,y,'b')
ax.plot(x,y1,'k')
ax.plot(x,y2,'--k')
#グラフフォーマットの指定
days = mdates.DayLocator()
daysFmt = mdates.DateFormatter('%m-%d')
ax.xaxis.set_major_locator(days)
ax.xaxis.set_major_formatter(daysFmt)
plt.show()
[
特に重要なのは
#線形回帰次数1
ab = np.polyfit(x1,y,1)
y1 = np.poly1d(ab)(x1)
#線形回帰次数5
ab = np.polyfit(x1,y,5)
y2 = np.poly1d(ab)(x1)
の2パート。np.とつくのはNumpyの関数です。
・np.polyfit(x,y,n) は n 次の式で 2 変数(xとy)の最小二乗を行う関数
・np.poly1d(ab)(x1) は : 近似式(ab)に(x1)を代入し、y1の値を生成
今回は1次式と5次式を書いてます!!結果がこちら☟☟☟
青線は実際の価格推移、黒実線は線形回帰分析結果,黒破線は非線形回帰分析結果です!!
まとめ
- 線形回帰と非線形回帰は分析に使う式が1次式か2次式以上かの違い
- 単回帰分析と重回帰分析の違いは分析に使用するパラメータが1次元か2次元以上かの違い
- 回帰分析はPython Numpy で比較的簡単に実装可能
- R指定さん応援してます!!(CD欲しい)
今回プログラミングに使ったPythonのライブラリはANACONDAというディストリビューションを使うことで簡単にインストールできちゃいます☟
エンジニアやブログに興味がある方はこちらもどうぞ♪♪
座右の銘は明日は明日の風が吹く。虎ぱぱでした♪