Technically Impossible

Lets look at the weak link in your statement. Anything "Technically Impossible" basically means we haven't figured out how yet.

42 SILICON VALLEY Piscine 2017 Day02を考える 私なりのアプローチ。

先日投稿した42に関する投稿が、このブログにしてはアクセスを稼いでいる。その投稿の内容よりも、42の話題性、その関心に起因するものだろう。

42 SILICON VALLEY Piscine 2017資料を読み解く 印象、考察、そして余談。 - Technically Impossible
42 SILICON VALLEY Piscine 2017プロジェクト資料を読み解く 印象、考察、そして余談。 - Technically Impossible

学期末で、些か暇を持て余している。せっかくPiscine受講者の方々がアクセスしてくれているのだから、先日の投稿に加えて、何か「お持ち帰り」感のある情報を提供できないだろうか、と考えた。

Piscineの特性を考えると、公開されている課題について、そのプログラムを示しても有意義ではないだろう。ダミー・コードが含まれている場合もあるとはいえ、コードはGitHubに公開されている。何よりPeer learningを伴うため、コードだけを見たところで、受講者が自分自身でそのロジックを説明できなければ意味がない。
Peer learnngのパートナーはランダムに選別されるのだという。課題を理解している者が、理解していない者へ教えるという構図が常に成り立つとは限らない。課題を理解していないものが、理解している者へ教える場面もあり得るのだ。そのような場面で、いきなりプログラムを提示することなど無理だろう。むしろ課題を解くための考え方、アプローチを示すことを求められているのではないだろうか。

受講者の中には、C言語そのものよりも、プログラミング自体についての初学者もいるようだ。課題の回答に通じるプログラムを直接的に示すよりも、課題を題材にして、ロジックを見出す考え方、解法に至るアプローチを伝えることの方が、プログラム自体を示すよりも汎用的で有用ではないかと考えた。

ここでは42SV、2017年PiscineのDay02の課題を題材に、私なりのアプローチを説明してみようと思う。対象の課題はExercise 04~07(06は除外)だ。特に次の事柄を伝えることに焦点を絞った。

  1. 力技による真正面からの正攻法でも良いが、より効率的なアプローチを見出すこと。
  2. Piscineの課題には関連があり、後に続く課題を解くには、前の課題のアプローチが応用できること。

この投稿がPiscine受講生の一助になれば、と思う。
間違っていたらゴメン。

  • Exercise 04
  • Exercise 05
    • 懸念事項
  • Exercise 07
  • 余談-力技のトレードオフ
  • 参照
続きを読む

42 SILICON VALLEY Piscine 2017プロジェクト資料を読み解く 印象、考察、そして余談。

先日の投稿では42 Silicon valleyの2017年度Piscine資料を読み解いた。この資料は14日分の課題で構成されているのだが、Piscineは4週間開催される。残り2週間、あるいは14日の課題と並行して、志願者は複数のプロジェクトに参加する必要がある。参照資料に基づくならば、

  • 3つの個人プロジェクト
  • 3つのグループ・プロジェクト
  • 最終プロジェクト

今回は、これらプロジェクトの資料を元に、印象的だった部分を紹介する。

ちなみに、ここで紹介する情報が東京校のPiscineに通用する保証はなく、内容の正しさを保証するものでもないことを申し添えておく。
関連サイトのハイパーリンクは投稿末尾にまとめている。

  • 個人プロジェクト
  • グループ・プロジェクト
  • 最終プロジェクト
  • 余談
  • 参照
続きを読む

数式なしのクラスター分析-Rでの最適なクラスタ数の予測から分析までの手順

何らかの形でデータを分類しなければならないとしよう。例えばドラクエのようなRPGに登場するモンスターをタイプごとに分類するならば、

  • HP、MP
  • ゴールド
  • 経験値
  • つよさ、すばやさ

などなど。どのような項目、特徴で分類されるのか、最終的に何種類に分類されるのか定かではないデータを、何らかの形で分類する方法の一つがクラスター分析だ。

クラスター分析は機械学習で言うところの、教師なし学習に相当する。何らかの特徴を見出し、その特徴に基づいて分類していく。何通りのクラスターに分類されるのかは予想できないが、見当をつけることはできる。

この投稿では最適なクラスター数の特定から、クラスター分析結果の検討まで、Rを用いた一連の手順を紹介する。分析対象データはRに含まれているものを用いるので、RStudioだけで手順を再現することができる。ここでは次の環境を用いている。

  • R 3.6.1
  • RStudio 1.2.5001

ちなみに現時点でのR、最新版は3.6.2だ。RStudioと共に参照先は、この投稿末尾にまとめている。

  • 豆知識
    • エルボー法
    • シルエット分析法
    • ギャップ統計法
  • ライブラリとデータの準備
  • 最適なクラスタ数の特定
  • クラスター分析
    • k = 2の場合
    • k = 6の場合
    • k = 15の場合
  • 余談
  • 参照
  • コード全文
続きを読む