データサイエンスに関する様々な情報を提供するメディアであるTowards Data Scienceで「データサイエンス教育の問題点」に関する面白い記事があったので、今日はそちらを紹介したいと思います。
以下、要約。
最初の問題は「データ・クリーニング」です。良いデータがなければ、効果的な予測モデルは作成できない点において、データ・クリーニングは機械学習のタスクの中でも最も重要な部分です。
多くの機械学習のコースは、学生が様々な機械学習や、ときにはニューラルネットワークのモデルを構築できるように設計されています。
こういったコースでは、「整った」データを与えられますが、「整った」データが用意されていることは現実的とは言えません。
なぜなら、現実の世界では、データは汚く、醜く、データサイエンティストにとって扱いやすいものではないからです。
実際のところ、データサイエンティストがデータの準備に費やす時間は全体の約80%で、実際に分析を行う時間は全体の20%以下と言われています。
データサイエンティストがデータの準備に多くの時間を費やすということは、あまり受け入れられていませんが、むしろ、それを受け入れて得意になるべきでしょう。
そのためには、学外での作業も必要です。自分自身のプロジェクトを進めることは良いことですが、そのためにも自分でデータを集めるべきなのです。
例えばKaggleはデータサイエンスのスキルを磨くのに最適なサイトの1つですが、データのクリーニングの練習には向いていません。
そこで、私はデータ・ラングリング(加工/整形)を含む非学術的なプロジェクトに参加することを薦めます。
例えば、以下のようなことをしてみください。
これはデータサイエンス教育の問題だけに限らず、データサイエンスや機械学習の分野全体における最大の問題とも言えます。
優れたデータサイエンティストは、自分たちのモデルを非技術系の人達に分かりやすく伝える能力を持つ必要があります。
これは、ビジネスの中で最も有益なモデルを提供するために不可欠なことです。
なお、ここで言っている「説明力」とはモデルがどのような予測をしたかを説明する力ではありません。
ではここで言う「説明力」とは一体何なのでしょうか。
大学でデータサイエンスの科目を専攻した場合、あなたはデータサイエンスの教授の授業を受け、その教授が作成した課題にクラスメートと一緒に取り組み、博士課程の教育実習生に課題を提出し、評価を受けることになります。
従って、学生は自分が構築したモデルや分析ついて、データサイエンティストではない人、ましてや技術者でない人に説明するように求められることは、一度もありません。
大企業に勤めていれば、このようなコミュニケーションは日常的に行われます。また複雑なモデルを構築し、その使い方を経営者やプロジェクトマネージャーに説明することは、構築したモデルを導入するために不可欠です。
しかし、残念ながら大学を卒業してから、初めてこういった「説明」をすることになる人も少なくありません。
一般的に人は変化を怖がるものなので、十分な説明なしに「最新の機械学習アプローチ」に切り替えることには軋轢が生じますが、モデルを説明する能力を持つことで、仕事の成果を高めることができ、より多くの人にアプローチできるようになります。
以下のいくつかのアイデアを提案します。
まとめると、自分で構築した予測モデルが、どのようにして、その予測に至ったかを説明できる必要はないと思いますが、構築したモデルの本質や、そのモデルがどのように現実世界に適合しているかどうかを、うまく説明できることは非常に重要と考えます。
「現実の世界」では、パソコンでは足りないほど大きなデータを扱うことがよくあります。
従って、私たちはサイズやボリュームの観点で、どのようにデータサイエンスのプロジェクトをスケールさせられるかを理解するべきです。
企業レベルで展開できるアプリケーションを構築するには、コードの書き方や利用できるリソースの使い方を知ることが重要です。
しかし、このような教育は学部レベルではほとんど行われていません。もちろん、ビッグデータやクラウドコンピューティングなど、特定のテクノロジーを取り上げる授業はあります。
しかし、これらの授業は、データサイエンスに特化したようなものではなく、概念をカバーするにとどまっています。
そういったクラスを受講することに価値がないと言いたいわけではありませんが、例えば、データサイエンティストにとって、Amazon Web Servicesを利用するために、その仕組みを完全に知ることが必要というわけではありません。
そこで、学校ではほとんど取り上げられることのないものの、ビジネスの世界では広く使われているいくつかの重要な技術をいくつか紹介します。
クラウドサービス: クラウドサービスは拡張性の高いプログラムを構築するために非常に重要なスキルです。
幸いなことに、AWS、Google Cloud、Microsoft Azureは、無料で試せるサービスを提供しています。
AWS、Google Cloud、Microsoft Azureのいずれかにアカウントを作成し、そのサービスについて学び始めましょう。
ビッグデータ:多くのクラウドサービスはビッグデータの保存サービスを持っています。これらのサービスの利用を検討する価値があります。
例えばビッグデータのストレージに特化したSplunkは、多くの大企業がビッグデータ・ソリューションに利用されており、ぜひ、そういったサービスの利用を検討してみてください。
コンテナ化:次にDockerコンテナについて説明します。簡単に言うと、Dockerコンテナを使うと、「プロジェクトをパッケージ化」できます。
プロジェクトを実行するために必要なさまざまな依存関係をすべて取り込み、コンテナにまとめます。
これにより、どこでも簡単にプロジェクトを実行できるようになります。Dockerコンテナは、企業レベルでアプリケーションをデプロイするために広く使われている技術なので、その使い方を学ぶことはとても重要です。
以上、要訳終わり。
本日はデータサイエンス教育の3つの問題点に関する記事を紹介させていただきました。
本文では、「データ・クリーニング」、「説明力」、「スケーラビリティ」という3つのポイントを「データサイエンス教育」の問題点にあげており、その着眼点について、疑う余地もありません。
ただし、それよりも大きな問題として、データサイエンスを学ぶにあたっては、プログラミングをすることを前提にしているために、プログラミング自体を学ぶハードルがある、ということもあるかもしれません。
Exploratoryを使って、文系理系問わず幅広くデータサイエンスの教育を始められている先生方をお招きし、現場での取り組みや課題などといったお話をしていただく予定です。
これからデータサイエンス教育プログラムを作っていこうとされている方、また、すでに始められている方にとっても、他の学校の現場での経験から多くのヒントが得られるのではないかと思っております。
ご興味ある方はぜひご参加ください!