| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

差分

ナビゲーションに移動 検索に移動
5,895 バイト追加 、 2021年8月31日 (火) 12:42
| [[TensorFlow]] | [[Docker]] | [[Ubuntu]] | [[数学]] | [[統計]] | [[ベイズ統計]] | [[データ解析]] | [[R]] | [[Python NumPy]] |
==機械学習==
{{amazon|4295010073}}
*https://github.com/rasbt/python-machine-learning-book-3rd-edition
==3種類の機械学習==
*機械学習では予測変数は一般的に'''特徴量(feature)'''と呼び、応答変数を'''目的変数(target variable)'''と呼ぶ
===2.強化学習(reinforcement learning)===
----
*強化学習の目的は環境とのやり取りに基づいて性能を改善するシステムを構築することで、そうしたシステムは'''エージェント(agent)'''
*環境の現在状態情報には、いわゆる'''報酬(reward)'''信号が含まれるため、教師あり学習に関連する分野とみなされる
===3.教師なし学習===
----
*教師なし学習では、エージェントの特定の行動に対して、正解ではなく、'''報酬(reward)'''の度合いを定義する
*ラベル付されていないデータや'''構造が不明'''なデータを扱うことになる
*目的変数や報酬関数がなくても、データの構造を調べて意味のある構造を取り出すことができる
====クラスタリング(clustering)====
----
*大量の情報を意味のあるグループ(クラスタ)として構造化できる探索的データ解析手法
*'''教師なし分類(unsupervised classification)'''とも呼ぼれる
*例として、マーケティング担当者が顧客の関心に基づいて顧客集団を発見できる
====データ圧縮のための次元削減====
----
*'''次元削減(dimensionally reduction / dimension resuction)'''というサブフィールド
*教師なし次元削減は特徴量の前処理においてよく使用されるアプローチの一つ
==機械学習システム構築==
===1.前処理:データ整形===
----
*生データが機械学習アルゴリズム性能最適化に適した形で提供されることはまずないため、データ'''前処理((preprocessing)'''が最も重要な処理の一つとなる
===2.予測モデルの訓練と選択===
----
*'''交差検証(cross-validation)'''では、モデルの'''汎化性能(generalization performance)'''を想定するために、データセットを訓練用と検証用に分割する
*'''ハイパーパラメータ最適化(hypeparameter optimization)'''はデータから学習されるものではなく、モデルの「ツマミ」を回すのに相当し、回すことでモデルの性能を向上させることができる
===3.モデルの評価と未知のインスタンスの予測===
----
*訓練データセットにうまく適合するモデルを選択した後は、いわゆる汎化誤差(学習時に使わなかったデータに対する予測値と正解の差)を評価できる
*性能に納得がいけば、このモデルを使って将来データを予測できる
==分類問題==
*散布図
[[File:perceptron01.png|300px]]
===[https://ja.wikipedia.org/wiki/%E7%B7%9A%E5%BD%A2%E5%88%86%E9%A1%9E%E5%99%A8#:~:text=%E7%B7%9A%E5%BD%A2%E5%88%86%E9%A1%9E%E5%99%A8%EF%BC%88%E8%8B%B1%3A%20Linear,%E3%81%93%E3%81%A8%E3%82%92%E7%9B%AE%E7%9A%84%E3%81%A8%E3%81%99%E3%82%8B%E3%80%82 線形分類器]===
----
*特徴の線形結合の値に基づいて分類を行う確率的分類器である。機械学習において、分類は項目群を特徴値に基づいてグループに分類することを目的とする
*パーセプトロンアルゴリズムは、完全な線形分類が不可能なデータセットでは決して収束しないため、一般に実務データ解析で推奨されない
 
===[https://ja.wikipedia.org/wiki/%E3%83%91%E3%83%BC%E3%82%BB%E3%83%97%E3%83%88%E3%83%AD%E3%83%B3 パーセプトロン]===
----
パーセプトロンモデルは、脳内の1つのニューロンの働き、発火するかしないか、を模倣
# 重みを0または値の小さな乱数で初期化
# 訓練データごとに次の手順を実行
## 出力値を計算
## 重みを更新
[[File:perceptron02.png|300px]] [[File:perceptron03.png|300px]]
===ADALINE===
----
*パーセプトロンアルゴリズムの改良と見なすことができる。違いは重みの更新方法にある。
*パーセプトロンのような単位ステップ関数ではなく、線形活性化関数に基づいて重みを更新する
[[File:adaline02.png|300px]] [[File:adaline01.png|300px]]
 
===ロジスティック回帰(logistic regression)===
----
*線形分類問題と二値分類問題に対する単純ながら強力なアルゴリズムの一つ
*名前とは裏腹に怪奇ではなく分類のためのモデル
*非常に実装しやすく、線形分離可能なクラスでは非常に性能が良い
*産業界において最も広く使われている分類アルゴリズムの1つ
====オッズ比====
*確率<math>p</math>の場合、事象の起こりやすさをオッズ比(odds ratio)として、<math>\tfrac{p}{(1-p)}</math>と書くことができる
*<math>p</math>は、正事象(positive event 予測したい事象)を表す
*オッズの対数を取ったものを、[https://mathwords.net/logitkansu ロジット(logit)関数]という。
<math>
logit(p) = log\frac{p}{(1 - p)}
</math>
*ロジット関数の逆関数は、ロジスティックシグモイド(logistic sigmoid)関数とも呼ばれる。
<math>
\phi(z) = \frac{1}{(1 + e^{-z})}
</math>
 
==scikit-learn==
===インストール===
----
<pre>
$ pip install scikit-learn
</pre>
*Irisデータセットは、scikit-learnに組み込まれている
<pre>
>>> from sklearn import datasets
>>> import numpy as np
>>> iris = datasets.load_iris()
>>> X = iris.data[:, [2,3]]
>>> y = iris.target
>>> print('Class labels:', np.unique(y))
Class labels: [0 1 2]
</pre>
 
==・・・・・・・・・・・・・・・・・==
===基礎===
*環境が行動によりどう反応するかを観察することで収集される情報を訓練する
*どのような行動の組み合わせが最も有利な結果をもたらすかを知るため
 
===[[アルゴリズム]]===
{| class="wikitable"
==[[TensorFlow]]==
*[[TensorFlow]]
 
 
 
==Irisデータセット==
<pre>
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
 
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
df = pd.read_csv(url, header=None, encoding='utf-8')
result = df.tail()
print(result)
 
y = df.iloc[0:100, 4].values
y = np.where(y == 'Iris-secosa', -1, 1)
X = df.iloc[0:100, [0, 2]].values
plt.scatter(X[:50,0], X[:50,1], color='red', marker='o', label='setosa')
plt.scatter(X[50:100,0], X[50:100, 1], color='blue', marker='x', label='versicolor')
plt.xlabel('sepal length[cm]')
plt.ylabel('petal length[cm]')
plt.legend(loc='upper left')
plt.savefig('03.sample.png') # 画像を保存
plt.show()
</pre>
[[File:iris_df01.png|500px]]

案内メニュー