[OCI]変わりゆくDBAの役割 第3週目、データの準備 (2020/06/19)
変わりゆくDBAの役割 第3週目、データの準備 (2020/06/19)
https://blogs.oracle.com/machinelearning/the-changing-role-of-the-dba:-week-3,-data-preparation
投稿者:Charlie Berger | Sr. Dir. Product Management, Machine Learning, AI and Cognitive Analytics
「Oracle Data ProfessionalからOracle Data Scientistへ」シリーズの第4回目、第3ステップへようこそ。
前回の第2週では、渡されたデータをただ受け取るだけではなく、
「正しいデータ」を組み立てること、正しいデータを理解して検証し、
そのデータが有効に見えて「意味がある」ことを確認することの重要性など、データの理解について取り上げました。
もし、その記事やこのシリーズのまとめブログ記事を読んでいないのであれば、ぜひ読んでみることをお勧めします。
また、「Oracle Machine Learning Overview: from Oracle Data Professional to Oracle Data Scientist in 6 Weeks!」も
YouTubeで視聴できるようになりました。
今回のブログ記事では、Oracle Data Scientistになるための3つ目のステップに入ります。データの準備です。
Oracle Data Scientistになるには、会社で働くだけで多くのことを学んできたことが重要です。
その会社、業界、競合他社、ビジネスを推進する要因、会社が収集・保存しているデータについて経験的な知識を持つことで、
次のステップである「データの準備」に向けて確固たる地位を築くことができます。
第1週目の「ビジネス理解」では、問題文の定義を非常に正確に行う必要があることを学びました。
第2週目では、機械学習がビジネス上の問題に対処できるように、収集したデータについて熟考することを学びました。
さて、機械学習アルゴリズムを実行して良い結果を得る前に、データを準備する必要があります。
まず、データの準備には大きく分けて2つの種類があることを知っておきましょう。その両方を見ていきましょう。
- アルゴリズムが必要とするデータ準備
正規化、スケーリング、ビニング、欠落値処理、特徴量削減などのデータ変換は、
有用な洞察を得るために機械学習アルゴリズムによって必要とされることが多い。 - 設計された特徴。ドメイン知識を捕捉し、より正確で有用なモデルを生成するために派生した新しい属性または変数。
アルゴリズムに必要なデータの準備
まず、ほとんどの機械学習アルゴリズムで必要とされる、手作業でのデータ準備のステップを1つずつ見ていきましょう。
古典的な訓練を受けたデータサイエンティストの多くは、ここから自分の持っているデータを見て、
欠損値、データの正規化、ビニング、特徴量の削減に取り組み始めます。
完全開示:Oracle Machine LearningのAutomatic Data Preparationは、この作業の多くを自動的に行ってくれます。
しかし、あなたが忠実にすべての自動データ準備が行うことを採用する前に、
あなたはそれがそれがやっていることをやっている理由を理解する必要がありますし、
あなたがその提案(ほとんど常に)を受け入れる必要があるときです。
そうすれば、データに隠された情報を引き出すのに役立つ新しい「設計された特徴」を導き出し、
機械学習アルゴリズムが容易になるようにするなど、より重要なデータ準備の側面にエネルギーを集中させることができます。
または、Oracle Machine Learningのデータ変換機能を使用して、データ準備を完全に制御し、
以下のデータ変換のいずれかまたはすべてを手動で実行することもできます。
欠損値の処理:多くの機械学習アルゴリズムは、欠落値や「ヌル」値では動作しないため、一般的に欠落値は重要です。
欠落値はまた、場合によっては、データが欠落していることは、センサーの不良や、より欺瞞的なケースでは、
情報を隠したり、隠したりしようとする試みなど、データ収集に何か問題があることを示しているため、興味深いものでもあります。
いずれかのレコードが1つ以上の欠落した値を持っていることが判明した場合、
アルゴリズムの要件を満たすための最も一般的なアプローチは、そのレコードを削除することですが、
これは残念ながらデータの損失につながる可能性があります。
もう一つの一般的なアプローチは、ヌルやブランクを数値属性の平均値やカテゴリ属性のモード(ADPはこれを自動的に行います)に置き換えるか、
値を "999 "のような代入された値に置き換えることです。
しかし、欠落した回答が単なる見落としなのか、それとも意図的なごまかしなのか、
そしてそれがどのようにデータに反映されるべきなのかにも注意を払う必要があります。
例えば、誰かが質問を飛ばした理由があるのでしょうか。"以前に破産宣告をしたことがありますか?"
正規化:スケールの違いや数値属性値のサイズの違いを緩和するために、ほとんどのアルゴリズムでは、
生成されたモデル適合とモデル係数がすべて同じ標準化されたスケールを共有するように、
数値属性を標準化された0-1スケールに変換する必要があります。
例えば,AGEとSALARYの両方を持つデータセットでは,0~120年の自然な範囲を持つAGEは,
0~1,または-1~+1の間の値に正規化または再スケーリングされます.
0ドルから数百万ドルの間の自然な範囲を持つであろうSALARYは、同じ0と1または-1から+1の範囲の値に再スケールされます。
このようにして,モデルがアルゴリズムによって生成されるとき,すべてのモデルの係数が標準化されます。
モデル係数値にSALARYを乗じたものは,同じモデル係数値にAGEを乗じたものを圧倒しません。
機械学習モデルの構築とモデルの適用の両方で、AGEとSALARYの両方が使用され、
それらのスケーリングされたまたはスケーリングされていない形式で表示されるように注意する必要があります。
Oracle Machine LearningのAutomatic Data Preparationは、データの正規化を自動的に処理しますが、その理由がわかりました。
ビニング:ビニングは、状況によって異なる目的で実行されます。
「リコーディング」として知られることもありますが、ビニングはカテゴリーや数値データを「バケット化」するために使用され、
文脈上の意味を追加したり、データを単純化したりすることができます。
例えば、AGEはCHILD、TEENAGER、ADULT、SENIORに分類することができます。
同様に、PROFESSIONを "WHITE_COLAR "と "BLUE_COLAR "に再コード化することで、
より多くのドメインコンテキストを追加し、モデルの解釈性を向上させることができます。
Data Scientistは、連続した数値を範囲にグループ化するためにデータを「ビン化」したいと考えることがよくあります。
Oracle Machine Learningの自動データ準備機能は、必要とされるすべてのビン化と、データに必要な準備ステップを自動的に処理します。
さらに、ほとんどのOracle Machine Learningアルゴリズム(例えば、Decision Treeアルゴリズムや作成するデータ分割ポイントなど)は、データの準備を内部で管理します。
ランダムサンプリングと層別サンプリング:Data Scientistは、データ量を減らし、モデル構築を高速化するために、
より大きなデータ母集団のサンプルを処理することがあります。しかし、Oracleの場合、このデータ削減戦略はそれほど重要ではありません。
層別サンプリングは、対象分野が不均衡な場合に教師付き学習でよく使われる手法です。
例えば、ビジネス上の問題が、新しいデジタル・バンキング製品に興味を持つ人を特定することであるが、
現在、既存の顧客の5%しかデジタル・バンキング製品を持っていない場合、
常に最も人気のあるデータ値(No)を推測するモデルを構築し、95%の確率で正確にすることができます。
しかし、ターゲットにしようとしている顧客のタイプを代表する人口が少ない人には、そのモデルは100%間違っているだろう。
このような不均衡なデータ分布の状況を克服するために、Data Scientistは層別サンプリングを実行して、
まれなケース(デジタル・バンキング製品を持っている人)と一般的なケース(デジタル・バンキング製品を持っていない人)が、
よりバランスのとれた50/50のデータセットになるようにします。
詳細については、『Oracle Data Miner』のドキュメントの「サンプリング」を参照してください。
アンバランスなデータを処理するためのテクニックや戦略には、ターゲット・クラスの重み付けやレシーバー・オペレーティング・カーブ(ROC)などがありますが、
それについては、第5週 - モデルの評価を参照してください。
繰り返しになりますが、「データではなくアルゴリズムを動かす」というオラクルの戦略は、
Oracle Databaseの強力でスケーラブルな並列化アーキテクチャを活用しているため、何十億ものレコードを簡単に処理することができます。
これらの機能により、データサンプリングの必要性が低くなっています。
しかし、100億レコードのデータセットを扱う場合には、層別サンプリングはまだ実用的かもしれません。
トランザクションデータ:トランザクションデータ(購入、クリック、センサーの読み取りなど)の場合、
Data Scientistは、複数のテーブルをエクスポートして、モデルで使用されている属性ごとに列を持つ大きなテーブルに「フラット化」する必要があることがよくあります。
これは、従来のデータ分析や機械学習ツールがどのように動作するように設計されているかということですが、
エンタープライズデータベースがどのように機能するように設計されているかということではないからです。
リレーショナル・データベースの現実の世界では、データは、スター・スキーマ
(顧客データ、販売トランザクション・データ、補足的な人口統計データ、カスタマーサービス部門のトランザクション・データなど)で
一意の顧客またはトランザクション識別子によって結合された複数のテーブルで管理されています。
この作業を行う代わりに、Oracle Machine Learningを使用して、
これらの異種データ・ソースをデータベース内の自然な状態で集約して「マイニング」することができます。
詳細については、ケース・テーブルの準備を参照してください。
特徴の選択と削減:機械学習ツールキットやプラットフォームは、多くの場合、大量の入力属性を扱うのに苦労します(「大量」とは何であれ)。
そのため、ユーザーに「最適な」入力属性を選択させるか、特徴の選択と削減技術を実行して候補となる
入力属性のより大きなリストを絞り込むことを強制します。数十、数百、数千の入力属性がある場合、
機械学習ツール、言語、および環境は、専用の計算プラットフォームを必要とする場合があります。
Oracle Machine Learningにはこのような制限はなく、何千もの入力属性で実行されています。
多くの人がデータベースの1,000カラム制限を思い浮かべるだろうから、この最後の文は奇妙に聞こえるかもしれません。
しかし、Oracle Machine Learningでは、トランザクションデータ(売上取引、ウェブクリック、患者が服用した薬など)を
"入れ子になったデータ "として処理することができます。ドキュメントの「ネストされたデータ」を参照してください。
構造化されていないデータ: ここでは詳細を述べることはできませんが、
Oracle Machine Learningは非構造化データ、つまり「テキスト」データも扱うことができることは言及しておく価値があります。
この強力な機能は、顧客のコメント、ツイート、ドキュメント、説明、メモなどの潜在的に価値のある入力データを、
従来の構造化または半構造化されたトランザクション・データと一緒に追加できることを意味します。
ほとんどのOracle Machine Learningアルゴリズムは、非構造化データをインジェストしてモデルを構築し、それを適用することができます。
しかし、非構造化データの取り扱いについては、別のブログ・シリーズのトピックになるかもしれません。
そこで、今のところは、構造化されていないテキストをマイニングするためのOracle Machine Learningのドキュメントに興味のある読者を誘導したいと思います。
Oracle Machine Learningによる非構造化データの自動処理により、より優れたモデルが得られる
そして、その説明を含むワインに関する情報を使用して、良いワイン(90点以上)を予測するこのサポート・ベクター・マシン・モデルに示されているような洞察力を持っています。
Oracle Machine Learningのデータ準備と変換のサポートの詳細については、DBMS_DATA_MINING_TRANSFORMを参照してください。
Oracle SQL Developer の拡張機能である Oracle Data Miner (ODMr) は、自動化、デフォルト、およびデータに基づいて
システムが決定するデフォルトを提供し、機械学習を可能な限り単純化して自動化する一方で、エキスパートユーザーが手動でオーバーライドできるようにします。
上記のデータ準備の問題の一部またはすべてに手動で対処する必要があるかもしれませんが、
Oracle Machine Learningの自動データ準備処理機能を活用して、データ準備のエネルギーを
より巧妙な新しい "設計された機能 "の開発に集中できるようになることが期待されます。
設計された機能
「データ・サイエンス・プロジェクトの価値の大部分を付加する実際の作業や思考はここで行われます。」
初心者が「これが私の持っているデータなんだけど、どうやって良いモデルを構築するか教えてくれないか」と言うのは、数え切れないほどの回数です。
それは、データサイエンス・プロジェクトの考え方としては間違っています。
その代わりに、明確に定義されたビジネス上の問題を特定する必要があります(第1週の「ビジネス理解」を参照してください)。
"母音を買いたい パット"
参加者がホイールを回して子音を呼ぶ、母音を買う、パズルを解く、という3つの選択肢がある
ホイール・オブ・フォーチュンのように、Data Scientistは、「自分が持っているデータを忘れよう」と考える必要があります。
この問題に取り組むために、どのようなデータがあればいいのか」と考え、その情報を探しに行く必要があります。
私が関わってきた機械学習プロジェクトの中には、データサイエンティストが利用可能なデータを無視して、
どのようなデータを持っていたらいいのかをブレインストーミングしてから、利用可能なデータからそれを見つけたり、
導き出したりすることで成功したものもあります。
以下のビジネス問題と、それらを解決するための「最適な」入力属性を考えてみてください。
今後の予約のためにどの患者がノーショーになるかを予測します。
ニューイングランド北部のある病院では、来院しない予約の数を減らしたいと考えていました。
これらの予約はシステムにコストをかけ、希少なリソースを無駄にし、皆をイライラさせていました。
私は当初、来院しないための最良の予測因子は時間帯、患者が車で移動する距離、天候、処置の種類、医師であると推測していましたが、
前回の予約を欠席することが最も影響力のある予測因子であることがわかりました。
この問題について考えると、本当に頭が痛くなる。
[Karl Rexer氏に感謝します。このMLのユースケースについてもっと知りたい方は、2部構成のブログを参照してください。]
従業員の自主的な離職を予測する
従業員の自発的な離職に最も貢献しているものを推測しようとするとき、
人々は通常、給与、ボーナス、自己評価と管理者による評価の違い、管理者や同僚との関係に惹かれます。
これらはすべて論理的な予測変数です。
しかし、HCM業界の専門家は、従業員の医療・歯科給付金の利用状況、扶養家族の数、
その他のよりソフトな手段が、通常は最良の予測変数であることを知っています。
携帯電話のプラン解約を見越して
顧客が電話プランを解約する理由を調査する際、ほとんどのData Scientistは、
電話プランの価格、モバイルデバイスの種類とその年齢、所有者が新しい電話を購入する頻度、
最後に購入した日、購入金額、顧客とのやりとり、苦情解決、苦情の頻度などに注目するでしょう。
しかし、業界の専門家はまた、隠された時間的なデータパターンを探し出すことを望むでしょう。
例えば、クレームの数や頻度、電話の不通などは、長期的な平均と比較して最近増加しているのでしょうか?
SQL Analytics Functionのウィンドウ句を使用することで、Oracleデータの専門家は、
ドメインの専門家の直感と知識を捉えた、より優れた入力属性を生成することができます。
Oracle SQLには、より正確な機械学習モデルを構築するための新しい属性または「設計された機能」を生成するための多数の強力な機能があります。
Oracle SQL for Patternsを使用すると、Oracleデータの専門家は、特定のパターンを特定し、それを迅速に発見してカウントすることができます。
たとえば、電話の不通は、顧客にとってはイライラするものです。
私があなたに電話をかけた後、60秒以内にあなたから折り返し電話がかかってきて、
その後、あなたまたは私がまた相手に電話をかけてきた場合、落第電話が発生している可能性があります。
これらをカウントすることで、解約予測モデルのためのもう一つの優れた予測属性を手に入れることができます。
埋め込み変換
上記で説明した準備と変換をすべて行った後、次のステップはそれらをモデルに実装することです。
ここがデータサイエンス・プロジェクトの87%が失敗するところです。
ここでの危険は、データ変換がモデル構築とモデル適用の両方に含まれている必要があることです。
そうでなければ、もちろん、あなたの予測は間違ったものになります。
あなたの入力は、モデルが構築されたときにモデルが予想した入力データのシグネチャと一致しません。
幸いなことに、Oracle Machine Learning, Automatic Data Preparation (ADP)は、この面倒なステップを簡素化してくれます。
さらに、ユーザー定義のデータ変換(「設計された機能」など)、ビニング、カスタム変換、再コード化などは、
モデル内のOracle Machine Learningの埋め込み変換を使用して自動的に処理されます。
変換リストを作成し、DBMS_DATA_MINING.CREATE_MODELに渡すことで、独自の変換を指定してモデルに埋め込むことができます。
詳細は Embedded Transformations のドキュメントを参照してください。
これは、ほとんどのデータサイエンスプロジェクトが失敗する場所であることを考えると、非常に大きな利点です。
今週のトピック「第3週 - データ準備」が、考えられるデータ準備の問題をすべて把握し、
Oracle Machine Learningの自動データ準備の自動動作を安心して受け入れることの重要性を示す上で参考になったことを願っています。
第4週 - モデル構築では、使用する適切な機械学習機能とアルゴリズムを決定するプロセスと、
Oracle Machine Learningを活用して新たな洞察を発見し、予測を行う方法を見ていきます。
Charlie
Editor: Amanda O'Callaghan
コメント
コメントを投稿