目的に応じた Python と R の使い分け

中別府大地

Python と R どちらがお好きですか?

こんにちは、キカガクの中別府です。
普段は AI エンジニアとして、業務委託開発案件やコンサルティング事業を担当しています。
また、東北大学大学院医学系研究科非常勤講師として AI に関する学習コンテンツの提供、高知大学特任講師として、DX / AI に関する授業の作成・実施、AI 研究に関するゼミの運営を行っています。

本稿では、データサイエンティストを目指して学習を始めた方を対象として Python と R の使い分けを紹介します。
あくまで個人的な意見となる点にご留意いただき、今後の参考となれば幸いです。

データサイエンティストに求められるスキル

データサイエンティストに求められるスキルは「一般社団法人データサイエンティスト協会」が以下のように定義しています。
データサイエンティストに求められるスキル
出典:データサイエンティスト協会

データサイエンティスト(特にデータサイエンス力)にはデータ分析AI・機械学習モデリングのスキルが求められています。

データ分析 / AI・機械学習 の目的

Digital Transformation (DX) の推進が求められる現代において、データを活用する目的は次の 2 つに分けられると考えます。

  1. データをもとに施策の効果検証や新施策を立案したり、意思決定を行いたい
  2. データをもとに未来を予測し、業務の自動化・効率化を行いたい

上記 2 つを実現するために何が重要か

  1. 統計学の理論にもとづいてデータを仮説・検証することが必要
    => データ分析がメイン
  2. 数理モデルを用いて過去のデータから未来を予測することが必要
    => AI・機械学習のモデル開発がメイン

となります。

プログラミング言語 Python と R の使い分けとしては

  1. データ分析(統計分析):R
  2. AI・機械学習モデリング:Python

をおすすめします。

Python と R それぞれの強み(両者を比較して)

Python の強み(R と比較して)

  • AI システムや Web アプリケーション、IoT 機器・クラウド等と相性が良い
  • 機械学習(特に深層学習)モデルが構築しやすい

R の強み(Python と比較して)

  • 統計学の理論に基づいた結果を算出しやすい(例:信頼区間、p 値など)
  • (※個人的に)可視化されるグラフがシンプルで美しい

Python と R の使い分けのイメージ

2 つのケースで Python と R について紹介します。
機械学習ライブラリ scikit-learn に用意されている California Housing dataset データを使用します。(※データの詳細については割愛させていただきます。)

前述した「データ分析 / AI・機械学習 の目的」をもとに目的を設定すると

  1. カリフォルニア州の住宅価格を高精度で予測したい
    => 重視すべきはモデルの予測精度 (Python)
  2. カリフォルニア州の住宅価格に影響する要因を見つけたい(説明したい)
    => 重視すべきはデータに基づく統計学的な根拠 (R)

となります。

ケース 1:カリフォルニア州の住宅価格を高精度で予測したい

このケースは予測精度の高い機械学習モデルの構築を目指すため、深層学習を含む様々なアルゴリズムを実装しやすい Python がおすすめです。
以下は PyCaret を用いて、モデリングを行った結果です。

pycaret_result

各アルゴリズムによるモデルの予測精度を比較したり、交差検証を行いモデルの汎化性能を確認したり、
cv_result

モデルのハイパーパラメータのチューニング、データの特徴量エンジニアリングを行いながら予測精度の高いモデルの構築を目指します。

ケース 2:カリフォルニア州の住宅価格に影響する要因を見つけたい(説明したい)

このケースは、要因を明らかにするため(目的変数に対して影響度の高い変数を調べるなど)に統計モデルを活用します。そのため R を使用するのがおすすめです。
※ Python でも統計モデルを扱える statsmodels を使用することにより、詳細の解析結果を確認することも可能です。

以下は R による重回帰分析の結果です。
r_result

詳細の結果の見方は割愛しますが、着目すべきは標準偏回帰係数p 値になります。

また、変数間の多重共線性を検出したり、
r_vif

ステップワイズ法を用いた変数選択を行ったりします。
r_step

R を扱う場合は、未知のデータに対する汎化性能ではなく、分析結果から導き出される情報を重視します。

まとめ

  • Python
    • AI システムや Web アプリケーション、IoT 機器・クラウド等との相性が良い
    • 機械学習(特に深層学習)モデルが構築しやすい
  • R
    • 統計学の理論に基づいた結果を得やすい

Python と R それぞれを上手く使い分けできるとデータサイエンティストとしての幅が広がる

おまけ

個人的に R で出力できるグラフはシンプルで美しいと思いますので紹介します。

Python のグラフ

ヒストグラム
python_hist
相関係数のヒートマップ
python_corr

R のグラフ

ヒストグラム
r_hist
相関係数のヒートマップ
r_corr
決定木
r_rpart

こちらの記事もオススメ

まずは無料で学びたい方・最速で学びたい方へ

まずは無料で学びたい方: Python&機械学習入門コースがおすすめ

Python&機械学習入門コース

AI・機械学習を学び始めるならまずはここから!経産省の Web サイトでも紹介されているわかりやすいと評判の Python&機械学習入門コースが無料で受けられます!
さらにステップアップした脱ブラックボックスコースや、IT パスポートをはじめとした資格取得を目指すコースもなんと無料です!

無料で学ぶ

最速で学びたい方:キカガクの長期コースがおすすめ

一生学び放題

続々と転職・キャリアアップに成功中!受講生ファーストのサポートが人気のポイントです!

AI・機械学習・データサイエンスといえばキカガク!
非常に需要が高まっている最先端スキルを「今のうちに」習得しませんか?

無料説明会を週 2 開催しています。毎月受講生の定員がございますので確認はお早めに!

説明会ではこんなことをお話します!
  • 国も企業も育成に力を入れている先端 IT 人材とは
  • キカガクの研修実績
  • 長期コースでの学び方、できるようになること
  • 料金・給付金について
  • 質疑応答