日々の事柄に関する雑記帳。





用語

mathematical optimization数理最適化
reinforcement learning強化学習

データ・サイエンス
データから関連性を抽出し、現象解明や要因分析に有用な知識を得る。統計的モデリング
データに潜む関連性を元に予測(カテゴリ判別、数値推定)する。機械学習モデリング

データ・サイエンス入門

林知己夫
データサイエンスは統計学、データ分析、およびそれらを統合した概念であるだけでなく、その結果をも含む概念である。 複雑な自然的、人間的、社会的環境の特徴や隠れた構造を、確立された伝統的理論や手法とは異なる観点から、データによって明らかにすること
データ・サイエンスデータ処理の統計的、数理的技法と、その応用
データ・マネジメント
データ・エンジニアリング
データの変換、保管、表現形式の決定
これらの問題に対処する原理
データ・マイニングデータ解析により新しい知識を得ること。
knowledge discovery
データvolume
種類variety
更新の早さvelocity
従来のデータ分析、集計、管理される前提で生成される
ビッグデータ人々の行動がデジタル化された結果
記述統計実測値を対象とする。
推測統計確率、確率に基づく推定を扱う。

統計モデルの特徴
  1. データ化された現象を説明するために作られる。
  2. データのばらつきを表現するため、確率分布を用いる。
  3. データとモデルを対応付ける手続きがあり、当てはまりの良さを定量的に評価できる。
ばらつき=個体差→確率分布で表現する。
統計解析仮説の定式化する。
仮説の確からしさを評価する。
要因の効果を定量化する。
一般論としての知識を得る。
データ・マイニング探索的発見
仮説無しに、データの関連性を抽出する。
機械学習機械による推定(分類や数値予測)個々のケースでの判断を得る。
人間が知識を得ることと、高い予測精度を得ることは必ずしも両立しない。
知識を得る必要がないと割り切れば、より予測精度の高い手法を用いることができる。
SVM (Support Vector Machine)
deep learning


帰納法個々のケースにおける経験的な事実を積み重ね、一般的な原理を導く。事実の記録しか得られない。
演繹法論理的に導ける原理に基づき、個々のケースについての判断を導く。数学的な論理で記述する。
統計解析演繹的思考によって生み出された予想を、帰納的に検証する。
機械学習相関関係、それに基づく予測を出力する。因果関係を記述する一般的な法則ではない。
簡単な問題相関と因果の違いを常識的に判断可能。
知見のない領域の問題表面的な相関関係を、本質と誤解しがち。
データからの帰納的推論だけでは真実に迫れない。


著作権創作的表現の保護。
プログラム
特許権発明のアイデアを保護する。
高精度モデルの導出は発明か?
何によって保護されるのか?
データ
モデル

プロファイリング:個人の属性を推定すること。
確率的な判断を予測に用いる→結果が分からないので、予測の正しさを検証できない。
例:確率的判断で不採用とした。
  • 不採用の当人には、理由が分からない。
  • 採用していた場合の結果を予測できない。
  • 予測が分からないので、意思決定者は判断理由を説明できない。

留意点

ヒトが与えた教師ラベルを用いる。→最大精度はヒトと同等。実際には、それを下回る。
対策1:教師ラベルを用いない方法(強化学習)を採用する。
対策2:意図的に意外性のあるデータを収集し、分析する。

データサイエンスのプロセス、タスクに関するフレームワーク

CRISP-DM (Cross-Industry Standard Process for Data Mining)
1ビジネスの理解ビジネス目標の決定
状況の評価
目標の決定
プロジェクト計画の策定
2データの理解初期データの収集
データの記述
データの探索
データ品質の検証
3データの準備データの選択
データのクリーニング
データの新規作成
データの統合
データのフォーマット
4モデリングモデリング手法の選択
テスト設計の生成
モデルの作成
モデルの評価
5評価結果の評価
プロセスの見直し
次のステップの決定
6展開展開の計画
監視と保守の計画
最終レポートの作成
プロジェクトのレビュー

RとPython

RPython
ベクトル
行列計算
標準NumPy
SciPy
データフレーム標準pandas
基本的な統計解析標準StatsModels
基本的なグラフィックス標準Matplotlib
拡張グラフィックスggplot2Seaborn
機械学習caretscikit-learn
RからPythonを呼び出すPythonlnR
reticulate
PythonからRを呼び出すPypeR
RPython
添え字1から開始0から開始
ベクトル処理方向列方向行方向

