博士課程教育リーディングプログラム
実世界データ循環学リーダー人材養成プログラム

特別実践コース 入門編「Data Tools First」

科目について

MATLAB
データ解析、可視化、プログラミング可能な数値解析ソフトウェアです。
MATLABの基本文法や、画像処理などの方法を習得します。詳細を読む
様々な問題を数式を用いてモデル化し、計算機によって解を求める数値解析は、気象予報、自動車の衝突シミュレーション、ロケットの軌道の計算など、様々な分野で使用されています。
「MATLAB」は、Mathworks社の数値解析ソフトウェアです。数値解析を対話的に行うことができます。ベクトルや行列を簡単に扱えること、1000以上の関数が用意されていること、容易に可視化(プロット)できるなどの利点があります。また、独自言語によるアプリケーションの開発も可能です。
プロプライエタリな製品ではありますが、機能が豊富で研究用途にも適していることから、世界中で広く使用されています。
本講義では、まずMATLABの基本的な操作と文法について学んだ後、可視化、補間や方程式などの様々な機能について学びます。演習では、簡単なアルゴリズムの実装や画像処理を行います。最後に、モデリングツール「Simulink」を使ってブロック線図を作成する方法も紹介します。
R
統計解析向けのプログラミング言語とその開発実行環境です。
プログラミングの基礎、回帰分析を行う方法を習得します。詳細を読む
閲覧・購入履歴から売上を予測したり、関連がないと思われていた商品間の相関関係を見つけるなど、統計解析が一般企業などで必要とされるケースが、年々増えてきています。企業には様々なデータが蓄積されており、それらを有効活用するため、今後ますます統計解析が必要になってくると考えられます。
「R」は、オープンソースの統計解析向けプログラミング言語および開発環境です。「CRAN(The Comprehensive R Archive Network)」により公開されているパッケージを追加して、機能を増やすことができます。
さらに、GUIによる操作が可能になる「Rコマンダー(Rcmdr)」や、統合開発環境「RStudio」を介して、Rを使用することも可能です。
本講義では、まず、データ分析の概要について説明します。次に、百貨店の購買データを分析して売上向上の対策アイデアを考える、というケースを通じて、Rのデータ型や構造、読み込み、整形、プログラミングなどの方法を学びます。さらに、Rstudioを使って、来店頻度や客単価で分析し、顧客のクラスタリングを行う演習を実施します。
SAS
プログラミング可能な統計分析ソフトウェアです。
データ分析の基本的な手順、プログラミングを習得します。詳細を読む
「SAS」は、研究機関、医療系、金融機関、流通業など様々な業種で広く使用されている、SAS Institute社の統計解析ソフトウェアです。
Microsoft ExcelファイルやHTMLなど様々な形式のデータに対応していること、分析フロー全体(データの整理および加工から、分析、レポートの作成まで)をカバーしていること、大量データを高速に処理できることなどの特長があります。
SASでは、基本的には、プログラミング環境「Base SAS」でプログラムを記述してデータ加工・分析を行います。それとは別に、プログラミングを行わず、GUIによる操作だけで一連の分析を行うことができるツール「SAS Enterprise Guide(EG)」もあります。
本講義では、Base SASとEGそれぞれの構成や基本的な使い方について学びます。その後、一般に公開されているExcelやHTML形式のデータを使って、Base SASとEGによる分析の演習を行います。さらに、関数や結合などを利用したデータの加工、独自ライブラリの作成方法などの応用も行います。
Hadoop
大規模データを分散処理するためのソフトウェア基盤です。
構成(MapReduce, HDFS)や操作手順、プログラミングを習得します。詳細を読む
大規模なデータを処理するには、コンピュータ内の複数のコアを用いて並列計算するよりも、複数のコンピュータで分散計算した方が効率的です。
そのため、ログの解析やデータマイニングなどを行う際には、分散処理がよく用いられます。また、分散計算の場合、いずれかのコンピュータに問題が発生しても、他のコンピュータが代わりに計算することができるため、耐故障性にも優れています。
「Apache Hadoop」は、分散処理を行うためのソフトウェア基盤です。
Apache Software Foundationが開発し、フリーソフトウェアとして公開されています。また、いくつかのベンダーが、Hadoopのディストリビューションを提供しています。数千のコンピュータ、ペタバイトクラスのデータを扱うことを想定しており、拡張性に優れています。そのため、検索サイトやSNS、通販サイトなど、多くの企業・組織でHadoopが利用されています。
本講義では、並列計算と分散計算の基礎を学んだ上で、Hadoopの概要や構成(分散ファイルシステムHDFSとMapReduce)を学びます。演習では、実際の環境を使って、コマンドの操作、Javaプログラムによる分散処理、SequenceFileの操作などを行います。また、ジョブやHDFSの管理をWebから行う方法についても触れます。
SQL
データベースの操作を行うための言語です。
MySQLを使用して、SQLの基礎を習得します。詳細を読む
データを整理統合して格納し、データの検索など再利用を容易にするデータベースを用いると、情報の集約化・効率化を図ることができます。
コンピュータ上でデータベースを構築・管理するDBMS(Data Base Management System)は、検索エンジン、顧客データ、POSシステムなど、あらゆるところで広く使用されています。
データベースを用いてデータを操作する際には、「SQL」という専門の言語が用いられます。ベンダごとにコマンドを拡張していることもありますが、ISOで標準化されていることもあり、基本的なコマンドとその使い方は、どのデータベースを利用した場合でも、ほぼ同じです。
本講義では、オープンソースのデータベースとして普及している「MySQL」を使用して、SQLの基本を習得します。具体的には、テーブルの作成と削除、データの検索、挿入、更新および削除、テーブルの結合、副問合せ、制約について学びます。さらに、データを効率よく格納するため、テーブルを適切に分割する際に必要となる正規化も、最後に取り上げます。
Mahout
Hadoopによる分散処理に対応した機械学習ライブラリです。
レコメンデーション、クラスタリングおよび分類を行う方法を習得します。詳細を読む
現代社会で収集・蓄積された情報を、機械学習によってコンピュータに分析・判断させると、今まで気づかなかった相関を見出したり、分類や検出を行わせることができるようになります。たとえば、車の自動運転や株価予測、スパムメールの検出などに、機械学習が用いられています。
「Apache Mahout」は、Apache Software Foundationが開発している、オープンソースの機械学習ライブラリです。Javaで実装されているため、Javaのプログラムから利用しますが、コマンドだけで機械学習を行うことも可能です。
また、Mahoutでは、分散処理のソフトウェア基盤「Hadoop」を使って、大量のデータを分散計算させることもできます。
Mahoutには様々な機械学習のアルゴリズムが実装されています。これらをすべて取り扱うことは難しいため、本講義では、レコメンデーション、クラスタリングおよび分類を取り上げ、それぞれの概要と、代表的なアルゴリズム、使用方法について説明します。演習では、コマンドの実行、Javaによるプログラミング、Hadoopの利用を行います。
CUDA
GPUを汎用的に利用するための統合開発環境です。
グラフィックボードを使って、並列計算を行う方法を習得します。詳細を読む
グラフィックボードに搭載されているGPUは、計算能力の優れたコアを多数持っています。GPUを汎用計算に利用する(GPGPU)ことで、大規模な計算を高速に行うシステムを、比較的安価に構成することができます。
たとえば、HPC(High Performance Computing)の分野では、数十万コアのGPUを使用して、自動車のシミュレーションや、遺伝子配列の解析などを行っています。
「CUDA」は、NVIDIA社が無償で公開している、GPGPU計算のための並列計算プラットフォームおよびプログラミングモデルです。同社のグラフィックボードが必須ですが、個人のPCから大規模なHPCまで、規模や枚数に関係なく同じ方法で使用できることから、広く利用されています。
本講義では、CUDAを使用して、GPUによる並列計算の基礎を学びます。
まず、GPUのアーキテクチャおよびCUDAの概要について説明した後、CUDAを用いたプログラミングを実際に行います。CPUだけで計算した結果と比較することで、GPGPU計算の性能の高さを実際に体験することができます。
さらに、高速化の手法についてもいくつか取り上げます。
MPI
並列計算を行うための標準化された規格です。
複数のスパコンを使って、並列計算やホスト間通信を行う方法を習得します。詳細を読む
プロセッサ単体の性能向上の伸びが鈍化している中、多数のコアを並列に動作させる「メニーコア」や、汎用プロセッサによるノードを結合して並列動作させるHPC(High Performance Computing)クラスタなどが注目されています。これらを用いて膨大な演算を効率よく行うには、共通で利用できるソフトウェアが必要です。
「MPI(Message Passing Interface)」は、並列計算を行う際の、メッセージ通信APIの規格です。MPI forumによって規格化されているため、OSに依存せず、様々なプログラミング言語で利用することができます。理化学研究所の京をはじめ、世界中のスーパーコンピュータで使用されています。
本講義では、MPIを利用した並列プログラミングの基礎を学びます。まず、いくつかの並列計算用のプログラミング言語について学びます。そして、MPIの基礎を習得した後、情報基盤センターのスーパーコンピュータシステムを使った、MPIによる並列プログラミングの演習を行い、その手順を習得します。
ROS
ロボットのソフトウェアを開発するためのフレームワークです。
センサーを使ってSLAM(位置の推定と環境地図の作成)を行う方法を習得します。詳細を読む
近年、ロボットや自動運転などの研究開発が進み、実用化が進んでいます。
その際、多岐に渡る要素技術毎のシステムを、それぞれ用意して構築する必要があります。個々のシステムの構築だけでなく、システム間で連携させるための作業も必要であり、それらは研究開発を始める前段階の高いハードルとなっています。
「ROS」は、Willow Garage社が開発する、ロボットソフトウェア開発のためのオープンソースのソフトウェアフレームワークです。ハードウェア抽象化、低レベルデバイス制御、一般的な機能の実装、プロセス間通信、パッケージ管理などの機能を提供するメタ・オペレーティングシステムです。ROSを使用すると、統合的なロボット開発の環境を簡単に揃えることができます。
本講義では、ROSを使用して、ロボット研究を行うための基礎を学びます。
ROSの3つの概念、使用可能なソフトウェアおよびハードウェアの説明の後、演習を通じて、ROSの基本的な使い方を習得します。演習では、北陽社のレーザースキャナを用いてSLAMを行います。これにより、自己位置推定と環境地図作成を行うことができるようになります。
Stata
経済・社会・医療などで用いられる統計分析ソフトウェアです。
基本操作、回帰分析の実行、結果表示や図表の作成手順を習得します。
OpenCV
コンピュータビジョン用の画像処理ライブラリです。
カメラ画像の処理、オブジェクト検出などを行う方法を習得します。詳細を読む
近年、スマートフォンやタブレットをはじめ、様々な機器にカメラが搭載されるようになってきました。カメラで撮影した画像や動画は、そのまま利用するだけでなく、画像処理によって装飾したり、特徴を抽出して物体検出や追跡を行うなど、コンピュータビジョンの利用が進んでいます。
たとえば、最近のデジタルカメラには、個人の顔を認識してピントを合わせるなどの機能があります。自動車の自動ブレーキシステムでも、カメラ画像が重要な情報として使用されています。
「OpenCV」は、Willow Garage社が開発する、コンピュータビジョンを扱うための画像処理ライブラリです。画像処理や構造解析などが多数実装されているため、比較的簡単にコンピュータビジョン処理を行うことができます。また、画像の顔検出などのパターン認識、動画をリアルタイムで解析しモーション検知や物体追跡を行うことも可能です。
本講義では、OpenCVを使用して、コンピュータビジョン処理の基礎を学びます。まず、OpenCVの概要や、画像データの基本構造体について説明します。
その後、OpenCVを用いたカメラ画像の処理、分類器を用いた顔検出や、機械学習を用いたオブジェクト検出を行います。これらの演習を通じて、コンピュータビジョン処理を行うGUIアプリケーションを開発できるようになります。
OpenGL
グラフィックス処理を行うためのAPIです。
2次元および3次元の図形描画を行う方法を習得します。詳細を読む
「OpenGL」は、Windows、MacOSやLinuxなど多数のプラットフォームに対応した3次元CGのグラフィックスライブラリです。ハードウェアの機能を利用して高速に動作すること、3次元CGを比較的簡単に作成できることから、シミュレーション解析、CAD、ゲームやマルチメディアなど、様々な分野で幅広く使われています。最近では、組み込み用途向けの「OpenGL ES」というサブセットが、AndroidやiOSなどで使われるようになっています。
本講義では、OpenGLの概要、ウィンドウ、図形の描画、隠面処理、イベント処理、シェーディング、光源設定、テクスチャマッピングに関する基本的な関数の使い方を、演習を通して学びます。機能ごとに例題と演習が用意されているため、目的に応じた実装方法を習得することができます。
Linux
幅広い分野で多数使用されている、UNIX互換のOSです。
CentOSを使用して、基本(シェル、エディタ、ファイル転送など)を習得します。詳細を読む
「Linux」は、デスクトップだけでなく、組み込み機器からサーバやスーパーコンピュータに至るまで、幅広く使用されている、UNIX互換のOSです。多くのアプリケーションやライブラリ、開発ツールなどがLinuxに対応していること、それらの開発自体がLinux上で行われていることから、研究開発の分野では利用実績が多数あります。
Data Tools Firstの科目には、Linux上で動作するツールが多数あり、それらの講義はLinuxがある程度使えることを前提としています。そこで本講義では、シェルの概要と基本的なコマンド、エディタ(viおよびEmacs)、ファイル転送(ftp、sftpなど)およびリモートログイン(telnet、ssh)の使用方法について説明します。演習では、サーバでよく採用されている
Linuxディストリビューション「CentOS」を使います。そのため、演習を通じて習得した技術は、大半のLinuxシステムですぐに役立てることができます。
Android
スマートフォンやタブレット向けのOSです。
センサーを使ったAndroidアプリケーションの作成・実行方法を習得します。詳細を読む
「Android」は、スマートフォンやタブレットなどで広く使用されているOSです。Androidが搭載された機器には、GPSや温度、方位、加速度などのセンサが多数あり、Androidの標準APIでそれらの情報を取得することができます。この情報をデータとして利用したり、情報処理後の表示UIなどに利用することができます。
Android上で動作するアプリケーションは、一部の例外を除けば、Javaで作成できます。
本講義では、GPSと重力センサの情報を取得し、サーバに送信するAndroidアプリケーションを作成します。具体的には、開発環境「Android SDK」の構築および開発手順、アプリケーションの構造、センサAPIの使用方法、画面構成とUIのデザイン、データ保存、ネットワーク通信など、Androidアプリケーションの基礎を習得することができます。アプリケーションのデバッグの方法についても触れます。

« 特別入門コース Data Tools First トップへ戻る