機械学習のための数学メモ #3 （分類）

復習と頭の整理のためにメモとして書いていきます。随時、追記していきます。
#**分類**

画像が縦長か横長か、２つの分類先に分ける**二値分類**について考える。
<img width="133" alt="スクリーンショット 2017-10-29 12.36.34.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/f27ce71b-26b2-8c1d-552d-d5ba1f28fc90.png">
<img width="175" alt="スクリーンショット 2017-10-29 12.36.42.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/b7ef3c07-862f-b3dd-0824-8eef5537d53d.png">
データ : 高さと横幅の部分
ラベル : 形の部分
<img width="328" alt="スクリーンショット 2017-10-29 16.46.18.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/2f700949-3eef-3b5a-030f-b9760a5bb58d.png">

表の内容をプロットすると次のようになる。
<img width="179" alt="スクリーンショット 2017-10-29 16.48.27.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/59e97e3f-37df-249d-32fa-87e4201880ef.png">
更に、データ数を増やしてみる。
<img width="326" alt="スクリーンショット 2017-10-29 16.48.51.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/153a7b3d-4ec3-87aa-c9bb-6f15af430c94.png">

再度、プロットすると次のようになる。
<img width="215" alt="スクリーンショット 2017-10-29 12.37.08.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/9aa4ef66-c7d4-e91d-cacf-6d383bdb5133.png">
これは、次のように線を引いて分類できる。
<img width="216" alt="スクリーンショット 2017-10-29 12.37.20.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/a801eb30-4f69-0e5b-e437-fd8cf272aa4a.png">

分類の場合は、図形的に解釈するとわかりやすいから、大きさと向きを持った矢印のベクトルをイメージするといい。
<img width="102" alt="スクリーンショット 2017-10-29 12.37.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/0bb3ae24-c067-9d21-80bc-851ef4c2f600.png">
先の線は、**重みベクトル**を**法線ベクトル**とする直線ということになる。
（注意）
<img width="22" alt="スクリーンショット 2017-10-29 16.55.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/6f6270e7-ecfd-2037-41e0-39ae3ea0fa68.png">は重みベクトルというパラメータで、法線は、ある直線に対して垂直なベクトルのこと。

ベクトル同士の内積について
実ベクトル空間の内積は各要素の積を足し上げたものだから、次の式と同じ意味ということ。
<img width="212" alt="スクリーンショット 2017-10-29 12.37.36.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/427b6542-9f37-fc5b-dc3d-f79b53b24e8d.png">

今回の縦幅と横幅を求める式は次のようになる。
<img width="267" alt="スクリーンショット 2017-10-29 12.37.42.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/4bf78672-d4b9-0a8d-93e4-f55a7df705e2.png">
<img width="22" alt="スクリーンショット 2017-10-29 16.55.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/7ec35ad1-4943-eb0a-00fb-01acabb2fec6.png"> = (1, 1)のとき
<img width="153" alt="スクリーンショット 2017-10-29 12.37.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/a7e97695-f102-22db-7b76-c540dd629f89.png">

<img width="47" alt="スクリーンショット 2017-10-29 17.02.57.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/6a07771d-2419-9d02-ae80-ca85bd39b1b7.png">となり、傾き-1の直線を表すということがわかる。
（内積の式は直線のグラフを表す。）

<img width="231" alt="スクリーンショット 2017-10-29 12.37.58.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/ba63b2f7-680a-6f4b-2095-5b5b9e82948c.png">

重みベクトル<img width="22" alt="スクリーンショット 2017-10-29 16.55.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/7ec35ad1-4943-eb0a-00fb-01acabb2fec6.png"> = (1, 1)を書き加えると、<img width="22" alt="スクリーンショット 2017-10-29 16.55.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/ae53a16b-5ac6-81be-fdba-57e91790afa7.png">が直線に対して垂直になっていることがわかる。

次の学習データがあるとき、
<img width="399" alt="スクリーンショット 2017-10-29 12.38.41.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/afbaecca-ec74-4c64-0ed0-adcc01b8555d.png">
<img width="191" alt="スクリーンショット 2017-10-29 12.38.47.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/4a60077e-f600-1708-eb52-658fc84e620f.png">

