blog

Python: 統計解析

統計学開発の全体的なプロセスは単純なものから複雑なものまでありますが、その過程で、人間の専門家の専門的な経験は徐々に解放され、アルゴリズムやパラメータに置き換えられていきます。また、そのプロセスでは、...

Jul 30, 2020 · 6 min. read
シェア

I. 統計学習、機械学習、深層学習

学習状況

統計開発の全体的なプロセスは単純なものから複雑なものへと変化していきますが、その中で人間の専門家の専門的な経験は徐々に解放され、アルゴリズムやパラメータに置き換えられていきます。そのプロセスでは、データ量や利用シーンに応じてアルゴリズムを1.0~4.0に分け、それぞれの領域で問題解決のための特性やパラダイムを持たせていきます。

モデルの適用シナリオとアルゴリズムの関係

  • 統計学:回帰中心。主に線形の問題を解決し、より多くの人間の専門家と専門知識の関与を必要とします。
  • 機械学習:ニューラルネットワークが中心。線形と非線形の計数を組み合わせるのが得意で、一般化された線形問題と見なすことができ、専門知識を解放します。
  • ディープラーニング:完全に非線形学習、非常に少ない専門知識が関与している、機械学習は、モデルが自動的に特徴を抽出することにより、暗黙の層を深め、パラメータの数は、トレーニング時間が長く、解釈力を弱め、より多くのデータに依存し、高次元ビッグデータを扱うことに長けています。

scikit-learnアルゴリズムによるパス図の選択

統計解析パッケージ

numpyとpandas:numpyはC++で書かれた高性能計算ライブラリです。pandasはnumpyとmatplotlib関数を統合し、プロット、basestat関数を含む数値処理とグラフ解析関数を提供します。

統計モデル:仮説検定と統計モデリングの機能、構造帰属問題の主な研究は、主に統計的な小さなデータの推論のために、予測機能を重視していません。

scipy: フーリエ変換、数値最適化アルゴリズム、グラフィックス処理、数理統計学、関数フィッティングなどのメソッドクラスを含む、科学計算の高性能実装。

sklearn:データマイニングモデル機能を提供し、主にビッグデータサービスの予測問題を研究し、特徴として問題の速度を探索します。

seaborn:matplotlibの可視化機能をベースにしています。matplotlibは描画のための基本パッケージで、seabornは高度なパッケージです。

opencv_python:イメージビデオライブラリ、効果的にイメージエンコード、顔認識技術を実装することができます。

注1:sklearnは以下の分析を含む機械学習パッケージです:

  • 分類:SVM、K-nearest neighbour、ランダムフォレスト、ロジスティック回帰など。
  • 回帰: ラッソ、リッジ回帰
  • クラスタリング:K-means、スペクトルクラスタリング
  • 次元削減:PCA、特徴選択、行列分解
  • モデル選択:グリッドサーチ、クロスバリデーション、指標行列
  • 前処理:特徴抽出、正規化

注2

  • 回帰モデル:線形回帰、一般化線形回帰、ルパン線形モデル、線形混合効果モデル
  • 分散分析 (ANOVA)
  • 時系列分析:AR、ARMA、ARIMA、VAR
  • ノンパラメトリック手法:カーネル密度推定、カーネル回帰
  • 統計モデル結果の視覚化

III. ケーススタディ:線形回帰の3つのアルゴリズム

データソース

  • 指標:従属変数:体重、独立変数:食事、性別、親族関係、運動時間、サイクリング時間
  • 注:関連する独立変数を以下のようにコード化、食事:食事なし/食事2、性別:男性/女性2、親族関係:非常に高い/高い/かなり高い/低い - 4/3/2/1

目的

  • 体重と食事、性別、親族関係、運動時間、サイクリング時間との関係を調べ、体重の前...

pythonコード解析プロセス

# 
import numpy as np
import pandas as pd
import statsmodels.formula.api as smf
from sklearn import linear_model
import seaborn as sns
import matplotlib.pyplot as plt
#描画マジックと表示
%matplotlib inline
plt.rcParams["font.sans-serif"]=["SimHei"]
plt.rcParams["axes.unicode_minus"]=False
# 
data=pd.read_excel("C:\\ .xlsx")
#運動時間と の散布図をプロットする
#散布図: 曲線の太りと細りを見る。/楕円; 傾向を探す; 異常を探す - 異常が多いと線形モデリングができない。
plt.scatter(x="移動時間",y=" ",s=100,data=data,alpha=0.3)
plt.xlabel("移動時間")
plt.ylabel("体重")

