はじめに
昨年末から今年頭にかけ,会社でデータ分析推進部署主催の社内の実データを使ったデータ分析のコンペがあり,未経験ながらも興味があったので本物のデータを使ってデータ分析を実体験できるチャンスと捉えて参加しました.
コンペの振り返りと頭の整理のために自分なりに理解したデータ活用・分析のイメージをまとめます.
注) 初心者が振り返りも含めて自分の言葉でまとめたものなので間違い等あるかと思います.何か問題点・間違い等ありましたらコメントいただけますようよろしくお願いします.
参加したデータ分析コンペの概要
データや評価内容の詳細は載せられませんが,当たり障りの無いレベルでざっくりと今回参加したコンペの概要をまとめます.
- **目的:**データ活用が可能な人材の育成 + 社内業務へのフィードバック
- **参加者:**自分で参加したいと応募した人(データ分析・活用の経験問わず)
- **利用データ:**社内業務で収集した実データ(正解あり)
- **データ形式:**表形式データ
- 予測対象:複数分類(グループ分け)
- **期間:**3週間
- **コンペ環境:**社内IT部門等の関係部署が協力して専用環境を構築
わかったこと
今回参加したコンペは正解ありの教師あり学習で予測精度を競ったため,教師あり学習を前提にわかったことをまとめます.
データ分析・活用とは?
ある定まったフォーマットのデータをインプットに欲しい結果を予測・判断できる数式的なもの(データ活用の世界ではモデルと言う)を作成し,必要なデータを準備すれば誰でも一定のレベルで今後の予測や判断ができるようにすること.
- **インプットと予測の例:**天気・温度・湿度・曜日 → 入場者 や 売上高 の予測 など
- **インプットと判断の例:**画像 → 文字の識別 や 偽札の判定 など
データ分析コンペとは?
企業などがスポンサーになり,所有するデータと予測したい内容を提示して,予測に使える計算式を参加者に作成してもらい予測精度を競いあう大会.参加者が作成した計算式に予測したい内容をマスキングしたデータを投入し,予測結果の精度を競いあう.上位入賞者には賞金が支払われるものもあり.
有名なデータ分析コンペとして Kaggle がある.
データ分析をする環境
データ分析はPythonを使うのが一般的.
PythonとVisualStudioCodeと関連する拡張機能をPCにそれぞれインストールして環境構築することもできる.処理速度はPCのスペックに依存するので大規模な分析には不向き.
GoogleはGoogleアカウントがあれば無料で利用できるブラウザベースのデータ分析環境を提供している.簡単な分析ではストレスなく利用できた.大規模な分析では???
データ分析コンペで有名なKaggleでは,Kaggle内にデータ分析環境があり利用可能.簡単な分析ではストレスなく利用できた.大規模な分析では???
AWSのSavgeMaker等のSaaSもあり.AWSの場合,利用するインスタンスを選択できるようなので必要に応じてリソースを選択することが可能.ただし,大規模リソースを利用すればその分コストは増加することにつながるのでリソースサイズの検討が必要になりそう.
モデルの作り方
インプットデータの形式と予測したいものによって,この手法を使えばだいたいOK,という指針がある.
それぞれの手法はpythonのライブラリで提供されているので,作りたいモデルを指定して学習用データを動作パラメータを設定すれば予測するモデルを作成してくれる.
手法ごとにパラメータが違う.パラメータチューニングで予測精度が上がったり下がったりする.
モデル学習用データの準備方法
コンペでは提供されたデータを学習用データ(参考書)と評価用データ(模擬試験)に分けて,学習用データで勉強→評価用データで正解率の確認をしてモデルの精度を上げていく.
学習用データ(参考書)と評価用データ(模擬試験)の準備方法にもいろいろあり,初めに比率で分けてそれを使い続けるホールドアウト法や,全データで学習用データ・評価用データの組み合わせを網羅する交差検証などの手法がある.
予測精度を上げるには?
インプットデータと結果の間で影響度が高いインプットがどれか?を見つけ出すのが重要.
インプットと結果の関係性を推測するのも重要.
物理現象が絡む場合は,データの物理現象の意味を知ることも必要.
インプットと結果は1:1の関係ではなく,N:1で関係しあっている場合が多いので,複合的に関係性を見つけ出す必要あり.
インプットのデータの特徴をより如実に表すようにインプットデータを加工する必要あり.
加工方法の例:対数をとる,平均値/中央値/標準偏差
コンペの結果と感じたこと
今回のデータ分析コンペでは,インプットデータの加工はガイド通りの加工にとどまり,何種類かのデータ分析モデルを実装して精度比較をしましたが,ある一定の精度で頭打ちとなってしまいました.
コンペの上位者のコメントを聞くと,インプットデータと予測対象との関係性に着目してインプットデータの特徴を表すように加工することに注力したとのことで,やはりモデル作成の前の人間によるデータ分析や推論が重要であると実感しました.
まとめ
データ分析を実際に手を動かして体験しながら学んだことで,実は手の届く世界の技術であることがわかり大変有意義な経験をすることができました.
とは言え,データ活用をがっつり使うには数学的知識や統計学の知識などの知識は弱いなということを実感したので,ちょっとずつでも勉強していきたいな.
あと,良いデータ活用をするには実際の業務背景や業務モデル,対象の物理現象などを理解しないといけないということも聞きましたが,ここらへんはシステム開発と一緒ですね.
最後に,このような機会を作ってくれたコンペ企画・運営をしていただいた方々,本当にありがとうございました.
###補足
2022年の目標である「外に発信をしよう」の第一歩として,初めての記事投稿をしてみました.自分で分かったつもりでいることでも,文章にまとめるのは難しいですね.