縦長か横長かを判定する関数（つまり１か-1を返す関数<img width="30" alt="スクリーンショット 2017-10-29 22.28.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/3367f2dc-5054-8849-4bf3-3ac8b67ae78f.png">）は**識別関数**という名前がついている。

<img width="358" alt="スクリーンショット 2017-10-29 12.38.58.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/09785988-7374-39f2-81dd-9578e0a8887c.png">
<img width="226" alt="スクリーンショット 2017-10-29 12.38.52.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/990cb401-86c9-576a-7c00-ee1615841111.png">
<img width="25" alt="スクリーンショット 2017-10-29 22.31.17.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/2cae6bef-3f21-1766-cf84-4e1f777a395b.png">が負になるのは<img width="72" alt="スクリーンショット 2017-10-29 22.32.15.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/dc85c639-344e-6e00-941b-994e0b6ae209.png">のとき、つまり重みベクトル<img width="22" alt="スクリーンショット 2017-10-29 16.55.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/502b6b41-1759-fb00-11d0-016ea22953ff.png">との成す角が<img width="72" alt="スクリーンショット 2017-10-29 22.32.15.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/dc85c639-344e-6e00-941b-994e0b6ae209.png">の範囲内、つまり直線を挟んだ重みベクトルの反対側の範囲。

<img width="190" alt="スクリーンショット 2017-10-29 12.39.07.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/d58091f4-a71f-de5c-0061-c73e115b3f21.png">
<img width="191" alt="スクリーンショット 2017-10-29 12.39.14.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/c4b7b683-a54c-4602-a343-8d73b3fb79d2.png">

重みベクトルの更新式は、次のようになる。
これをすべての学習データに対して繰り返し処理して重みベクトルを更新していく。
<img width="265" alt="スクリーンショット 2017-10-29 12.39.45.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/fd287a3c-35f4-5bad-4278-538716b80552.png">

<img width="72" alt="スクリーンショット 2017-10-29 22.42.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/913d04b2-6c47-5b48-28ef-65a5d207bc25.png">は、識別関数による分類がうまくいかなかった場合。
（横幅と高さのベクトル<img width="9" alt="スクリーンショット 2017-10-29 22.43.43.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/8d91fc49-cdca-f748-4688-88f1588d841a.png">を識別関数に通して分るいした結果と、実際のラベルyが異なっている）
それに対して、<img width="69" alt="スクリーンショット 2017-10-29 22.44.50.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/cf4229cf-3c56-577f-4d79-33232e75d621.png">は、識別関数による分類がうまくいったということ。
つまり、
<img width="265" alt="スクリーンショット 2017-10-29 12.39.45.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/fd287a3c-35f4-5bad-4278-538716b80552.png">
この式は、識別関数による分類に失敗した時だけ新しいパラメータに更新するよ、という式。
分類に成功した時は、そのまま<img width="22" alt="スクリーンショット 2017-10-29 16.55.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/1bb5039f-dbea-915b-c132-e781fe8205ee.png">を代入しているので何も変わらない。

では、詳しく分類に失敗した時の更新式<img width="85" alt="スクリーンショット 2017-10-29 22.48.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/57d22b1e-8dfc-9ef2-2752-42237f2a7de1.png">を見ていく。
重みベクトルは、回帰のパラメータ同様、ランダムな値で初期化するから、適当に以下のベクトルで考えてみる。

<img width="231" alt="スクリーンショット 2017-10-29 12.39.52.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/0572a7c1-d1cd-8ba1-3e35-a618af039920.png">

