#1.書こうと思た動機
機械学習の勉強のため、Scikit-learnを実行してみました。
でも回帰と分類、よくわからず行っていました。
よってSVMで株価の推定を行おうというアホなことをやっていました。
勉強不足は棚に上げて でもよくよく見るとどの参考書等でもいきなりやりたいことが〇〇だからSVM使おうぜみたいな記載、またはもっと概念的な記載が多いかと思います。
そこで具体例を含めた記載にチャレンジしたいと思います。
##1.1お断り
全4つを纏めたうえで書くのではなく進捗具合に合わせて途中の状態であってもアップしていきます。
その後、勉強していく中で自分の中で整理がついたら順次更新いたします。
#2.機械学習のアルゴリズム
本家の説明文書は以下の通り。
http://scikit-learn.org/stable/tutorial/machine_learning_map/
##2.1分類(classification)
上記の図の左上に当たります。
start => データ50個以上ok => カテゴリ分けをしたいyes => ラベル付データを保持しているかyes
でたどり着きます。
この「ラベル付きデータ」は「想定結果」と思えばいいかと思います。
実例で考えた方が分かりやすいと思います。
####2.1.1 分類を使うケース
何かを振り分けるという判定に使用します。
- 種類を判定
- 文字の画像を認識して文字に起こす
- 迷惑メールの振り分け
- 株価が上がるか下がるかを判定
など。分類編ではちょっと応用して変動の範囲を判定しました。
###2.1.2 (例)猫とライオンを振り分ける
####<訓練データ>
以下の訓練データで機械学習します。答えは1:猫 か2:ライオン です。
体長(cm) | 高さ(cm) | 体重kg | 鳴き声 | 答え(ラベル) | コメント(データのイメージ、学習には使いません。) |
---|---|---|---|---|---|
60 | 50 | 5.0 | ニャー | 1:猫 | 普通の猫 |
150 | 100 | 130 | ガオー | 2:ライオン | 普通のライオン |
70 | 30 | 4.0 | ミャャー | 1:猫 | マンチカン? |
80 | 50 | 10 | ニャャャー | 1:猫 | デブ猫? |
80 | 60 | 5.0 | ゴォォォー | 2:ライオン | 子ライオン? |
####<テストデータ>
以下表の動物が猫かライオンか判別します。
体長(cm) | 高さ(cm) | 体重kg | 鳴き声 |
---|---|---|---|
65 | 55 | 3.5 | ニャァァャー |
####結果
この機械計算により1:猫 または 2:ライオン が判定されます(多分1:猫 になりそうですが)
なおこの際に訓練データに含まれない結果(例えば3:チーター)といった結果が出てくることはありません。
仮に以下のような犬っぽいデータでテストしても結果は1:猫 または 2:ライオン です。訓練データにない以上4:犬という答えはありません。
体長(cm) | 高さ(cm) | 体重kg | 鳴き声 |
---|---|---|---|
65 | 55 | 3.5 | ワン! |
####注意
ただし、このラベルでは大小で意味を持ってしまうこともあるようです。
(参考文献)Python機械学習プログラミング 達人データサイエンティストによる理論と実践 インプレス刊の4章を参照ください。
なお、今回の株価の問題では前日との差額/100ですので結果的に大小を持ってもOKだったようです。
##2.2回帰(regression)
上記の図の左上に当たります。
start => データ50個以上ok => カテゴリ分けをしたいno => 量を推定したいyes
でたどり着きます。
最後の選択肢の通り、量の推定になります。
###2.2.1 回帰を使うケース
選択肢にもあった通り「量」を想定する場合に使います。
- 株価を想定する
- 売り上げを想定する。
など。
###2.2.2 (例)猫の体重を想定する。
####<訓練データ>
以下の訓練データで機械学習します。
体長(cm) | 高さ(cm) | 性別 | 答え(体重kg) |
---|---|---|---|
60 | 50 | オス | 5.0 |
80 | 60 | オス | 6.5 |
55 | 45 | メス | 3.5 |
60 | 45 | メス | 3.7 |
####<テストデータ>
以下表の猫の体重を算出します。
体長(cm) | 高さ(cm) | 性別 |
---|---|---|
75 | 53 | オス |
####結果
この機械計算によりxx(kg)が返ってきます。
この場合の値は訓練データの答えの選択肢だけではありません。
5.5kgといった訓練データに存在しない値も計算される可能性があります。
これがアルゴリズム表内にある選択肢「カテゴリ分けをしたい」がyesの先にある「分類」とnoの先にある「回帰」の大きな違いになります。
(以降、その他の実施状況により更新していきます。)