基本的な機械学習手法を事例から学べるレシピ紹介

# はじめに

Axross Recipeを運営している松田です。

**[Axross Recipe](https://axross-recipe.com/recipes)** は、エンジニアの"教育"と"実務"のギャップに着目し、「学んだが活用できない人を減らしたい」という想いで、ソフトバンク社内起業制度にて立ち上げたサービスです。

現役エンジニアによる実践ノウハウが"レシピ"として教材化されており、実際の業務に近いテーマで、動くものを作りながら学ぶことができます。

Axross：https://axross-recipe.com
公式Twitter：https://twitter.com/AxrossRecipe_SB
![アクロス広告最新版.jfif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/1b5f2238-5d43-56ae-c26b-594a5ab89dbc.jpeg)



# 機械学習の概念
## 機械学習とは
機械学習(Machine Learning) とは、データを「機械（コンピューター）」で反復的に「学習」することによって、未知のデータに対する結果を予測する技術です。

機械学習を、受験生の勉強に喩えて表現すると、
受験生が、参考書や過去問（データ）を入手（インプット）して反復学習し、良い点数を取るために自身の脳（モデル）を鍛え、試験問題（未知のデータ）に対して回答（アウトプット）を出します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/c11ce8eb-03ff-d4c1-ba7f-6a35bfd8692f.png)

機械学習は、人工知能（AI）の概念の１つの手法で、機械学習の代表例が、ニューラルネットワークであり、ディープラーニングです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/635150e2-d3d3-aa85-5279-0d3571da95dc.png)


# 機械学習の種類
機械学習の手法は大きく分けると、3種類あります。

「教師あり学習」「教師なし学習」「その他のケース」です。
それぞれについて解説していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/32f569ec-b6fb-d022-aea4-b7ef2f1ce10e.png)

## 教師あり学習
教師あり学習とは、正解のあるデータをもとに学習する手法です。
**学習データと正解データをセットで与え、未知のデータをカテゴリ分類したり、数値を予測する** ときに利用します。

回帰分析や決定木、判別分析等が、教師あり学習の例です。
### 分類
**分類** とは、与えられたデータに対して、**いくつかの選択肢（カテゴリ）の中からどれに対応するか判別** する方法です。

<画像>
・ ECサイトの商品画像から、アイテムカテゴリを予測する。
・ 画像に映る動物の種類を分類する。
・ 果物の大きさ、形状、傷の有無等によってランクを自動判別する。
・ 工場の生産ラインにある商品の欠陥や異常を検知する。
・ 手書き文字（アルファベットや数字）を認識する。
・ 人間の顔画像から年齢や感情を予測する。
・ マスクの着用者、未着用者を識別する。

<テキスト>
・ ECサイトのレビューのポジティブ・ネガティブを自動判定する。
・ メールの文章から迷惑メールを見分ける。

<数値>
・ ECサイトで、購入確率の高そうなユーザーを予測する。
・ 顧客の支払い履歴・取引情報から与信判断する。
・ サービス解約しそうなユーザーを予測する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/154580f6-3867-0be2-0f38-9c2e05d7c483.png)

### 回帰
**回帰** とは、選択肢の中から該当するものを当てるのではなく、与えられたデータから **未知の数値を予測** する方法です。

<数値>
・ 物件情報から家賃を予測する。
・ 株価・為替の傾向を予測する。
・ 小売店の購買履歴（POSデータ）から商品売上を予測する。
・ 小売店の購買履歴（POSデータ）から仕入れを予測し在庫を適正化する。
・ レシートの購買履歴から顧客の商品の購買傾向を予測し、販売戦略に活かす。
・ 市場反応分析やコンジョイント分析、RMF分析等、マーケティング分析に活用する。
・ コールセンターの入電数を予測し、人員配置を適正化する。
・ ダイナミックプライシングにより航空券の適正価格を予測する。
・ 季節やイベント等の条件からテーマパークの来場者数を予測し、案内スタッフのシフトを組む。
・ 電気やガスの消費量推移等、長期時系列データにおける未来の需要を予測し、見積シミュレーションを作成する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/0f46cee6-29e3-0412-b52b-5372f500097d.png)

## 教師なし学習
教師なし学習とは、正解のないデータを基に学習する手法です。
**正解データを与えずにコンピュータ自身がデータの中から共通項や特徴を見つけ出し、グループ分けをする(＝クラスタリング)** ときに利用します。


主成分分析やクラスター分析などが、教師なし学習の例です。