<img width="78" alt="スクリーンショット 2017-10-29 22.51.16.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/fe1a8550-d8fe-cbca-4b7d-e50eb1eed566.png">というデータがあるとき、これでパラメータを更新することを考えてみる。
<img width="231" alt="スクリーンショット 2017-10-29 12.40.00.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/0c870964-9736-1e9c-1999-1c573621d6b8.png">
<img width="400" alt="スクリーンショット 2017-10-29 12.40.12.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/c61b0a7b-ad8f-1525-827b-ccec1f19d02b.png">
お互いのベクトルはほぼ反対を向いているから<img width="22" alt="スクリーンショット 2017-10-29 16.55.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/8f9eacf9-0493-e770-b4a3-fe6a4c8b1af6.png">と<img width="18" alt="スクリーンショット 2017-10-29 22.55.58.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/647dec9e-3e0f-6bba-6384-31f8ee32c823.png">の成す角*θ*は<img width="72" alt="スクリーンショット 2017-10-29 22.32.15.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/2d155585-d75d-2c96-b172-13abbfff2051.png">になって、内積は負になる。
したがって、識別関数<img width="44" alt="スクリーンショット 2017-10-29 22.57.16.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/df7623cc-08c8-dd9e-dd92-b4c3a1b6df82.png">による分類は-1となる。

つまり、<img width="72" alt="スクリーンショット 2017-10-29 22.42.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/e029b5c4-b8c0-57e9-12e4-b14a7f32b7fb.png">になって、分類に失敗したという状態。
更新式が適用され、<img width="40" alt="スクリーンショット 2017-10-29 22.59.47.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/cbfd4bbc-aa99-32b4-de1f-1f7c9faea3bd.png">より、
<img width="240" alt="スクリーンショット 2017-10-29 12.40.19.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/b6354aca-fffe-1e08-abdc-f232ff7383f6.png">

このグラフは次のようになる。
<img width="234" alt="スクリーンショット 2017-10-29 12.40.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/34c1221e-219e-6e94-0750-97faef2a5523.png">

ここで面白いのは、新しい次の<img width="22" alt="スクリーンショット 2017-10-29 16.55.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/d008b9c9-cc7d-2bb3-c0b3-38d3dd54fac5.png">は<img width="43" alt="スクリーンショット 2017-10-29 23.04.15.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/2af172f5-1c10-b13f-095e-9669d47aa531.png">で、その新しい重みベクトルに垂直な直線（識別関数）は回転したこと。

<img width="233" alt="スクリーンショット 2017-10-29 12.40.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/d79a484f-0eb8-691c-155f-b232ef2a744b.png">
これで<img width="18" alt="スクリーンショット 2017-10-29 22.55.58.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/defe4216-3fe4-7cd3-bb51-94993f3b4f44.png">は直線を挟んで重みベクトルと同じ側に持ってくることができた。

<img width="37" alt="スクリーンショット 2017-10-29 23.09.24.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/3afe1f12-96b1-3b8e-34cb-63499fa81bba.png">なので、内積が正になり、<img width="30" alt="スクリーンショット 2017-10-29 22.28.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/4216d904-4e0e-dbc1-ddeb-1390488043b8.png">による分類は１になる。
<img width="40" alt="スクリーンショット 2017-10-29 22.59.47.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/b5473180-b09a-1fde-b08b-347d8bcf7dd6.png">なので、分類に成功したということになる。
<img width="216" alt="スクリーンショット 2017-10-29 12.40.37.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/ea6a6f9a-716a-c763-a6a5-0025bd59db44.png">
このように、パラメータの重みベクトルは更新されていく。
この更新をすべての学習データについて繰り返していくことがパーセプトロンの**学習**ということになる。

##ロジスティック回帰/シグモイド関数
**ロジスティック回帰**は、分類を確率として考えるので、アプローチの仕方が異なる。

横長を１、縦長を０とすると、
Q. 縦長を今回−１にしなかったのは何故か？
更新式を簡潔にするための便宜上の理由。本当はどちらでもいい。

回帰の関数<img width="134" alt="スクリーンショット 2017-10-29 12.40.58.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/770edfda-b2dc-7f32-2dcb-03ffb8244299.png">は、勾配降下法を使って*θ*を学習し、その*θ*を使って未知のデータ<img width="14" alt="スクリーンショット 2017-10-30 0.32.32.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/0eb525ab-a4c8-8170-2c99-b5a095381d54.png">に対する出力値を求めることができた。

