クラシフィケーションツリーを自分がどう書いているのか手順を追って説明します
どうも、あと1週間ちょっとで新卒一年目の肩書きを剥奪されてしまうhalspringです。
好き勝手に無責任なことを言える免罪符ともお別れです。切ない。
さて、執筆現時点で3月27日、28日にJaSST’19 Tokyoがすぐ目の前に迫っています。初のJaSST参加でドキドキワクワク過ぎてテカテカしてます。
こんなニッチな記事を読んでいる方達であれば申し込んでいる方も多いかと思います。
そして 申し込んだ方なら同じことを感じたと思います。
はい、そうですね、申し込みのパターンでクラシフィケーションツリーを書きたくなりましたね。
では早速ツリーを書いていきましょう。
どう考えてツリーを書いているのか なるべく思考の痕跡を残そうと思います。(途中で疲れていると思いますが どうか温かい目で...)
今回はツリーを作成するまでを中心に綴りますので テストケースの作り方については以前の記事や、 その記事で引用している井芹さんのスライドをご参照ください。
書いたことのない方は はじめに仕様だけ洗い出したセクションがありますので、是非一度ご自身でツリーを書いてみて比較して頂けると より一層お楽しみいただけるかもしれません。おそらくmaybe多分きっとあるいは。
あらかじめお断りしておきますが、
クラシフィケーションツリー法に関して論文を読んだり どこかで基礎からしっかりと学んだわけではないので、書き方や考え方に誤り(よく言えば我流)が含まれている恐れがあります。
この記事を鵜呑みにしてスタンダードだとは思わず、あくまで取っ掛かりとして頂ければ幸いです。
また、クラシフィケーションとたくさん書いてあると可読性が低下するかなと思ったので、因子という言葉とクラシフィケーションが混在していますが 目をつぶっていただければと思います。
最後に、明らかに誤っているところがあればご指摘いただければと思います。
(「大丈夫、あってるよ!」とか「参考になった!」などと言われると喜び悶えますのでそちらもよろしくどうぞ)
仕様把握
JaSST Tokyoの申し込みページから仕様を吸い上げます。
- チケットには参加券、チュートリアル券、情報交換会の券がある
- 参加券は27日、28日、2日券がある
- いずれの参加券も事前申し込みすることで安くなる
- 2日券の事前申し込みにはさらに早割が存在する
- チュートリアル、情報交換会のみのチケット購入はできない
- チュートリアルは27日の前半にセッションでは1,2、後半にセッション3,4があり、28日にセッション5がある
- チュートリアルのセッションは時間帯の被るものは同時に申し込みできない
- チュートリアル券も事前申し込みで安くなる
- ただし、チュートリアルのセッション5の料金は変わらない
- 情報交換会は事前申し込みでも当日券でも料金は変わらない
こんな感じですかね。
学生の招待制度については申し込みのフローが異なるため、ここでは考えないものとします。
それでは書いていきます。
クラシフィケーションツリーを書いてみる
ドメイン
書き方に王道や正解があるのかわかりませんが、自分は根っこから書いていきます。
今回考えるのはJaSSTの申し込みなので、そのまま書きます。
前回の記事でも書きましたが、せっかくsurface proとペンを買ったので活用しないといけない衝動に駆られているため手書きです。
ドメイン→クラシフィケーション
申し込めるものは、
- 参加券
- チュートリアル券
- 情報交換会
になります。
そして、参加券こそ買う必要があるものの、チュートリアル券と情報交換会に関しては任意の購入になりますので、直交しています。
つまり、ドメインからクラシフィケーションが3つ伸ばせます。
参加券
では、購入が必須 かつ 一番複雑な参加券から考えていきます。
参加券には1日券と2日券があります。
ですので、参加券のクラシフィケーションから「1日券」「2日券」のクラスを伸ばします。
そして、1日券、2日券のどちらも、より詳細な購入方法の選択があります。
- 27日の参加で事前購入
- 27日の参加で当日券
- 28日の参加で事前購入
- 28日の参加で当日券
- 27日、28日の2日参加で早割
- 27日、28日の2日参加で事前購入
- 27日、28日の2日参加で当日券
ここで、各参加券に共通する「購入のタイミング」という因子の候補が出現しました。
枝を伸ばす前にこの「購入のタイミング」を考えてます。
まず、この「購入のタイミング」という因子がどれほど他に影響を与えるのか。
出現したタイミングだけを見ても、「参加券」の末端に位置するであろう 上記の7つのクラス候補を下記の4つに減らすことができそうです。
- 27日
- 28日
- 2日早割 有
- 2日早割 無
「購入のタイミング」自体は { 事前, 当日} の2クラスで済みそうなので、合計して見ても末端となるであろうクラスを1つ削減できるため、採用しても良い感じがします。
さて、「購入のタイミング」は他にも影響を与えるでしょうか。
仕様を見返すと、
- チュートリアル券も事前申し込みで安くなる
とありますので、この因子を足すことでチュートリアル券のクラスも減らすことができそうですね。
そして、情報交換会には影響を与えないのでドメインから伸ばすクラシフィケーションとして採用して良いと言えます。
悪い影響を与えないことも採用するかどうかの判断に使います。
(この辺はうまく言語化できないのですが、ツリーを複雑にするくらいなら少しの冗長は妥協したほうが見やすくなると思ってます。)
チュートリアル
次に「チュートリアル」です。
チュートリアルは1~5まで存在し そのうち4つは27日に開催され、さらに前半・後半でわかれています。
(スペースが足らなそうなのでずらします。これがデジタルのいいところですね。)
ここにチュートリアル5を追加したいです。
1~4と5を隔てているのは日付です。27日・28日で価格も変わりますので、もう一段大きいところに「日付」のクラシフィケーションを作るとちょうどよさそうです。
情報交換会
あとは「情報交換会」に参加するかしないかのクラスを作ればツリーの出来上がりです。
情報交換会は事前購入でも当日でも料金が変わらないので、そういった情報は頭の片隅に置いておくか、近くにメモしておくと良いです。
完成!!
完成したクラシフィケーションツリーがこちらです。
いいですね、かわいいですね。
あとはこのツリーからテストケースを作成していきます。
このツリーで料金を大きく変える因子は「購入日」で、「購入日」の影響を受ける因子は「参加券」と「チュートリアル」です。
また、「参加券」と「チュートリアル」には禁則が多く存在するため、この辺りからテストケースを作っていき 残りの因子は網羅基準を満たすように配置してください。
網羅基準を満たした後は「テストの手間が増えるので "なし" を選択する」「処理が複雑で心配なので入念に」など、定めたアプローチや設計者・ステークホルダーの考えで選択してください。
いかがでしょうか、これで少しでもクラシフィケーションツリーが書けそうな気がして頂ければ幸いです。
クラシフィケーションツリーを書くのは楽しいですが、どんな場面にでも適応できるわけではないので、頭の片隅でその存在を覚えておいて ここぞのタイミングで思い出してあげてください。
きっとツリーも喜びます。
それでは、よい Classification Tree Method Life を。