クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

機械学習のしくみ

このレッスンのあとで: コンピュータが例から学ぶ流れを説明し、k近傍法で分類して、偏りに気づくことができる。

45分のレッスンコマンド2件JupyterLab データサイエンスラボ:pandas、Matplotlib、scikit-learn をブラウザーで

機械学習とは何か

機械学習とは、コンピュータが、たくさんの例から、自分で判断のしかたを見つけることです。人が「雨なら少ない」と規則を書くのではなく、答え付きの例を大量に見せて、似た例から判断させます。

写真の仕分けや、おすすめ表示にも使われています。今日は、いちばん単純な方法を、手で動かして理解します。

このレッスンのゴール

メモ

コンピュータが例から学ぶ流れを説明し、k近傍法で分類して、偏りに気づくことができる。

キーワード

ことばいみれい
機械学習例から、判断のしかたを自分で見つけるしくみ
特徴量判断の手がかりにする数気温、雨の量
ラベルその例の正しい答え混雑、静か
訓練データ学習のために見せる、ラベル付きの例
テストデータ学習に使わず、力を確かめるために取っておく例
偏り例の集め方が片寄っていて、一部の人や場合に弱いこと

学生が入力するセルは、このプレビューでは空白です。

始める前に

メモ

上のバーの Start the lab を押してください。起動に1分ほどかかります。このレッスンでは、貸し出し数が300回以上の日を「混雑」、それより少ない日を「静か」と呼びます。ラボの出力には、英語の busy と quiet で出ます。

機械学習は例を見せて、力を測る

流れは3つです。1つ目は、ラベル付きの例を集めることです。2つ目は、その一部の訓練データで学習させることです。

3つ目は、取っておいたテストデータで、当たるかを確かめることです。ここでは、気温と雨の量から、その日が混雑か静かかを当てます。

気温と雨から、混雑か静かかを当てる

コマンド
docker exec jupyter python3 steps/knn.py

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

正解率の読み方

accuracy は、テストの日のうち、当たった割合で、0.815、つまり約8割です。一方、always saying quiet は、何も考えず「静か」と答え続けたときの割合で、0.641 です。

学習した予想が、何も考えない答え方より、ずっと上でないと意味がありません。

k近傍法は似た例の多数決

k近傍法は、新しい日と気温と雨がいちばん近い例を、k個探します。その k 個の中で、いちばん多いラベルを答えにします。

近さは、2点の距離で測ります。気温の差と雨の差を2回ずつかけて足し、平方根を取ります。

例: 新しい日 (気温7度、雨5ミリ) の判断

例気温、雨距離ラベル
A5度、6ミリ約2.2静か
B3度、8ミリ5.0静か
C6度、10ミリ約5.1静か
D20度、0ミリ約13.9混雑

学生が入力するセルは、このプレビューでは空白です。

k = 3 のとき、何と答えるか

近い順に、A、B、C の3つです。ラベルは、静か、静か、静かなので、答えは「静か」です。D は遠いので、選ばれません。

k = 1 でも A だけを見て、「静か」と答えます。kを変えると、答えが変わる日もあります。

k を変えて、当たり方を比べる

コマンド
docker exec jupyter python3 steps/knnk.py

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

kが小さすぎても大きすぎても困る

k = 1 では、学習した日の正解率が 0.963 と高いのに、取っておいた日は 0.728 まで下がります。例を丸暗記してしまい、新しい日に弱いのです。

k = 5 と 15 では、取っておいた日が 0.815 です。k = 45 と 135 では 0.826 で、ほとんど変わりません。

偏ったデータからは、偏った判断が生まれる

機械学習は、見せた例から学ぶので、例が偏れば判断も偏ります。夏の日だけで学習したら、冬の日には、ほとんど当たりません。

人に関わる判断では、もっと深刻です。ある地域の人の例が少ないと、その地域の人に対する判断が、まちがいやすくなります。

よくある間違い

注意

正解率が高ければ、いつでも良い予想だと考える人がよくいます。何も考えない答え方でも、64%は当たるのです。必ず、何も考えない答え方の正解率とくらべて、さらに、どんな日で外れるかを確かめましょう。

さらに挑戦: 外れた日を調べる

knn.py の最後に出る4つの数は、当たりと外れの内訳です。行が本当の答えで、列が予想です。

「混雑」を「静か」と予想した日と、その逆は、どちらが多いでしょうか。貸し出しサービスにとって、どちらの外れが困るか、考えてみましょう。

このラボとソースについて: JupyterLab データサイエンスラボ:pandas、Matplotlib、scikit-learn をブラウザーで

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。