このように、未知のデータがどのクラスに分類されるかを求める関数<img width="27" alt="スクリーンショット 2017-10-30 0.33.44.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/ee00b7a2-c807-69b3-7808-86a4c1c50ba0.png">が必要で、次のような式になる。
<img width="211" alt="スクリーンショット 2017-10-30 0.34.36.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/2cfc220f-5ebf-d8ba-c0d9-a7fec85ab9c4.png">
ちなみに<img width="34" alt="スクリーンショット 2017-10-30 0.37.02.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/8cf499ea-b174-635d-663f-91220eceeb2d.png"> = <img width="11" alt="スクリーンショット 2017-10-30 0.37.20.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/7dfe05fb-41be-a3f4-fad2-7e66a3b8bb49.png">なので、<img width="57" alt="スクリーンショット 2017-10-30 0.37.47.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/ab2fc5e8-c10e-8024-2142-a28857833cd9.png">は、<img width="31" alt="スクリーンショット 2017-10-30 0.38.09.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/6fbb1607-2f75-c9a1-3ef2-4167924b59f4.png">と書き換えることができる。

<img width="25" alt="スクリーンショット 2017-10-30 0.39.40.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/b75ef0c0-8b82-3aab-ed9d-eb9109196b4a.png">を横軸、<img width="27" alt="スクリーンショット 2017-10-30 0.33.44.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/280ab7c0-a63c-1040-864c-e9c6722135c5.png">を縦軸だとする、**シグモイド関数**は次のようなグラフになる。
<img width="281" alt="スクリーンショット 2017-10-29 12.41.18.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/9d48f117-63c7-79ee-0e76-746cc1aee51f.png">

シグモイド関数の特徴は、<img width="85" alt="スクリーンショット 2017-10-29 12.41.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/a4bae028-2754-7c75-db6d-eda679d309f0.png">
<img width="56" alt="スクリーンショット 2017-10-29 12.42.16.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/21ff4d0c-9b3a-0ed1-0474-6aee76038923.png">のとき、<img width="69" alt="スクリーンショット 2017-10-29 12.42.22.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/686b4cdd-7c19-83ee-cff4-7f5b4f3e2ca6.png">

シグモイド関数は、<img width="85" alt="スクリーンショット 2017-10-29 12.41.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/a4bae028-2754-7c75-db6d-eda679d309f0.png">だから、分類を確率として考える上で便利。
未知のデータ<img width="14" alt="スクリーンショット 2017-10-30 0.32.32.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/2aa8e58b-184a-8aa3-927a-95ed7fe8ce3f.png">が横長だとう確率<img width="27" alt="スクリーンショット 2017-10-30 0.33.44.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/9a7d7e33-e7b8-66b3-a4ff-14585ce4a529.png">は、次のように表すことができる。
<img width="205" alt="スクリーンショット 2017-10-29 12.42.28.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/70ba39bb-739d-0251-42f6-423855ede780.png">
<img width="9" alt="スクリーンショット 2017-10-30 0.51.39.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/74645f0d-a550-2e97-3231-c12c8a49ac2e.png">の中の縦棒は、**条件付き確率**、つまり<img width="14" alt="スクリーンショット 2017-10-30 0.32.32.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/773578a7-e37b-67ce-9ff9-476965609e2d.png">というデータが与えられた時に横長（<img width="27" alt="スクリーンショット 2017-10-30 0.49.13.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/13eb3b59-2373-62de-7fc5-d302de798fb1.png">）になる確率を表す。
<img width="67" alt="スクリーンショット 2017-10-29 12.42.35.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/1b52bd52-33e0-c856-d6eb-5da49f3e5a77.png">のとき、横幅である確率は70%だということ。=>横長に分類される。
<img width="70" alt="スクリーンショット 2017-10-29 12.42.49.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/7c255c5b-e6f9-96e2-390f-130fae0acd55.png">は横幅の確率が20%ということ。=> 縦長に分類される。

つまり、<img width="28" alt="スクリーンショット 2017-10-30 0.56.12.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/3905d7cd-b728-fb27-dcc3-60361e36b063.png">の結果を見て、0.5をしきい値として横長か縦長かを分類される。
<img width="164" alt="スクリーンショット 2017-10-29 12.42.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/c0fa4069-f29a-3026-33c8-6dd9c5ffe1f4.png">

