‫美しい｡
‫さて､ これで環境が整ったので､ Jupyter Notebookを起動したり､ Jupyter Notebookサーバを起動したりしました｡
‫新しいJupiterノートブックを作成し､ コードを書き始めることができます｡
‫では､ それをロードしてみましょう｡
‫このウィンドウを最大化します｡
‫そこで､ ここに名前を付けます｡
‫シンプルでいいものを端から端までやる｡
‫End to Endの心疾患分類｡
‫そして､ 良いコミュニケーションスタイルで､ マークダウンされた見出しは､ 何か簡単なことを行くようになります｡
‫心臓病を予測する｡
‫機械学習を使って
‫そして､ ちょっとしたワンライナー｡
‫このノートでは､ 私たちのツールであるPythonベースの機械学習やデータサイエンスライブラリを用いて､
‫ある人が心臓病であるかどうかを医学的属性に基づいて予測する機械学習モデルを構築することを試みています｡
‫誰？
‫だから､ ワンライナー以上でしょう｡
‫それを少しは簡潔にできるかもしれませんが､ それは私たちの焦点ではありません｡
‫私たちの焦点は､ コードを書き､ それをここのフレームワークに適用することです｡
‫だから､ これをやり遂げたいのです｡
‫これが､ 私たちが始めていることです｡
‫本格的なエンド・トゥ・エンドの機械学習プロジェクトの範囲内で､ 学んだツールを機械学習のフレームワークに適用し始めています｡
‫ワクワク感を感じていただければと思います｡
‫では､ どのようにスタートすればいいのでしょうか｡
‫さて､ まず最初に私たちのアプローチの概要を説明するのがよいでしょう｡
‫次のようなアプローチで臨みます｡
‫そこで､ まずは問題定義です｡
‫冒頭のセリフで､ なんとなくやってみました｡
‫問題定義もデータで､ この問題を解決するためにどのようなデータを使うかを見ることになります｡
‫以前のビデオですでに見ていますが､ もう一度､ 完全性を期すために､ 少し概要を説明し､
‫ここを見てください｡
‫評価は､ 私たちにとって評価指標が何を意味するのかを手短に定義します｡
‫成功の定義は何ですか？
‫このプロジェクト､ 機械学習の概念実証を成功とするならば､ 機械学習を使って心臓病を予知することはできるのでしょうか？
‫評価指標として､ 必要最低限の機能として何が必要でしょうか？
‫そこで､ データのどの特徴に最も注目するか､ さらには､ どの特徴がモデルに最も貢献するか､
‫これがステップ5のモデリングです｡
‫そして､ 最後のステップ6が実験です｡
‫そして現実的には､ 全部が実験です｡
‫そこで､ まずはこの1枚から始めてみてはいかがでしょうか｡
‫また､ 経験豊富な方であれば､ そのままコードに飛び込んで､ 何をすればいいのかわかるかもしれません｡
‫しかし､ 私たちはまだ学習中で､ さまざまな問題にどうアプローチしていくかを考えている最中なので､
‫このフレームワークを設定し､ それぞれのステップでツールをどう使っていくかを考えています｡
‫そこで､ まず第一に問題定義に立ち返ろう｡
‫私たちは､ 誰かに伝えることができるような発言については､ すでに何でもしてきたようなものです｡
‫私たちの場合は､ 心臓病かそうでないかの二値分類を行っているわけです｡
‫だから､ クラスは2つしかないんです｡
‫分類とは､ あるものがあるものか別のものかを予測することだと覚えておいてください｡
‫だから､ ステートメントでは､ それをうまく引用して表現したいのです｡
‫では､ ある患者さんの臨床パラメータがあれば､ その人が心臓病かどうかを予測することができるのでしょうか？
‫素晴らしい｡
‫そして､ 2がデータです｡
‫心臓病のデータはすでにCSVファイルになっているので､ それをクリックするとロードされます｡
‫ここはかなり読みにくいです｡
‫ということで､ 早速pandasのデータフレームを使ってインポートしてみます｡
‫しかし､ ここでUCIに行き､ 心臓病のデータセットを見てみると｡
‫ここからがアバウトで､ これがステップ2､ ちなみにデータです｡
‫ここで､ 実際にどのようなデータを使っているのか､ 少しづつわかってきました｡
‫だから､ ここに来てダウンロードすることができたのです｡
‫これは､ UCI機械学習リポジトリのオリジナルソースです｡ ここには､ もっといろいろなデータセットがあり､
‫例えば､ 私たちが取り組んでいるような問題に取り組むことができます｡
‫しかし､ CSV形式で取得するためには､ すでにフォーマットされており､ それはKaggleに掲載されています｡
‫今はKaggleでも､ もっといろいろなデータセットを手に入れることができます｡
‫こちらには､ ちょっとしたメニューがあります｡
‫そこにデータセットがある｡
‫いろいろなものを検索することもできます｡
‫でも､ もともとこのデータセットに来たのはここからなんです｡
‫こちらからダウンロードできます｡
‫ダウンロードをクリックすると､ データについてもう少し詳しい情報､ 例えば異なる列が何を表しているかなどの属性情報が表示されます｡
‫このままいけば
‫ここで､ 異なる列を見ると､ ここに異なる値があることがわかります｡
‫つまり､ これはデータディクショナリーなのです｡
‫そして､ これをすぐに見ることができるのです｡
‫使っています､ これは重宝しますよ｡
‫これをコピーできるかどうか､ 実際にやってみましょう｡
‫そして､ それを私たちのノートに持ち帰ってください｡
‫これがデータディクショナリーなんですね｡
‫だから､ ここで､ データを作るのはちょっと先走りかもしれませんね｡
‫だから､ そこに行けばドカン｡
‫それは､ データの中の列が何であるかを参照するために使うことができるものです｡
‫だから､ ここのデータを行けば､ 何か引き出せるかもしれない｡
‫ですから､ これをコピーして､ このデータベースには76の属性が含まれているとすると､ 実は私たちのデータセットには14しか含まれていないのです｡
‫しかし､ ここでこう書かれています｡
‫しかし､ 発表された実験はすべて､ そのうちの14個のサブセットを使用することに言及している｡
‫なるほど､ 素晴らしい｡
‫それで､ UCIに戻ったら｡
‫心臓病のデータセット｡
‫ここで少し情報を得ることができます｡
‫つまり､ 使用したのは14属性のみ｡
‫特に会社やチームで仕事をしている場合は､ すべてのプロジェクトでこのような方法をとるとは限りません｡
‫データセットは顧客やクライアントから与えられるかもしれませんが､ 私たちが取り組んでいる問題では､
‫オープンソースデータへのアクセスが必要なので､ つまり､ 誰もがアクセスできるデータ､ インターネット上で公に見つけられるデータですが､
‫その後も､ プロセスは非常によく似ています｡
‫どのようなデータセットであっても､ Jupyterノートブックで作業できるような適切な形式にすることが重要です｡
‫ここに入れるかもしれません｡
‫元データは､ UCI機械学習リポジトリにあるClevelandデータベースから得たものである｡
‫また､ Kaggleで公開されているバージョンもあります｡
‫そこで､ それをコピーすることもできます｡
‫美しい｡
‫そして､ そこにもコピーしておきます｡
‫そして､ このことは後で片付ければいいのです｡
‫しかし､ これはあくまでデータに関する一部の情報です｡
‫どこから来たのか？
‫どんなデータがあるのか？
‫そして､ ここに至るわけです｡
‫その3､ 評価｡
‫ですから､ 実際に作業するのであれば､ これを実装したいと思いました｡
‫例えば､ 私たちが病院で､ これを機械学習モデルとして､ フロントにアプリケーションとして実装できるようにしたいとします｡
‫もし誰かが私たちのところに来て､ 私たちが看護師だとしたら､ その人についてこれらの異なるパラメーターを測定しているのです｡
‫そこで､ さまざまな患者さんの属性が判明しました｡
‫我々のモデルが有効であると判断するためには､ どのような指標で､ プレイ中に使えなくなることを判断すればよいのでしょうか｡
‫ですから､ もし誰かが心臓病かどうかを分類しようとするならば､ それはかなり重要なことですから､
‫非常に正確なモデルが必要です｡
‫それで､ 例えば､ 数字を作るんです｡
‫ですから､ 「概念実証の段階で､ 患者さんが心臓病かどうかを予測する精度が95%に達したら､
‫それを追求して､ 他の人たちの手に渡すようにしよう」というようなことを言うかもしれませんね｡
‫つまり､ これから行う作業の本質は､ 機械学習の概念実証を構築することなのです｡
‫なぜ概念実証と言ったかというと､ 機械学習のプロジェクトは､ 機械学習モデルで学習できるほどのパターンがデータに存在するかどうかを見極めることから始まることが多いからです｡
‫そして､ もしそうであれば､ そのプロジェクトをさらに追求し､ 生産に移したり､ 何らかのアプリケーションにしたりすることができます｡
‫繰り返しますが､ これはあくまでもプロジェクトの初期に目指すべきゴールとして設定するベンチマークであり､
‫確定したものではありません｡
‫変わる可能性があります｡
‫例えば､ 「この機械学習のプロジェクトに2週間かけるとしたら､
‫最終的にどの程度の数字になれば､ もっと追求されるようになるだろうか？
‫では､ そうしましょう｡
‫ですから､ 概念実証中に患者さんが心臓病かどうかを予測する精度が95％に達すれば､ そのプロジェクトを推進することになります｡
‫そして､ これはまた別のことかもしれませんね｡
‫データサイエンスの会社とかで､ 誰かがやってくるかもしれない｡
‫他のチームの誰かが､ 「このデータセットがあるんだけど」と言うかもしれません｡
‫どれくらいのお客様が解約しているのかを測定したいので､ 機械学習モデルを構築できないか考えています｡
‫そして､ 「コンセプトの検証をやってみないか」と言われるかもしれません｡
‫ここでやっていることと同じようなこと？
‫そして､ このようにラボを設定することもあります｡
‫まず問題定義から始め､ ある顧客が解約するのかしないのかを把握することができます｡
‫データはどこから来るのか？
‫それは､ 私たちの顧客データベースから得られるものです｡
‫評価指標は？
‫もし､ 80％程度の精度でお客様が解約するかどうかを判断できるのであれば､ このまま追求し続け､ 実際に生産パイプラインに乗せることができるかもしれません｡
‫これが最初の3ステップのワークフローの一例です｡
‫そして､ いよいよステップ4､ 最終ではないのです｡
‫まだまだ機能は充実しています｡
‫もし､ 私たちが戻ってきたら､ このように評価を行い､ どのような定義で成功するか､ どのような機能をモデリングすべきか？
‫これがステップ4です｡
‫そこで､ データディクショナリーを作成することになります｡
‫どういうことかというと､ ちょっと調べれば自分で作れるかもしれないということです｡
‫しかし､ 実際に作業しているデータを見れば､
‫すぐに理解できるはずです｡
‫実は｡
‫そうですね､ これをドットポイントに変えて入力するかもしれませんね｡
‫これで､ データディクショナリーができました｡
‫これは､ 今回のように自分で調べて､ ここのデータについて調べて､
‫発見することもあれば､ 専門家の力を借りて作成することもあります｡
‫例えば､ 解約する人､ しない人､ つまり製品を使わなくなる人に関する顧客データを大量に持ってきて､
‫そのデータのさまざまな特徴を教えてくれるかもしれない､ ということです｡
‫そしてここに､ データの各特徴に関するさまざまな情報を得ることができるようにします｡
‫ですから､ 基本的にデータを扱うときは､ まったくの素人ではありません｡
‫実際に何が起こっているのか､ あるいはデータの各セクションが何を意味しているのかが､ ある程度わかるようになるのです｡
‫心臓病のCSVファイルをJupyter Notebookにインポートして､
‫実際にデータを見ると､ このことがよりよく理解できるでしょう｡
‫そこで､ この最初の4つのステップ｡
‫1､ 2､ 3､ 4
‫問題の定義
‫データです｡
‫どんなデータがあるのか？
‫というのも､ 私たちがしたいことは､
‫ここで考えるのではなく､ 実際にコードに触れ､
‫コードとデータに語らせることだからです｡
‫ということで､ これから数回のビデオでご紹介していきます｡