R

ccombine
ベクトル
classオブジェクトの型
strstructure
オブジェクトの構造
c一次元配列
データ型が同じ
matrix二次元配列
データ型が同じ
list異なる型、構造のデータを束ねる
dataframe表形式データ
異なる型、構造のデータを束ねる
  • listからの値取得
mylist[1]リストとして出力
mylist[[1]]ベクトルとして出力
  • dataframeから条件式で値取得
myDF[myDF$myitem == 'short', ]myitemに'short'が格納されている行を出力
  • factor型
カテゴリ変数
実際の値は整数だが、それぞれの値にlabelが割り当てられている。
level
水準
label
1small
2medium
3large
sapply全要素へ、指定した関数を適用する
tapplyカテゴリで分類された要素へ、指定した関数を適用する

Python

NumPy科学技術計算
配列、行列→Rでのベクトル
pandas表形式データの管理、操作
Rでのデータフレーム
Matplotlibプロット
list[]異なるデータを格納できる
tapple()中身を変更できないlist
dictionary{}ハッシュ・テーブル

直接、ファイルを実行した場合にのみ実施される処理。
if __name__ == '__main--'
NumPynd.array一次元配列
データ型が同じ
NumPy.ndarray二次元配列
データ型が同じ
list異なる型、構造のデータを束ねる
pandas.Series一列のデータフレーム
pandas.DataFrame表形式データ
異なる型、構造のデータを束ねる

R、Python以外のツール

GNU OctaveMATLABクローン
Juliaプログラム言語

データ分析と基本的なモデリング

確率密度その値の周りに、どれくらいのデータが集まっているか。
確率=密度プロットの面積
  • ある範囲の値を取る確率=該当範囲の密度プロットの面積(該当範囲の積分)
ある値を取る確率=密度プロットの縦軸ではない、ことに注意。
ある値を取る面積は0。→ある値=縦線1本の領域


最頻値離散値最も頻繁に出現する値
連続値確率密度が最大の値
  • 偏差値