つまり、
<img width="57" alt="スクリーンショット 2017-10-30 0.59.34.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/73ee49a5-a960-3b2e-ef14-46b4b9ea60d6.png">のときは、<img width="45" alt="スクリーンショット 2017-10-30 1.00.10.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/f7fb6dcc-2c4b-2303-0bf6-2cabf30efebb.png">
<img width="60" alt="スクリーンショット 2017-10-30 1.00.39.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/08c2053b-b382-13c6-c364-b821150c677d.png">のときは、<img width="43" alt="スクリーンショット 2017-10-30 1.00.57.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/1358c145-7745-2ea2-00ca-444954d21966.png">
ということがわかる。

<img width="282" alt="スクリーンショット 2017-10-29 12.43.10.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/69c9628d-dc3f-47d7-1a19-1795831c5d7c.png">
<img width="164" alt="スクリーンショット 2017-10-29 12.42.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/c0fa4069-f29a-3026-33c8-6dd9c5ffe1f4.png">は、
<img width="152" alt="スクリーンショット 2017-10-29 12.43.17.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/5fd98eae-a9b1-ccb1-eb6f-7a2af2909c5c.png">と書き直せる。
横軸を横幅（<img width="16" alt="スクリーンショット 2017-10-30 1.04.55.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/81ac505a-b1ce-d272-9212-f286e93b111e.png">）、縦軸が縦幅（<img width="15" alt="スクリーンショット 2017-10-30 1.05.08.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/79b1ab65-e62a-825e-9283-de657eeec9a5.png">）のグラフを考える。
*θ*の値をここでは適当に入れて
<img width="285" alt="スクリーンショット 2017-10-29 12.43.24.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/971d197e-65ac-8ca5-888e-b3ed718f51d0.png">
<img width="222" alt="スクリーンショット 2017-10-29 12.43.28.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/1aa4495d-86fb-1ec7-6906-467af38e79cd.png">
<img width="46" alt="スクリーンショット 2017-10-30 1.08.20.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/85fc619e-d557-a454-7ed2-34dea9ba4545.png">をグラフに表すと次のようになる。
<img width="226" alt="スクリーンショット 2017-10-29 12.43.34.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/5a6a1305-5aa5-227f-71fd-22cc9842bf1f.png">

つまり、縦長だと分類される領域は次のようになる。
<img width="230" alt="スクリーンショット 2017-10-29 12.43.43.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/50092f82-da0f-9211-dd73-6653b7e95306.png">

要するに、<img width="44" alt="スクリーンショット 2017-10-30 1.11.41.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/947d18ff-aa7d-83a0-1078-f62c63735bed.png">を境界線として、分類している。
このようにデータを分類するための直線のことを**決定境界**という。
<img width="216" alt="スクリーンショット 2017-10-29 12.43.51.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/03134118-5555-3d6b-caf1-b3b6584b1672.png">
今回は、パラメータ*θ*に適当な値を入れたので、上手く分類できていない。
次はその*θ*を求めるために、**目的関数**を定義して微分してパラメータの更新式を求める（**ロジスティック回帰**）。

<img width="11" alt="スクリーンショット 2017-11-03 15.34.46.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/9760503e-5c71-9e73-0298-c10e27e7cd59.png">が横長である確率<img width="66" alt="スクリーンショット 2017-10-29 12.44.04.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/440d1889-090c-d322-8df0-09552cff37e3.png">を<img width="28" alt="スクリーンショット 2017-10-30 0.56.12.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/85e1cfcd-cb37-778d-8188-6bde872bd1ab.png">と定義したので、学習ラベル<img width="9" alt="スクリーンショット 2017-11-03 15.36.18.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/63987699-9fcb-8f02-21d4-63e4bad8e873.png">と<img width="28" alt="スクリーンショット 2017-10-30 0.56.12.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/c90b1bc6-9c23-b07b-bfc8-2a61afa2385e.png">の関係は、
<img width="31" alt="スクリーンショット 2017-11-03 15.40.00.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/8ad770ea-c946-a11d-2afd-d7c3d0b1d5c4.png">のとき<img width="56" alt="スクリーンショット 2017-11-03 15.39.11.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/b7c63bb9-6242-f4d1-717f-aa89d0ca8145.png">、
<img width="32" alt="スクリーンショット 2017-11-03 15.40.09.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/293450c9-63c3-96ac-3cbe-f9e3eeb37b4f.png">のとき、<img width="58" alt="スクリーンショット 2017-11-03 15.39.23.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/f990ec1c-0802-c79b-1d2d-6a4fd950970e.png">