#OLS法、勾配降下法、正則化法それぞれによるモデリング
#sklearnパッケージからlinearegression, lasso, sgdregressorアルゴリズムパッケージをインポートする。
from sklearn.linear_model import LinearRegression,Lasso,SGDRegressor
x,y=data.iloc[:,1:],data.iloc[:,0]
reg=LinearRegression().fit(x,y)
print("OLS手法:精度%s, %s" %(reg.score(x,y),reg.coef_))
sgd_reg=SGDRegressor(max_iter=1000).fit(x,y)
print("勾配降下法:精度%s, %s" %(sgd_reg.score(x,y),sgd_reg.coef_))
lasso=Lasso(alpha=0.2,max_iter=100).fit(x,y)
print("正則化手法:精度%s, %s" %(lasso.score(x,y),lasso.coef_))

IV. 線形回帰のアルゴリズム

つのアルゴリズム

  • 1, 最小二乗 OLS: 主なアイデアは、誤差の二乗和を最小化するベータ値の組み合わせを見つけることです。
  • 2.勾配降下法 - 速度とメモリの最適化
  • 説明1:勾配降下法はバッチ勾配降下法と確率的勾配降下法に分けられ、どちらも反復法であり、βを調整するために最速の勾配降下の方向にβを与える)、極値、すなわち局所最小値または大域最小値を見つけるためにN回繰り返した後。
  • 説明2:**バッチ勾配降下**は、各反復で訓練セットのすべてのデータを使用し、利点は、それが最終的な収束が極値であることを確認することができ、グローバルな最適解が得られることです。** 確率的勾配降下法**は、各サンプルを介して一度だけ繰り返し更新することであり、利点は、サンプルが非常に大きい場合、大域的最適解の方向にすべての反復ではなく、全体的な大域的最適解の全体的な方向が、結果は多くの場合、大域的最適解の近傍にあるにもかかわらず、最適に反復上のサンプルの一部で使用することができることです。
  • 3.正則化 - リッジ回帰とラッソ回帰:共分散データから疎データへ
  • 正則化は、オーバーフィッティングを防止するために使用される手法で、一般的な原理は、パラメータの制約項がコスト関数の後に追加されることです。線形回帰モデルには、通常2種類の正則化項があります:
  • すべてのパラメータの絶対値の合計、l1パラダイムを追加することは、ラッソ回帰と呼ばれます;
  • すべてのパラメータの2乗の合計、l2パラダイムを追加することは、リッジ回帰と呼ばれます。 ラッソー回帰とリッジ回帰は、どちらもパラメータを制約し、オーバー・フィッティングを防止する効果を達成しますが、ラッソー回帰にはもう1つの重要性があります:それは、小さな役割を果たすパラメータのいくつかを0に訓練することができ、したがって、モデルを訓練するときに次元削減の目的を達成する疎な解を得ることができることです。
  • 4.弾性ネットワーク弾性ネットワークは、リッジ回帰とラッソ回帰を組み合わせたもので、両者を加重平均して得られます。この方法は、特徴の数がトレーニング・セットのサンプル数より大きい場合や、いくつかの特徴が互いに高い相関を持つ場合に、Lassoより安定していると説明されます。コスト関数:

つのアルゴリズムの特徴のまとめ

  • 1.最小2乗法:

    osの重回帰は、複数の独立変数のケースを扱うことができ、残差の2乗和を最小化しようとします;

    データを行列として扱い、線形代数を使用して係数の最適化を追求;

    線形およびメモリ制約のあるビッグデータシナリオ

    小規模データシナリオの一般的なアルゴリズム.

  • 2.勾配降下法:

    モデル誤差を反復的に最小化することで、多次元問題を効果的に処理します;

    パラメータ学習率αは、各反復のステップサイズを制御します;

    大きな行や列はメモリに書き込まれないため、メモリへの負荷が大幅に軽減されます;

    スパースデータ問題に対処するための正規関数の組み合わせが得意。

  • 3.正則化手法:

    一方では、モデル誤差を最小化しようとし、他方では、変数の数が多い場合、モデルを表現するために、より少ない重要な変数を選択するなど、モデルの複雑さを減らすことができます;

    共分散やオーバーフィッティングの現象を排除するのに有利;

    高次元とデータのスパース性の問題は大幅に軽減されますが、メモリの問題が主な欠点として残ります。

Read next

C++primer 学習ノート-第2章

定義形式:型指定子+1つ以上の変数名のリスト。例:int sum = 0, value, = 0; デフォルトの初期化:定義時に初期値が指定されていない場合、関数本体内の組み込み型の変数は初期化されません。 すべての組込み型を初期化することをお勧めします。

Jul 30, 2020 · 6 min read