データサイエンス入門

演習 I(2020年開講)3年生配当 必修科目

西南学院大学 経済学部 担当 市東亘

シラバス

  1. データサイエンスとは
  2. 講義内容
  3. 受講上の注意
  4. 評価方法
  5. 受講者選考方法
  6. 受講生へのメッセージ

データサイエンスとは

身の回りのあらゆる分野でデータ収集が行なわれている昨今,ビッグデータを用いたデータ分析が注目を集めています.本ゼミではデータサイエンスと呼ばれる新興の学問領域の中から,機械学習やAIに代表されるデータ分析手法を学びます.

データサイエンスの領域は人によって定義がまちまちですが,大きく以下の3つの分野に分けることができます.

  1. データベース操作と分散処理技術
  2. データ・ビジュアライゼーション(データ可視化)
  3. 統計的機械学習,AIなどの予測アルゴリズム

ここでは簡単に上記3分野を解説しましょう.

コンピュータで計算処理する場合,データとプログラムは実行時にハードディスクからメモリ上に読み込まれます.メモリは大きくても数十ギガバイトの大きさですがビッグデータはテラバイト級の大きさになります.こうした巨大データを使った計算では,データをメモリ上に一度に読み込めないので特殊なプログラミング技法が要求されます.これらを学ぶのが1つ目のデータベース操作と分散処理技術です.この分野の技術は日進月歩の勢いですぐに技術標準が変わってしまうのですが,今はScalaというプログラミング言語とSparkという分散処理技術を用いるのが優勢です.Java言語とHadoopという技術もよく使われます.

2番目のデータ・ビジュアライゼーションとは,膨大かつ複雑なデータを直感的に理解するために工夫を凝らしたグラフ作成技術です.見た目が美しくかつ複雑な情報を伝えるための工夫もさることながら,マウスの位置やクリックに応じて動的に表示情報を変化させるなど,インタアクティブ性も重視されます.この分野ではJavaScriptというプログラミング言語が主流です.JavaScript用のデータ可視化ツールであるD3.jsのグラフギャラリーや,データ可視化コンサル会社BrightPointのプロジェクトギャラリーを見てみてください.

3つ目の分野が今年の演習Iで学ぶ予測のためのデータ分析手法です.計量経済学で使う回帰分析やベイズ推定もデータサイエンスで用いられますが,データサイエンスで扱う予測アルゴリズム(コンピュータの計算手順)には,単純なものから統計学に基づくものまで多岐にわたります.皆さんも耳にしたことがあるディープラーニングやニューラルネットワークなどの人工知能(AI)も講義で扱います.この講義を通じて,人工知能としてもてはやされているニューラルネットワークも,その根幹は経済学で用いる回帰分析と何ら変わりがないことを発見するでしょう.もちろん,ニューラルネットワークにはこれまでの予測技術にはない巧妙な工夫が凝らされていて,回帰モデルを大量のデータに自動的に適合させてゆくアルゴリズムが追加されています.こうした手法が機械学習と呼ばれる所以です.本講義では,AI以外にも有効な様々な機械学習アルゴリズムを学びます.詳細は後ほど講義内容で説明します.

予測分析の分野で使用されるプログラミング言語で最もポピュラーなのはPythonとRです.実務界ではPythonが優勢ですが,高度な統計分析を伴う分析の場合,Rにも根強い人気があります.高速な計算が要求されるシビアなプロジェクトではScalaやC++も用いられます.

以上駆け足でデータサイエンスを紹介しましたが,これ以外にも高速な計算処理を実現するためのハードウェアの研究や,GPUというグラフィックボードに搭載されている行列計算が得意な計算プロセッサを活用した計算手法(C++が使われれます),IoTと呼ばれるハードウェア機器のコントロール方法やIoTからのデータ取得(主にC言語が使われます)など, 実に様々な技術分野が含まれます.データサイエンスは非常に奥の深い分野ですが,一人で全ての技術をマスターしている必要はなく,実務の世界でも分業体制が敷かれていることがほとんどです.