つまり、
<img width="402" alt="スクリーンショット 2017-10-29 12.44.36.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/55b0dace-8254-195c-cbce-10aba29cd766.png">

すべての学習データはお互い関係なく独立に発生すると考えると、この場合の全体の確率は、次のように表すことができる。
<img width="346" alt="スクリーンショット 2017-10-29 12.44.45.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/40a90cc5-ade9-6c81-f631-ec3bd3241adc.png">

この同時確率の式を一般化して次のように表すことができる。
<img width="363" alt="スクリーンショット 2017-10-29 12.45.07.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/87fa3e4f-7205-ecee-7bde-269901f91041.png">

<img width="229" alt="スクリーンショット 2017-10-29 12.45.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/36304bd2-6334-7fa2-4ab6-01201a502fe7.png">をそれぞれ考える。

指数部の<img width="20" alt="スクリーンショット 2017-11-03 15.47.51.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/0c645290-db64-092c-a443-576004b97172.png">に１を代入してみると、
<img width="250" alt="スクリーンショット 2017-10-29 12.45.38.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/e8f997af-12f5-4bd8-47a0-eaee0b45fe16.png">

指数部の<img width="20" alt="スクリーンショット 2017-11-03 15.47.51.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/0c645290-db64-092c-a443-576004b97172.png">に０を代入してみると、
<img width="243" alt="スクリーンショット 2017-10-29 12.45.46.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/02fb9c2d-13b1-ea8b-21a4-2f88d7db20c6.png">

場合分けするより、１つの式にまとまって表記が簡単になっている。
目的関数がわかったところで、次は、目的関数を最大化するパラメータ*θ*を考える。
（回帰の時は誤差を最小化する、今考えているのは、同時確率。確率が高くなってほしいから、最大化する。）

目的関数<img width="26" alt="スクリーンショット 2017-11-03 15.59.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/d8214e69-ab19-4582-8f02-6c52984e832c.png">は尤度という。「もっともらしい度合い」という意味。
<img width="363" alt="スクリーンショット 2017-10-29 12.45.07.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/87fa3e4f-7205-ecee-7bde-269901f91041.png">

##対数尤度関数
これからは尤度関数を微分して、パラメータ*θ*を求めていく。
ただし、予め尤度関数は変形する（尤度関数の対数をとる）。
（確率は全て１以下の数で、同時確率のようなかけ算は、かけるほど値が小さくなっていくため。）
<img width="365" alt="スクリーンショット 2017-10-29 12.46.20.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/243649be-a787-6dcb-f561-ab04b2cf02e5.png">

logは単調増加関数（グラフがずっと右上がりで、<img width="46" alt="スクリーンショット 2017-11-03 16.24.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/0a6a2caa-c0a2-5d7e-eab5-1d5afced4e2e.png">なら<img width="78" alt="スクリーンショット 2017-11-03 16.25.02.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/b4424959-6ea3-80df-c37e-f4034bdb8d4b.png">となるような関数<img width="27" alt="スクリーンショット 2017-11-03 16.27.07.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/53e09c61-4cfc-af80-f93b-ffdad3866712.png">のこと。）で、そのグラフの形はこのような感じ。
<img width="219" alt="スクリーンショット 2017-10-29 12.46.27.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/6406ff6e-5a11-a9dd-62b9-ab1e8af83d2a.png">

