Watson Knowledge Studio 〜学習用とテスト用の文書を分けてモデルの作成・テストを実施する〜

<h1>記事の目的</h1>
<p>
　著者はWatson Knowledge Studio(以降、WKSと記載)を使用した検証を行う機会がよくありますが、検証の際、よく使用する機能(または操作手順)であるけれど、日本語でわかりやすく解説された情報がないものについて幾つかQiitaに投稿していこうと思います。この記事は「<a href='https://qiita.com/kng100/items/4441a0c89db0b9537744'>Watson Knowledge Studio 〜プレアノテーションをやってみた〜</a>」に続く第三弾となります。<br>
　学習モデルの作成とテストには、通常、対象のドキュメント・セットに対して、学習用/テスト用/ブラインドセット用の比率を予め指定して実施しますが、本記事では、ドキュメント・セット段階で学習用とテスト用に明示的に分割し、モデルの作成とテストを実施する方法を記載します。このようにドキュメント・セット段階で分割する動機としては下記が考えられます。
<ul>
<li>通常の方法だとモデル作成の都度、学習用/テスト用/ブラインドセット用にランダムに文書が割り振られるので嫌だ(自分で制御したい)</li>
<li>テスト文書を明示的に分けることによって、学習モデルの改善によって、テスト文書へのアノテーション状況がどのように変化していくのか確認したい</li>
<li>テストしたい対象文書が決まっている</li>
</ul>

以降に手順を記載します。
</p>

<h1>前提知識</h1>
<p>
本記事では、WKSの概要や基本的な操作についついては記載しておりません。
必要に応じて、参考リンクに記載の情報をお読みください。
</p>

<h1>参考リンク</h1>
<ul>
<li><a href="https://qiita.com/makaishi2/items/ae83828a711d0d946011">最新版IBM Cloud ライトアカウント登録手順(2018-05-06時点)  -Qiita</a></li>
<li><a href="https://www.ibm.com/watson/jp-ja/developercloud/knowledge-studio.html">Watson Knowledge Studio - IBM</a></li>
<li><a href="https://console.bluemix.net/docs/services/watson-knowledge-studio/tutorials-create-project.html#wks_tutintro">Watson Knowledge Studio ドキュメンテーション</a></li>
<li><a href="https://qiita.com/sukusuku_watson_editorial_room/items/d8407c938af47bc5ac44">Watson Knowledge StudioのTutorialをやってみた （前編）  -Qiita</a></li>
<li><a href="https://qiita.com/sukusuku_watson_editorial_room/items/981a4383f9defc5db6f5">Watson Knowledge StudioのTutorialをやってみた （後編）  -Qiita</a></li>
<li><a href="https://qiita.com/hone/items/03f2cbfbd30c20433a98">Watson Knowledge Studioの機械学習アノテーションをWatson Explorer にデプロイする  -Qiita</a>
<li><a href="https://qiita.com/yoshiono/items/b0619c91e9315c90ef97">Watson Knowledge Studio(WKS)のアノテーション作業手順　その１  -Qiita</a></li>
<li><a href="https://qiita.com/yoshiono/items/ed6b3bf64ef783c5cf43">Watson Knowledge Studio(WKS)のアノテーション作業手順　その２  -Qiita</a></li>
<li><a href="https://qiita.com/yoshiono/items/043087b9902a9135ab5d">Watson Knowledge Studio(WKS)のアノテーション作業手順　その３  -Qiita</a></li>
<li><a href='https://qiita.com/kng100/items/4441a0c89db0b9537744'>Watson Knowledge Studio 〜プレアノテーションをやってみた〜</a></li>
</ul>

<h1>①通常の方法</h1>
WKSにログインし、「Performance」メニューから下記の手順を実施します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299863/86ea0837-52bf-589b-1341-89c3b97160bb.png)


対象のドキュメント・セット(all40.csv)を選択後、内訳(学習用/テスト用/ブラインド・セット用)を指定し実行します。学習モデルの作成とテストが実施されます。
なお、当該ドキュメント・セットはアノテーション済みの前提です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299863/563a40c6-d7a4-4b34-3800-5faa78d53980.png)


<h1>②ドキュメント・セット段階で学習用/テスト用に分け実行する方法</h1>
WKSにログインし、「Performance」メニューから下記の手順を実施します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299863/246660b2-6df0-e0a4-15bc-a95acc525d0c.png)
まずは学習モデルを作成します。学習モデル作成用のドキュメント・セット(training20.csv)を選択後、内訳として学習用に100%割り当てて、「Train」を押すことにより学習モデルの作成を実施します。
なお、ドキュメント・セット段階で学習用(training20.csv)とテスト用(test20.csv)に分割しており、アノテーション済みの前提です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299863/89a22236-9ed1-97d6-00c1-5db962e386f4.png)

学習モデルの作成が開始され、数分後に完了しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299863/72c460cb-2f47-7487-c9d8-90c19aafcacf.png)

次に作成済みの学習モデルで、テスト文書に対してテストを実行します。上記画面で、再度「Train and evaluate」ボタンを実行します。次に現れる下記画面にて「Edit Settings」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299863/1726f3c6-8acc-a34d-67f5-b164e85da674.png)
下記のようにテスト用のドキュメント・セット(test20.csv)を「Test Set」に指定してテストを実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299863/62274be8-74f2-a463-5ff4-042ccda6226e.png)
テストが始まり、数分後、結果が表示されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/299863/2cb3f390-5a67-4aa1-9fc0-d8a6c0097b73.png)





<h1>おわりに</h1>
<p>
　本記事では、ドキュメント・セット段階で学習用/テスト用に明示的に分割し、モデルの作成およびテストを実行する方法を紹介しました。この方法では学習用に割り当てたい文書とテスト用に割り当てたい文書を明示的に制御できるメリットがある一方、固定のテスト文書に対して学習モデルの改善を行っていくと過学習になる可能性もあるため注意が必要です。
なお、著者はまだ試していませんが、対象文書を複数に分割しクロスバリデーションを実施することにより、より汎用的に精度の高いモデルを作成するという用途にも使えるのではないかと思いました。
本記事が、WKSで学習モデルの作成を行う上でのHints&Tipsとなれば幸いです。
</p>