講義内容

データサイエンスのどの分野を学ぶにしてもプログラミングは必須となります.また,機械学習アルゴリズムを理解するためには数学と統計学の知識が必要になります(中には数学や統計学を必要としないアルゴリズムもあります).このゼミに応募する段階ではいずれの知識も要求しませんが,数学と統計学については別の講義で並行して学習するか,自習して習得してもらいます.プログラミングについてはゼミで指導します.数学と統計学については「受講上の注意」を参照してください.

ゼミではまず最初にR言語のプログラミングを学習します.Rは計量経済学の授業でも使っているようなので,この講義で学ぶ内容は計量経済学でも役立つでしょう.

データ分析を行うにはデータの取得とデータ整形(データクリーニング)を行うプログラムを自分で書ける必要があります.データが大きいと,Excel上のコピペ操作でデータの表形式を変更することはほぼ不可能になります.こうしたデータ整形をプログラミングで自動化する方法を最初に学びます.

データ取得のプログラミング技法については,1年間かけて各自で取り組むデータ分析論文のプロジェクトに即して,Webページのデータスクレイピング方法や,SQLデータベース操作法,RESTやGraphQLといったデータAPIを使ったデータ取得のためのプログラミング技法を解説します.

データ整形のプログラミングを学習した後は,いよいよメインテーマである機械学習アルゴリズムを学びます.本講義で扱うアルゴリズムは以下の通りです.

モデル 学習タスク
教師あり学習アルゴリズム
最近傍法分類
単純ベイズ分類
決定木分類
分類ルール学習器分類
線形回帰数値予測
回帰木数値予測
モデル木数値予測
ニューラルネットワーク分類と数値予測
サポートベクトルマシン 分類と数値予測
教師なし学習アルゴリズム
相関ルールパターン検出
k平均 クラスタリング
メタ学習アルゴリズム
バギング分類と数値予測
ブースティング分類と数値予測
ランダムフォレスト分類と数値予測

ここまでが演習Iで扱う内容です.2年目の演習IIでは,統計モデルを使って確率的予測を行うベイズ推定か,最初に紹介した別分野(分散処理技術やデータ可視化)の中から学習したいテーマを受講生に選択してもらいます.2019年の演習IIではベイズ推定を学んでいるので講義ページを見れば学習内容の雰囲気がつかめるでしょう.

受講上の注意

データ分析では線形代数(行列)と統計学の知識が必須となります.線形代数は私が担当している経済数学IIで基礎から応用まで教えているので,ゼミ受講生は必ず履修してください.

統計学は本学提供の統計学関連科目と計量経済学を必ず履修してください.授業でも適宜統計学の復習を行います.

経済学では原因と結果のメカニズムの解明に重きをおくため,データ分析では予測よりも因果関係の解明に重きをおきます.Amazonなどの巨大IT企業では多くの計量経済学者が国内外で雇用されていますが,こうした企業では予測だけでなく,なぜそのような予測が導かれるのかといった理由も要求されます.理由を説明するには事象の因果関係を明らかにする必要があります.巷で流行のデータサイエンスではないがしろにされつつある因果分析は計量経済学の得意とするところなので,是非並行してそちらの分析手法も習得してください.

評価方法

平常点,1年間かけて作成するデータ分析レポート,定期試験の総合評価です.基礎事項の知識が定着しているようであれば定期試験を行わないこともあります.

このゼミでは例年,遅刻・欠席は合わせて年間2回までというルールで行っています.

受講者選考方法

全員面談し,ゼミ生用のホームページの登録手続きを期限内に完了した学生の中から選考します.面談の日時は,選考期間中に演習申し込みページでお知らせします.期間中は掲示に注意していてください.ちなみに,このゼミは経済学科の学生を対象としたゼミです.

受講生へのメッセージ