<img width="46" alt="スクリーンショット 2017-11-03 16.24.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/b0c31494-b28a-875a-e498-170ba5da6cab.png">なら<img width="97" alt="スクリーンショット 2017-11-03 16.31.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/68c5eaf3-eca1-6c3e-4d23-f5f9ad1fe90f.png">になっている。だから、尤度関数についても<img width="81" alt="スクリーンショット 2017-11-03 16.28.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/e86d72e2-d09e-a5fb-cf6b-e9b5b4c64dfe.png">なら<img width="118" alt="スクリーンショット 2017-11-03 16.31.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/900f828b-cb28-a01e-9cfb-03e5997d75c1.png">になる。
要するに、<img width="26" alt="スクリーンショット 2017-11-03 15.59.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/fa959355-f4d7-e795-e9bb-633f6226f773.png">を最大化することと<img width="50" alt="スクリーンショット 2017-11-03 16.28.48.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/0adf3484-b30f-1119-f073-3177510b068e.png">を最大化することは同じことになる。

それでは対数尤度関数を変形すると、
<img width="415" alt="スクリーンショット 2017-10-29 12.46.47.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/ff57026c-27cf-077c-23b6-0fd506774331.png">

次に、**尤度関数の微分**について
ロジスティック回帰は、この対数尤度関数を目的関数として使うことになる。
<img width="367" alt="スクリーンショット 2017-10-29 12.47.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/7fad3ed2-fc4d-4bf1-0e85-a8589f75bd31.png">
これをパラメータ*θ*で微分していくと、
<img width="394" alt="スクリーンショット 2017-10-29 12.47.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/6166f3a8-918c-44a9-02ec-fd9685bc1d8d.png">
次のように置き換えて、
<img width="84" alt="スクリーンショット 2017-11-03 16.37.01.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/8e9374cf-9779-b5a3-1ed1-aed4f3922812.png">
よって、
<img width="162" alt="スクリーンショット 2017-10-29 12.47.47.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/95796168-bef5-38c3-09d1-35a54765db30.png">
まずは、<img width="20" alt="スクリーンショット 2017-11-03 16.38.21.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/fc3b4251-8620-0fe1-66fe-a9a5b464f0df.png">から計算すると、

<img width="329" alt="スクリーンショット 2017-10-29 12.47.52.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/b485ca4a-e51c-648e-66ed-66df86a40cd9.png">

<img width="34" alt="スクリーンショット 2017-11-03 16.39.23.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/af8d1b40-76fb-fa13-b4ee-0fc95f4a0d00.png">の微分は、<img width="13" alt="スクリーンショット 2017-11-03 16.39.28.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/f0187df9-a46d-f8a3-574e-9496ccf1a38c.png">、
また、<img width="42" alt="スクリーンショット 2017-11-03 16.42.03.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/ca64360a-8134-8fbf-8595-9f1173fe7708.png">を微分すると、
<img width="105" alt="スクリーンショット 2017-10-29 12.47.58.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/e21b349b-5975-bef1-2ed8-b63f27fcdbf0.png">
したがって、
<img width="193" alt="スクリーンショット 2017-10-29 12.48.08.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/7f3bb723-7d62-4a7e-acdc-b6d5fc5baa9c.png">

次は、<img width="8" alt="スクリーンショット 2017-11-03 16.43.23.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/b614e70c-7ad2-7579-d5a4-57def6d9769a.png">を<img width="13" alt="スクリーンショット 2017-11-03 16.43.28.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/48a6ca2e-34f4-e57e-bd2c-46f83781e59c.png">で微分する。
ただし、<img width="274" alt="スクリーンショット 2017-10-29 12.48.13.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/724e8019-79cf-d4ba-31da-a2d4e538b58d.png">を微分することは、ややこしいので、以下のようなシグモイド関数の微分結果を利用して微分する。

<img width="247" alt="スクリーンショット 2017-10-29 12.48.17.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/ed42dffd-c148-7db1-e4fe-9792994fbca2.png">

<img width="50" alt="スクリーンショット 2017-11-03 16.45.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/ab0756f9-7b2d-9339-724a-5c81ad3c8648.png">とおいて、もう一段階、合成関数の微分を使う。

<img width="188" alt="スクリーンショット 2017-10-29 12.48.24.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/b304cbf0-aca2-ff4e-6dd7-916e52ff02eb.png">