平均50、標準偏差10に分布を変換した値。
x対称の値
m平均値
SD標準偏差
偏差値=(10(x - m) / SD + 50
相関関係連動する関係
因果関係原因があり、結果がある関係
疑似相関間接的な因果関係はあっても、直接的な因果関係のない関係
交絡要因疑似相関をもたらす共通の要因

  • 分布
正規分布多くの値の和として表される連続量
対数正規分布多くの値の積として表される連続量
二項分布
ベルヌーイ分布
ある回数内での発生回数
ポアソン分布ある期間内での発生回数
ガンマ分布
指数分布
ある事象が一定化数起きるまでの間隔
正規分布に近づく分布二項分布
ポアソン分布
ガンマ分布

モデリング:データを数式や数理的表現に変換すること。
説明変数:機械学習では特徴量と呼ばれることがある。
ある目的変数を説明、予測する。目的変数が数値回帰問題
目的変数がカテゴリ分類問題
  • ダミー変数
ベースライン=ダミー変数が割り当てられない項目
例:東京、大阪、名古屋と分類されるとき
東京大阪名古屋
010
001
東京がベースライン。
Rがダミー変数を生成する場合、自動的に最初の分類項目をベースラインとする。

ダミー変数=ワンホット表現 (one-hot representation)→機械学習でのダミー変数
偏回帰係数partial regression coefficientモデルが複数の回帰係数を持つ場合の、回帰係数の呼称
重回帰モデル複数の説明変数を用いる回帰モデル
  • 回帰モデルの作業順序
1回帰モデルlm(モデル)
2平均値の差の検定aov(lm)
3多重比較TukeyHSD(aov(lm))

モデルの複雑さと、データへの適合度合いとのバランスを見る指標
  • 値が小さいほど良い
AICAkaike Information Criterion
赤池情報量基準
AIC(lm)
BICBayesian Information Criterion
seベイズ情報量基準
  • AIC
L最大尤度
kパラメータ数
AIC = -2 log L + 2k
値が小さいほど良いモデル。
  • 残差
モデルと実測値の乖離
  • 目的変数を縦軸、説明変数を横軸とすれば、回帰直線から垂直方向の差が残差。
  • 目的変数を横軸、説明変数を縦軸とすれば、回帰直線から水平方向の差が残差。
残差の密度プロット→線形回帰の場合、正規分布に近づく。
分布が左右に広がらず、中央に寄っている。
山が低く、裾の場広がっている。×
目的変数を縦軸、説明変数を横軸とすれば、回帰直線から垂直方向の差が残差。

残差=誤差、予測誤差
残差データからモデルを生成した場合の、モデルと実測値の乖離
誤差
予測誤差
モデルにデータを適用した場合の、モデルと予測値の乖離
  • 最小二乗法
残差が最小になるパラメータを見つける方法→理論値(モデル)と実測値の乖離が最小になるパラメータを見つける方法

モデルの評価

  • サンプリング
バイアスを避けられない有意抽出目的に応じて対象を選ぶ
例:店頭アンケート
バイアスを避けられる無作為抽出単純無作為抽出ランダムに対象を選ぶ
層化抽出母集団を属性で分け、各属性グループからランダムに対象を選ぶ
多段抽出母集団をランダムに複数グループに分け、各グループからランダムに対象を選ぶ
復元抽出サンプルを選ぶ都度、対象を母集団に戻して抽出を繰り返す。
同一対象が複数回(重複して)選ばれることがある。
非復元抽出対象を母集団に戻さない。
二項検定ある事象が発生した場合、しない場合の頻度を検定する。binom.text()
カイ二乗検定グループ分けされた基準から、組み合わせの内訳に偏りがあるかを検定する。chisq.test()
残差分析比率の偏りを分析する。
モザイクプロット
  • モザイクプロット
比率の違いを面積としてプロットする。mosaicplot()
赤の領域有意に多い
青の領域有意に少ない
白の領域偏りが少ない
  • コーエンのd
    Cohen's d
グループ間の平均値の差と、グループ内のばらつきを比較する指標。cohen.d()
  • フィッティング
モデルの適合度合いを定量化する。→決定係数
決定係数=寄与率、分散説明率
予測値の変動モデルで説明できる変動
実測値の変動モデルで説明できる変動+モデルで説明できない変動(残差)
予測値の分散=実測値の分散+残差の二乗和

決定係数=予測値の分散/実測値の分散
決定係数の解釈
  • 実測値の分散のうち、モデルで説明できる割合
  • 最小二乗法による残差縮小を示す指標
最小二乗法残差の二乗和が最小となるパラメータを見つける。残差の二乗和
適合度合い:決定係数
最尤法実測値と同じ値が度合いが最高のパラメータを見つける。尤度
適合度合い:疑似決定係数
線形回帰の場合、最小二乗法と最尤法の結果は一致する。
線形回帰モデルの実測値が回帰直線上に正規分布する(残差が正規分布する)ことを前提とする。
この過程が成り立たない場合(一般化線形モデル)では最尤法を用いる。


  • モデルの複雑さ
モデルの複雑さ=パラメータの数
オーバー・フィッティング(過剰適合)=オーバー・ラーニング(過学習)
  • 正則化 (regularization)
モデルを決める過程でペナルティを課し、過剰適合を避ける。
L1正則化パラメータ数を減らすようにペナルティを課す。
プロットの形をシンプルにする。
ラッソー
LASSO
L2正則化パラメータの絶対値を小さくするようにペナルティを課す。
プロットの上下ブレ幅を抑える。
リッジ回帰
Ridge regression
エラスティックネット
Elastic Net
ラッソー、リッジ回帰を統合したもの。
  • 予測精度
MSE
Mean Square Error
RMSE
Root Mean Square Error
平均二乗誤差
MAE
Mean Absolute Error
平均絶対誤差
MAPE
Mean Absolute Percentage Error
平均絶対誤差率
fi理論値
yi実測値

\begin{align}
MSE &= \frac{1}{n} \sum (f_i - y_i)^2 \\
&=\frac{1}{n} \sum e_i^2 \\
MAE &= \frac{1}{n} \sum |f_i - y_i| \\
&=\frac{1}{n} \sum |e_i| \\
MAPE &= \frac{1}{n} \sum |\frac{f_i - y_i}{y_i}| \\
&=\frac{1}{n} \sum |\frac{e_i}{y_i}| \\
\end{align}
  • 梃子比
説明変数の値が、中心からどれだけ外れているかを指標化する。
中心から外れるほど、回帰直線(平面)の推定に影響する。
クックの距離:梃子比と残差の標準得点を数値化したもの。
  • 分散拡大係数 VIF (Variance Inflation Factor)
VIF = 1 / (1 - R^2)
説明変数ごとに算出される。→ある説明変数を、その他の説明変数で予測する回帰モデルの決定係数を用いる。
VIF >= 10の場合、該当する説明変数の除外が推奨される。
    • GVIF (Generalized Variance Inflation Factor)
ダミー変数に対応している。
ダミー変数の元となるカテゴリ変数に対して指標を算出する。
  • 標準偏回帰係数
説明変数を標準化した場合の偏回帰係数。
標準偏回帰係数=ベータ
偏回帰係数説明変数が1増えた場合の、目的変数の増加量
標準偏回帰係数説明変数が1標準偏差増えた場合の、目的変数の標準偏差としての増加量
Rでの方法1データを標準化し、線形モデルを作成する。
Rでの方法2線形モデルを作成し、lm.beta()で線形モデルを変換する。
偏回帰係数を元に標準偏回帰係数を計算する。
標準偏回帰係数=(偏回帰係数×説明変数の標準偏差)/目的変数の標準偏差

実践的なモデリング

分析手法の分類
回帰予測の対象が数値
分類予測の対象がカテゴリ
関連性の分析相関分析
教師なし学習グループ化クラスタリング
次元の削減因子分析
主成分分析
教師あり学習現象の説明線形回帰回帰
要因の分析ロジスティック回帰分類
予測決定木回帰、分類
予測
機械学習
ランダムフォレスト回帰、分類
サポートベクターマシン回帰、分類
ニューラルネットワーク回帰、分類
教師なし回帰数値(量)を予測するリッジ回帰
エラスティックネット
ランダムフォレスト
サポートベクターマシン
k近傍法
分類分類を予測するロジスティック回帰
ランダムフォレスト
サポートベクターマシン
k近傍法
ナイーブベイズ
教師ありクラスタリング似た特徴を持つケースをグループ化するk平均法
GMM
次元削減多くの変数をより少な変数へ集約する
特徴量の次元を減らす
主成分分析
Isomap

機械学習とディープラーニング

用語

アノテーションannotation
データにラベルを付与する作業
学習機械学習でのパラメータを決める過程
次元の呪いデータから十分な情報を抽出できない状況
データの件数が同じであれば、次元が増えることによって密度が減り、データの分布はまばらになる。
あまりにまばらだと、境界線の判断が難しくなる。
汎化能力
汎化性能
新しいデータに対する予測精度

機械学習の手順

  1. データ分割
  2. 学習 (fit)
  3. 予測 (predict)
  4. 評価 (validation, test)
  5. チューニング
データ分割
学習用モデル生成に利用する
評価用モデルの評価に利用する
テスト用モデルの最終的な評価に利用する

学習用:評価用=6:4, 8:2

データの分割手法
ホールドアウト法データの分割を一度で済ませる。
データが多い時に用いる。
クロスバリデーション法
交差検証法
異なる分割を何度も行い、学習、評価データの異なる組み合わせを得る。
予測精度の平均をモデルの評価指標とする。
k分割交差検証=データをk分割する

Garbage in, Garbage out.
ガラクタを入れても、ガラクタしか出てこない。
チューニング
グリッドサーチハイパーパラメータの値を網羅的に試す。
ランダムサーチハイパーパラメータの値をランダムに試す。

半教師あり学習と能動学習

  • 半教師あり学習
    1. ラベルが付与されたデータだけでモデルを作る。
    2. そのモデルで他のデータのラベルを予測する。
  • 能動学習
    1. 半教師あり学習に、次の手順を加える。
    2. ある基準に基づいて、予測が不確かなケース、精度向上に寄与する可能性の高いケースを想定する。
    3. ケースに即したデータに、人がラベルを付与する。
    4. モデルを作り直す。

特徴抽出と特徴ベクトル

  • 特徴抽出 (feature extraction)
    • モデルを導出しやすいよう、データから必要な情報を加工し、不要な情報を除去する処理。
    • 特徴ベクトルが作成される。
    • 非構造化データ(例:画像データ)に用いられる。
  • 特徴ベクトル (feature vector)=素性ベクトル
    • 特徴的な形状を表す情報を抽出する。
      • 丸い形状の有無
      • 縞模様の有無
    • 特徴的な形状を表す情報を変数化→特徴ベクトル
    • モデルの次元削減につながる。

ディープラーニングの場合、特徴抽出に相当する過程がアルゴリズム中に組み込まれている。
ディープラーニングが非構造化データの扱いに向いている理由

強化学習

  • 強化学習
    • 試行錯誤から学習する仕組みに基づいた学習モデル。
    • 強化 (reinforcement)=とるべき行動を学習する過程
    • 目的:状況変化に応じて行動を最適化すること
状態価値報酬を得やすい状態を定量化した指標
行動価値特定常態における行動の取りやすさを定量化した指標
TD学習Temporal Difference Learning
行動価値の更新方法
  • ディープラーニング
    • 全ての状態、行動の組み合わせを明らかにできない→仮の行動価値を予測する統計モデルを作る。
    • 実際に行動してみた結果+TD学習
    • モデルの予測値を、本来の行動価値に近づけるようパラメータを更新する。
    • 行動価値を予測する統計モデル=ディープラーニング

機械学習

ランダムフォレスト
複数の決定木による予測結果から、多数決で予測する。
  • 結果として異なる決定木がランダムに作成される。
    • サンプルの抽出→ランダムに決定
    • 特徴量(説明変数)の抽出→ランダムに決定
決定木は、階層を深くすると過学習により、予測精度が落ちる→多数決により過学習を回避する。


アンサンブル学習 (ensemble learning)
  • 性能の良くないモデル=弱学習モデル
  • 複数の弱学習モデルを組み合わせて、性能の良いモデルを作る。
回帰の場合決定木の予測値の平均が予測結果
分類の場合決定木が予測した各クラスの所属確率を平均し、確率の高いクラスを予測結果とする。

ハイパーパラメータ
決定木の数10〜10000数が増えるほど、処理に時間がかかる。
決定木の階層1〜100階層が深いほど、過学習しやすい。
サポートベクターマシン
SVM (Support Vector Machine)
分類=クラス間の境界線を決定する問題
SVMはマージンとサポートベクトルを用いて、境界線を決定する。
マージンデータと境界線の距離
マージンが大きいほど、予測の堅牢性が高い。
サポートベクトル境界線付近のデータ

境界線付近の、判別が難しいクラスのデータ、そのマージンに注目する。→境界線から離れたデータは考慮しない。
サポートベクトルのマージンを最大化しようとする。
カーネルトリック元のデータを高次元空間に移し替え、分離する。
カーネル関数カーネルトリックに用いる関数

ハイパーパラメータ
カーネルの種類ガウシアン、多項式、線形通常はガウシアンを選択する。
ガウシアンで良い結果が得られない場合、他を選択する。
誤分類コスト0.01〜10000過学習を避けるためのペナルティ
大きいほど過学習が生じやすい。
境界線の複雑さ (gamma)0.001〜100境界線形状の緻密さ
大きいほど直線に近く、大きいほど複雑になる。大きいほど過学習が生じやすい。

ガウシアンカーネル=放射既定関数 (RBF, Radial Basis Function)

ディープラーニング

パーセプトロン
  • ニューラルネットワークの最小構成単位
  • 入力層(x)、出力層(y)で構成される。
  • 切片のない線形回帰モデル
    • 予測値yが閾値以下で0、閾値より大きいと1。

y_i = \sum_{i=1}^n W_i x_i

多層ニューラルネットワーク
  • 入力層と出力層の間に、隠れ層がある。
    • 隠れ層=前の層のアウトプット、次の層のインプット
    • ユニット数=隠れ層の変数の数
    • 活性化関数=入力値について非線形な計算を行う

普遍性定理
  • 有限個のユニットを持つ隠れ層
  • 一つの隠れ層しか持たないニューラルネットワーク
  • このニューラルネットワークは、いくつかの条件の下で任意の連続関数を、任意の精度で近似できる。
どのような数式でもデータさえあれば学習できる。


ディープラーニング
  • 隠れ層=中間層
  • ユニット数を増やすのではなく、中間層を増やす。
    • 一つの隠れ層で、より複雑な関数を近似する。→ユニット数が増える。→次元が増え、過学習が生じやすい。
  • 隠れ層を増やすと、学習が難しくなる。
    • パラメータの推定→誤差逆伝播法 (Back Propagation)
    • 過学習を起こしやすい。→大量のデータを用いると、過学習が起こりにくい。

誤差逆伝播法
  • 出力側から入力側へ勾配を計算し、教師ラベルと予測結果の差が小さくなるようにパラメータを更新する。
    • 勾配:重み変化に伴う、誤差の変化率→偏微分
    • 勾配消失:層が増えると、出力層に近い隠れ層の重みは更新され、入力層に近い隠れ層の重みが更新されなくなる。
    • 勾配爆発:入力層に近い隠れ層の重みが急激に変化し、誤差が改善しない。

勾配問題の解消方法
自己符号化器Auto Encoder
入力情報を圧縮後に、復元する。
次元圧縮の際に使用した重みを、ネットワークの重みの初期値にする。=事前学習
ReLU
正規化線形ユニット
Rectified Linear Unit
シグモイド関数は値が大きい、小さい時に、勾配がなくなる。
ReLUでは、負の値が入力されると勾配が消失し、正の値では常に1になる。
Leaky ReLU負の値が入力されると勾配が消失する問題を解消した。
パッチ正規化層と層の間に、出力を標準化する層を追加する。
標準化:出力の平均=0、分散=1

畳み込み層 (convolution layer)
  • 画像の特徴量抽出を自動化する。
フィルター
カーネル
格子状のベクトル
ウィンドウフィルターと同サイズに画像を切り抜いたもの
  • フィルターとウィンドウの積の和を求める。→特徴量
  • 画像のすべての領域について、特徴量を求める。→アウトマップ(特徴マップ)

長短期記憶ユニット(LSTM, Long Short-Term Memory units)
  • 連続的なデータの特徴を抽出する。
フレームワーク
TensorFlow抽象度が低い→自由度が高いGoogle
KerasTensorFlowのラッパー・ライブラリ
抽象度が高い→自由度が低い
PyTorchFacebook
MXNetApache
Microsoft Cognitive ToolkitMicrosoft
TensorFlowDefine-and-Run計算グラフ(ネットワーク構造表現)を記述し、データを流し込む。
順伝播(予測値を計算する方向の計算)の後、逆伝播でパラメータ推定する。
PyTorchDefne-by-Run計算グラフを記述せずに、データを流し込む。
順伝播(予測値を計算する方向の計算)と同時に、逆伝播でパラメータ推定する。

ハイパーパラメータ
エポック学習データを使った状態。
1エポックは、すべての学習データを最低1回使った状態。
バッチサイズ32〜512
モデル更新を行う際に用いるサンプル数
学習率モデル更新の際に重みをどの程度変更するかを決める値
高いほど収束するが、高すぎると発散する。
小さすぎると収束までに時間がかかる。
Early Stop処理を中断する閾値
損失関数の値に基づいて、学習中断を判断する。

用語
損失関数実測値と予測値の差の測り方を定めた関数
ミニパッチモデルの更新
識別モデルクラス間の境界線を学習する
生成モデルインプット情報の分布を学習する

敵対的生成ネットワーク (GAN, Generative Adversarial Network)
  • 2つのニューラルネットワーク(生成器、識別器)が相互に影響し合い、学習を進める。
  • 一方の学習が進み過ぎると、もう一方の学習が進まない。→学習が不安定
生成器generatorinput乱数
output生成データ
識別器discriminatorinput実データ
生成データ
output判定結果
実データ or 生成データ
生成器が贋作者、識別器が鑑定士。

  • 生成器への入力はノイズ(乱数)なので、何も学習が進まなければノイズしか出力しない。
  • 生成器のデータと、実データを交互に識別器へ入力する。
  • 識別器はノイズと実データの分布を学習する。
    • 生成器のアウトプット、実データに基づいて、識別器はノイズと、それ以外の分布を学習する。
タグ

管理人/副管理人のみ編集できます