<数値>
・ EC顧客情報からいくつか顧客をセグメントごとにグループ分けし、興味のありそうな商品について個別にDMを送る。
・ 自社発行のクレジットカードの利用状況から顧客のプロファイリングを行い、最適な広告を打つ。
・ Webサイトに訪問したユーザーの行動履歴から行動パターンを分析する。
・ Twitterユーザーのツイートから傾向を抽出し、グループ分けをする。
・ アンケート結果のデータから特徴量を抽出し、関係性を見つけ出す。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620853/41340ba7-735d-0b33-ad76-9b15ac9e6b4d.png)

## その他のケース
### 強化学習
連続的なデータに対して、報酬と罰によって自ら試行錯誤を繰り返し、最適な行動を学習します。

・ 工場の生産ラインで、様々な形状のモノを掴む動作（ピッキング）を成功・失敗を繰り返しながら自律的に学習するロボット制御に活用する。
・ 清掃ロボットが、部屋の広さや間取り、段差等を日々の活動からセンサーで学習し、最適な導線経路で清掃する。
・ 迷路ゲームの中で最短距離でゴールできるようにロボットが学習する。
・ 囲碁やチェスなどのゲームを行う。

# 機械学習を実装通して学べるレシピ紹介
## 教師あり学習（分類）
### [01_楽曲のムードを深層学習で分類するレシピ](https://axross-recipe.com/recipes/86)
投稿者：[@belltree](https://axross-recipe.com/users/412)さん
楽曲100曲ずつをムード別(happy, relax, sad, angry)に分類した音声データを深層学習モデル（VGG16）で学習し、音響的特徴量とスペクトログラムというグラフの特徴から楽曲をムード別に分類するレシピです。

Apple MusicやSpotifyのような楽曲自動再生に応用されている、音声分類処理の技術・仕組みを学ぶことができます。

https://axross-recipe.com/recipes/86

### [02_コメントからポジネガを自動判定するレシピ](https://axross-recipe.com/recipes/10)
投稿者：[@uehara7](https://axross-recipe.com/users/3)さん
映画サイトの映画に対する、日本語コメントレビューのテキストデータを取得し、前処理を行い学習し、ポジネガ（ポジティブ/ネガティブ）分類モデルを構築、実際のポジネガ分類の評価を行うレシピです。

ECサイトの商品カスタマーレビュー解析やニュースやブログのコメント解析、SNSのコメント解析に応用できます。

https://axross-recipe.com/recipes/10

### [03_CNNの原型であるLeNet-5を用いて洋服の画像を分類するレシピ](https://axross-recipe.com/recipes/23)
投稿者：[@su2umaru](https://axross-recipe.com/users/304)さん
CNNの原型であるLeNet-5モデルを用いて、洋服の画像データを学習し、ジャケット、トップス、パンツ、スカートなど洋服カテゴリ別に分類します。

アパレル業界でのファッションコーディネート写真を自動分類する際に応用できます。

https://axross-recipe.com/recipes/23

### [04_CNNの代表的なモデルResNetを用いて手書きアルファベットを分類するレシピ](https://axross-recipe.com/recipes/24)
投稿者：[@su2umaru](https://axross-recipe.com/users/304)さん
CNNの代表的なモデルResNetを用いて、手書きのアルファベットを分類します。

アンケート回答用紙や申込用紙の手書き文字抽出（OCR）技術に応用できます。

https://axross-recipe.com/recipes/24

### [05_日本語BERTを利用してZero-shotで文書分類するレシピ](https://axross-recipe.com/recipes/320)
投稿者：[@睦広](https://axross-recipe.com/users/278)さん
教師データに存在しないラベルを予測する「Zero-shot Learning」という技術を用いて、日本語のテキスト分類を学べるレシピです。

テキストへの自動ラベル付けに活用できます。

https://axross-recipe.com/recipes/320

### [06_生産ラインを想定した画像異常検知の実践レシピ](https://axross-recipe.com/recipes/75)
投稿者：[@apple](https://axross-recipe.com/users/373)さん
TensorFlowとKerasを用いて構築されたオートエンコーダ、畳み込みオートエンコーダ、サーポートベクトルマシン（SVM）モデルを用いて、手書きアルファベット文字の画像データから異常検知分類を行います。

工場生産ラインでの製品製造過程における不良品の検知に応用できます。

https://axross-recipe.com/recipes/75

### [07_YOLOv5 と転移学習を使ってマスクの着用者と非着用者の顔検出を行うレシピ](https://axross-recipe.com/recipes/218)
投稿者：[@lulu1351](https://axross-recipe.com/users/2261)さん
コンピュータービジョンの「物体検知」の王道とも言える YOLO (You Look Only Once) シリーズの新モデル YOLOv5 を用いて、マスクの着用者と非着用者の顔画像分類を行うレシピです。

マスク着用者・未着用者の顔検出、顔認識、人体検知、モニター監視や自動運転の物体検出等に活用できます。

https://axross-recipe.com/recipes/218

## 教師あり学習（回帰）
### [08_RFM分析、分散分析、ロジスティック回帰分析による顧客管理レシピ](https://axross-recipe.com/recipes/334)
投稿者：[@小林 猛](https://axross-recipe.com/users/2359)さん
顧客の送品購買データを学習し、RFM分析、分散分析、ロジスティック回帰分析といった様々な統計分析手法から、顧客シェアや顧客ロイヤルティの拡大の指標の改善に向けた数値データの分析を行います。

ミクロ視点でロイヤルティの高い顧客へ効果的なマーケティングを行う際に活用できます。

https://axross-recipe.com/recipes/334

### [09_サポートベクトルマシンを用いた回帰分析の方法と実演レシピ](https://axross-recipe.com/recipes/44)
投稿者：[@Jolibee](https://axross-recipe.com/users/372)さん
ボストンの地価データを可視化、学習し、サポートベクトルマシン（SVM）、多次元回帰分析を用いた回帰モデルでどのような変数が地価データに影響するか傾向を予測します。

https://axross-recipe.com/recipes/44

### [10_営業の成約率を予測する機械学習モデルのレシピ](https://axross-recipe.com/recipes/76)
投稿者：[@belltree](https://axross-recipe.com/users/412)さん
銀行営業データセット(Bank Marketing Dataset)を学習し、ロジスティック回帰モデルを用いて、成約率が高い営業の傾向を予測します。

営業の際の成約率予測に活用できます。

https://axross-recipe.com/recipes/76

### [11_コワーキングスペース来館者予測モデルの構築レシピ](https://axross-recipe.com/recipes/89)
投稿者：[@Jolibee](https://axross-recipe.com/users/372)さん
コワーキングスペースの過去半年分のデータを学習し、XGBRegressorアルゴリズムを用いて、コワーキングスペースの未来の来場者を予測するモデルを構築します。

公共施設やイベントの入館者数予測や小売店や飲食店の来店者予測を行うことで、効果的なマーケティング・広告宣伝に活用できます。

https://axross-recipe.com/recipes/89

### [12_RNNをつかった実店舗の売上を予測するレシピ](https://axross-recipe.com/recipes/189)
投稿者：[@manami](https://axross-recipe.com/users/1452)さん
実店舗のPOSデータを、scikit-learnやkerasを用いて、機械学習のRNNモデルで学習し、未来の実店舗の商品売上を予測します。

飲食店や専門店など、実店舗の売上予測に活用できます。

https://axross-recipe.com/recipes/189

### [13_Transformer による長期時系列予測するレシピ](https://axross-recipe.com/recipes/230)
投稿者：[@lulu1351](https://axross-recipe.com/users/2261)さん
変圧器の油温データを用いて、Transformerモデルで学習し、未来の変圧器の油温を予測します。

新規事業の展開や製品の開発・販売、エネルギーの需要予測に活用できます。

https://axross-recipe.com/recipes/230

### [14_Pythonを使ったクラスター分析による市場セグメンテーションレシピ](https://axross-recipe.com/recipes/271)
投稿者：[@小林 猛](https://axross-recipe.com/users/2359)さん
パン市場における10種類の製品の「ブランド力」「商品価値と価格のバランス」「利便性」「商品コンセプト」「リピート購入率」「パッケージ」「素材・製法」「広告」の得点のデータセットを学習し、クラスター分析を用いて、市場セグメンテーション（細分化）を行います。

ターゲットにすべき消費者像や適切なポジショニングを設計する際に活用できます。

https://axross-recipe.com/recipes/271

### [15_日経33業種の株価増減率をクラスタリング分析し、日経平均株価と連動する業種を見つけるモデル作成レシピ](https://axross-recipe.com/recipes/96)
投稿者：[@belltree](https://axross-recipe.com/users/412)さん
日経33業種平均株価データから株価増減率を学習し、主成分分析を用いたクラスタリングにより、日経平均株価と連動する業種を予測します。

時系列データの傾向分析に応用できます。

https://axross-recipe.com/recipes/96

## 教師なし学習
### [16_GPT-3のNLPアプリケーション開発を体験してみるレシピ](https://axross-recipe.com/recipes/209)
投稿者：[@sb-toukou](https://axross-recipe.com/users/1542)さん
自然言語処理の研究者・開発者に留まらない広い範囲に大きなインパクトを持って紹介された言語モデル「GPT-3」について、実際にGPT3を用いたアプリケーションを作りながら、その性能を体験します。

文章生成機能や文書変換機能など、実験的なNLPアプリケーションや機能の開発に活用できます。

https://axross-recipe.com/recipes/209

### [17_ワインのアルコール度数を予測するレシピ](https://axross-recipe.com/recipes/4)
投稿者：[@Taka](https://axross-recipe.com/users/6)さん

ワインのデータを用いたアルコール度数の予測をテーマに、スタッキングやグリッドサーチによるモデル汎化性能を高める実装を行います。sklearnのPipelineを利用したデータリークの防止法やGrid Searchを利用したハイパーパラメータのチューニング法が学べます。

スタッキングやグリッドサーチによりモデルの汎化性能の改善やデータリークを起こさない実装に活用できます。

https://axross-recipe.com/recipes/4


### [18_ユーザのTweet傾向をクラスタ分析するレシピ](https://axross-recipe.com/recipes/5)
投稿者：[@uehara7](https://axross-recipe.com/users/3)さん
Twitter API を利用して、Twitterユーザーのツイート情報を取得し、ツイートのテキストをクラスタリングすることで、ユーザーをいくつかの種類に分類（グルーピング）します。

顧客情報の分析、ソーシャルネットワーク上の繋がりのグルーピングや服のサイズの決定に活用できます。

https://axross-recipe.com/recipes/5


### [19_Talk-to-Editを用いた表情編集レシピ ～パラメータによる表情編集～](https://axross-recipe.com/recipes/311)
投稿者：[@su2umaru](https://axross-recipe.com/users/304)さん
ICCV2021に採択された画像処理モデルTalk-to-Editを活用して、表情編集の結果を調整しやすいパラメータによる顔画像の表情加工を行います。

ベストな画像がないときにTalk-to-Editを用いた表情編集で加工する際に活用できます。

https://axross-recipe.com/recipes/311


### [20_StyleGANで本物と区別がつかない画像を生成するレシピ](https://axross-recipe.com/recipes/316)
投稿者：[@shim tom](https://axross-recipe.com/users/5231)さん
公開されている学習済みの顔画像データセットを用いて、Style GANモデルによる本物と区別がつかない画像を生成を行います。

存在しない人物画像を生成することで、顔認識サンプルデータとして活用できます。また、著作権を気にすることなく、広告宣伝用に活用できます。

https://axross-recipe.com/recipes/316


### [21_材料の単語分散表現から知見を抽出するレシピ](https://axross-recipe.com/recipes/95)
投稿者：[@mi-212](https://axross-recipe.com/users/661)さん

マテリアルズ・インフォマティクスによる化学開発において、材料データの単語分散表現を学習したモデルmat2vecを用いて、材料の類似度から人間が予測しなかった新たな知見を抽出します。

材料の単語埋め込みベクトルから材料同士の類似度を検索する際に活用できます。

https://axross-recipe.com/recipes/95


### [22_深層学習モデルを活用し、画像から音楽を生成するレシピ](https://axross-recipe.com/recipes/257)
投稿者：[@Hinata Aoki](https://axross-recipe.com/users/738)さん
画像データを収集し、それぞれの画像に音楽（BGM）とテキストを割り振り、新しい画像に対して音楽を生成するモデルを構築します。

動画のBGMの自動作成や視覚障害者の方へのイメージの伝達の際に活用できます。

https://axross-recipe.com/recipes/257


### [23_PyTorchを活用し画像のキャプションを自動生成するレシピ](https://axross-recipe.com/recipes/114)
投稿者：[@kanikani](https://axross-recipe.com/users/670)さん
CNN（画像）をEncoder、LSTM（テキスト）をDecoderにし、Encoder-Decoderモデルを実装して、画像に何がどんな風に映っているかの説明文（キャプション）を自動生成します。

画像データのラベル付けや画像の下にキャプション（画像の説明文）を入れる場面に活用できます。

https://axross-recipe.com/recipes/114

## その他のケース（強化学習）
### [24_強化学習 QーLearningを実装して宝探しロボットを構築するレシピ](https://axross-recipe.com/recipes/36)
投稿者：[@Jolibee](https://axross-recipe.com/users/372)さん
強化学習アルゴリズムの一つである「Q-Learning」を用いて、ロボットが試行錯誤を繰り返しながら宝を探す仕組み「宝探しロボット」を構築します。

ボードゲームや自動運転、産業ロボットの制御などに活用できます。

https://axross-recipe.com/recipes/36

# 最後に

今回は、Axrossで学べる**基本的な機械学習手法を事例から学べるレシピ紹介** をご紹介しました。

プログラミングは「**習うより慣れろ、繰り返し演習すること**」が重要です。

Axrossのレシピを通して、プログラムの意味を考えながら写経（コードを実際に書き写す行為）し、実際に動くものをつくりながら学ぶことで、新たな知識の習得やスキルアップの一助になれれば幸いです。