<img width="8" alt="スクリーンショット 2017-11-03 16.43.23.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/2e923d5d-3e16-1605-622a-251aee62909c.png">を<img width="8" alt="スクリーンショット 2017-11-03 16.47.17.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/c608f65a-1ff2-a362-03e2-210240778461.png">で微分する部分が要するにシグモイド関数の微分のことなので、
<img width="156" alt="スクリーンショット 2017-10-29 12.48.36.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/9d1974ba-1fb2-0c36-e58a-b76f49d0638c.png">

また、<img width="8" alt="スクリーンショット 2017-11-03 16.47.17.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/94fe2c46-82f1-898c-417f-92516ef99269.png">を<img width="13" alt="スクリーンショット 2017-11-03 16.43.28.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/f0f4f74b-7ff0-5a11-55b6-a55d9715f8c9.png">で微分すると、


<img width="256" alt="スクリーンショット 2017-10-29 12.48.40.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/fc3bfe0e-8e62-4d58-a6b2-ed5ac9ced611.png">

結果をかけあわせて、

<img width="136" alt="スクリーンショット 2017-10-29 12.48.46.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/8cc1ab22-e8ba-2de2-60b6-6eeb189c10d9.png">

<img width="260" alt="スクリーンショット 2017-10-29 12.48.52.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/d9e79eb4-b98d-a860-618a-ae347989fc87.png">

あとは、この式からパラメータ更新式を導き出すだけ。今は最大化することが目的なので、微分した結果の符号と同じ方向に動かさないといけない。

<img width="338" alt="スクリーンショット 2017-10-29 12.49.01.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/ad93bdf7-1d59-8a16-2472-1c69ce556365.png">

ηの前と、シグマの中の符号を入れ替えて、回帰の時と符号を合わせるようにして、次のようにも書ける。
<img width="340" alt="スクリーンショット 2017-10-29 12.49.20.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/e224dc55-4e6d-600d-bb86-d69f93942b40.png">

##線形分離不可能
ロジスティック回帰を**線形分離不可能**な問題に適用する。
線形分離不可能な問題も、曲線であれば分類はできる。つまり次数を増やす必要がある。
<img width="195" alt="スクリーンショット 2017-10-29 12.49.39.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/f2c09706-0a58-ba54-cb92-b3475cecf847.png">

学習データに<img width="13" alt="スクリーンショット 2017-11-03 17.16.37.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/a95604b3-4b1f-fc4b-3131-c87739deed96.png">を加えた以下のようなデータを考える。

<img width="49" alt="スクリーンショット 2017-11-03 17.18.37.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/001e0a70-d33d-e2d8-7a3d-7fbe3b0d565c.png">のとき、
<img width="197" alt="スクリーンショット 2017-10-29 12.49.45.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/888f4e41-5049-de05-67d5-6de3bececa67.png">
<img width="324" alt="スクリーンショット 2017-10-29 12.49.50.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/11424a7c-40ec-55a6-4446-d28312c6ed2f.png">
*θ*が以下のようなベクトルだったときのグラフの形を考えると、
<img width="169" alt="スクリーンショット 2017-10-29 12.49.56.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/84728111-90bc-493c-8428-3ba26ebd7f83.png">
*θ*をとりあえず代入して、
<img width="242" alt="スクリーンショット 2017-10-29 12.50.01.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/db6d793c-df7c-c494-7bf9-33ea63a0ad8f.png">
よって、<img width="44" alt="スクリーンショット 2017-11-03 17.24.05.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/9da23877-a182-ae73-f14f-34d66cf3ea00.png">となる。

グラフに書くと次のようになる。
<img width="240" alt="スクリーンショット 2017-10-29 12.50.10.png" src="https://qiita-image-store.s3.amazonaws.com/0/170564/cd5649ec-f653-2f99-f5bb-34443be760b0.png">
このようにして、線形分離不可能な問題を解いて行く。
（今回はパラメータ*θ*がまだ適切ではないので、データを正しく分類できていない。）
例えば、好きなように次数を増やして、複雑な形の決定境界にすることもできる。