データサイエンスとは? [BLOCK_TYPE SECTION/STEP]
データサイエンスは機械学習だけではありません。統計学だけではありません。プログラミングだけではありません。 [BLOCK_TYPE SECTION/STEP]
データサイエンスはデータから有用な知識を抽出する学問です。その殆どの作業は派手ではありません: 乱雑なスプレッドシートをクリーンアップする作業、適切な質問をすること、そしてコードに関<|eos|>
The typical data science pipeline looks like this:
1. 収集: データベース、API、CSV、またはウェブスクレイピングから生データを集める
2. クリーニング: 欠損値の処理、型修正、重複の除去
3. 探索: 分布の可視化、パターンの発見、質問の設定
4. エンジニアリング: モデルが学習を助ける新しい特徴量の作成
5. モデル: アルゴリズムの訓練、パフォーマンスの評価、イテレーション
6. コミュニケーション: 意思決定者への結果の発表
Excelのピボットテーブル、条件付き書式、またはVLOOKUPを使用したことがあるなら、すでに1〜3のステップを行っています。このレッスンはその経験を、業界で使用されるPythonベースのワークフローにつ vermittelt.
ウォームアップ
あなたのデータ経験
[BLOCK_TYPE SECTION/STEP]誰もが何らかの形でデータと関わっています。予算管理のスプレッドシート、成績トラッカー、フィットネスアプリ、再生回数付きのプレイリストなど。 [BLOCK_TYPE SECTION/STEP]
Garbage In, Garbage Out
なぜクリーニングが重要なのか
データサイエンティストは、データのクリーニングに60〜80%の時間を費やします。これは誇張ではなく、業界調査で一貫して見られる結果です。
理由はシンプルです:garbage in, garbage out。データにエラー、欠損値、または一貫性のない形式がある場合、その上に構築されるすべての分析が誤ったものになります。汚れたデータで完璧なモデルを訓練しても、自信たっぷりの誤った回答しか得られません。
よくあるデータの問題
- 欠損値: セルが空白です。データが未収集だったのか、値が0だったのか?これらは異なる状況であり、異なる処理が必要です。
- 誤ったデータ型: 数値の列がテキストとして保存されている、または日付が一貫性のない形式で保存されている(01/02/2024: これは1月2日か、それl
- Outliers: a salary column has one entry of $1,000,000,000. Is that real, or a typo? Either way, it will skew your averages.
- 重複: 同じレコードが2回出現するのは、2つのシステムが不完全にマージされたためです
- カテゴリエンコーディング: 列に 'Yes', 'yes', 'Y', 'TRUE', '1' などが含まれています。これらはすべて同じ意味ですが、コンピューターはそれを認識できません。
pandas(標準的なPythonデータライブラリ)では、dropna(), fillna(), astype(), drop_duplicates() などのメソッドでこれらを扱います。しかし、難しいのはコードではなく、それぞれの問題に対して 何をするか を決めることです。
Cleaning Decisions
Deciding What To Do
ここに実際のシナリオがあります。10,000件の顧客レコードを持つデータセットがあり、「age」列に500個の欠損値があります。
あなたの選択肢:
- 行を削除する: 500件のレコードをすべて削除します。シンプルですが、データの5%を失います。もしそれらの500人の顧客が共通の特徴を持っている場合(例: 年齢欄をスキップしたのはプライバシーを気にする人々だった)、行を削除するとバイアスが生じます。
- 平均値で補完する: 欠損値を平均年齢で置き換えます。簡単ですが、年齢列の分散を人為的に減らします。
- 中央値で補完する: 平均値よりも良い選択です。特に年齢分布が歪んでいる場合(ごく少数の非常に高齢者や低齢者が平均を引いている場合)。
- フラグを使用する: 新しい列「age_missing」を作成(1または0)し、元の列を中央値で補完します。これにより、欠損自体が情報としてモデルに学習させできます。
普遍的に正しい答えはありません。選択は「なぜデータが欠損しているのか」と「そのデータで何をしたいのか」によって変わります。
適切な質問をする
探索的データ分析(EDA)
モデルを構築する前に、データを理解する必要があります。EDAは、データセットを要約し、可視化し、質問することで、パターン、異常、関係性を見つけるプロセスです。
主要ツール
- ヒストグラム: 単一変数の分布を示します。ベル型ですか?歪んでいますか?二峰性(2つのピーク)ですか?収入のヒストグラムは、少数の人が大多数よりはるかに多く稼ぐため、常に右に歪んでいます。
- 散布図: 2つの変数の関係を示します。身長が高い人は体重も多いですか?勉強時間が多いほど成績も良いですか?パターン(またはパターンの欠如)は、関係が存在するかどうかを示します。
- 相関: -1から+1の数値で、線形関係を測定します。+1は完全な正の関係、-1は完全な負の関係、0は線形関係なしを意味します。しかし相関は因果関係を意味しません:アイスクリームの売上と溺死者数は、夏に両方増加するので相関があります。
- 要約統計量: 平均、メディアン、標準偏差、最小値、最大値。pandasでは、df.describe()でこれ<|eos|>
The Real Skill
ツールは簡単に習得できます。難しいのは適切な質問をすることです。悪い質問: 「データは何を言っているか?」良い質問: 「初週にサポートに連絡した顧客は、定着率が高いか?」
相関の罠
相関 vs. 因果
これはデータリテラシーにおいて最も重要な概念です。2つの変数が強く相関していても、一方が他方を引き起こしているとは限りません。
典型的な例:
- 消防士が多い都市ほど火災が多い。(大都市ではどちらも多い。)
- 朝食を食べる生徒は成績が良い。(裕福な家庭ほど朝食を提供しやすく、かつ学業サポートも充実している可能性がある。)
- チョコレートを多く消費する国ほどノーベル賞受賞数が多い。(どちらも国の富と相関している。)
隠れた要因は交絡変数と呼ばれます:あなたが見ている2つの変数の両方を駆動する第三の変数です。
Creating Useful Variables
What Is Feature Engineering?
特徴量とは、モデルが予測を行うために使用する入力変数のことです。特徴量エンジニアリングとは、生データから新しい特徴量を作成し、モデルがそれまで見えなかったパターンを学習できるようにする技術です。
生データは、モデルが扱える形になっていることは稀です。例えば「生年月日」列を含むデータセットを考えてみましょう。モデルは生の日付をほとんど扱えません。しかし、そこから「年齢」特徴量を作成すれば、モデルは年齢に基づくパターンを学習できるようになります。
Common Techniques
- 正規化: 数値を共通の範囲にスケーリングすること(0から1、または平均=0、標準偏差=1)。これを行わない場合、千単位で測定される特徴量(給与)が、1桁で測定される特徴量(経験年数)に支配されてしまう。
- One-hot encoding: カテゴリ変数をバイナリ列に変換すること。「color」列に[red, blue, green]の値がある場合、「color_red」、「color_blue」、「color_green」の3つの列に変換され、それぞれの値は0または1となる。
- Binning: 連続変数をカテゴリに変換すること。年齢0-17を「minor」、18-64を「adult」、65以上を「senior」に変換する。この方法は関係が線形でない場合に役立つ。
- Interaction features: 2つの特徴量を乗算する。「床面積とバスルーム数」の組み合わせが、単独の特徴量より住宅価格をより良く予測する可能性がある。
- Domain knowledge: 最も強力な手法。医療モデルのために特徴量を作成する医師は、どのラボ値が重要かを知っている。マーケティング担当者は「前回の購入からの日数」が「購入日」より有用であることを知る。アルゴリズムはこれを代替できない。
Feature Practice
Applying Feature Engineering
あなたは、来月ストリーミングサービスを解約する顧客を予測するモデルを構築していると想像してください。生データには以下が含まれます:
- アカウント作成日
- 最終ログイン日
- 先月視聴した番組の数
- 月額料金
- 顧客サポートへの問い合わせ件数
- 国
訓練/テスト分割
データを分割する理由
モデリングにおける最も重要なルール:訓練に使用したデータでモデルを評価してはいけない。
そうすると、モデルは単に答えを暗記するだけになる。訓練データでは完璧なスコアを出すが、新しい未知のデータでは失敗する。これを過学習(overfitting)と呼び、モデルは実際のパターンではなく、特定のデータセット内のノイズを学習してしまう。
標準的な手法は、データを分割することである:
- 訓練セット(通常70-80%):モデルがこれから学習する
- テストセット(通常20-30%):保持しておき、最終モデルの評価にのみ使用する
scikit-learnでの実装:X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
一般的なアルゴリズム
- 線形回帰: データを通る最適な直線を描きます。シンプルで解釈しやすく、関係が概ね線形である場合に有効です。数値(価格、温度、スコア)を予測します。
- 決定木: はい/いいえの質問のフローチャートです。理解しやすく、説明しやすいです。深さを制限したり枝刈りを行わない限り、過学習しやすいです。
- ランダムフォレスト: 複数の決定木が一緒に投票するモデルです。単一の決定木より正確で、過学習しにくいですが、説明しにくいです。
過学習 vs. 過少学習
- 過学習: モデルが複雑すぎる状態です。訓練データ(およびノイズ)を暗記します。訓練データでは高い精度ですが、テストデータでは低い精度になります。
- 過少学習: モデルがシンプルすぎる状態です。実際のデータパ<|eos|>
The goal is the sweet spot in between.
評価指標
モデルの良し悪しをどう判断するのか?
正解率だけでは誤解を招く可能性がある。メールの95%がスパムでない場合、常に「スパムでない」と予測するモデルは95%の正解率を示すが、まったく役に立たない。
主な評価指標:
- Accuracy: 正解した予測の割合。クラスがバランスよく分布している場合に有効。
- Precision: モデルが「正」と予測したもののうち、実際に正しかったものの割合。高精度は誤検知が少ないことを意味する。
- Recall: 実際に「正」であるもののうち、モデルが正しく検出したものの割合。高再現率は見逃しが少ないことを意味する。
- F1スコア: 適合率と再現率の調和平均。両方をバランスよく評価したい場合に有用。
- RMSE (Root Mean Squared Error): 回帰(数値の予測)向け。予測値が平均的にどれだけ外れているかを示す。
どの指標が最も重要かは問題によって異なる。がん検出では再現率が重要: 見逃したくないから。スパムフィルタリングでは適合率が重要: 本物のメールを誤って削除したくないから。
データアナリスト vs. データサイエンティスト vs. MLエンジニア
3つの異なる役割
データ分野には主に3つのキャリアトラックがあり、それぞれ異なるスキルが必要です。
データアナリスト
- Focus: 既存のデータでビジネス上の質問に答える
- Tools: SQL, Excel, Tableau, 基本的なPythonまたはR
- Day-to-day: ダッシュボード、レポート、A/Bテスト分析、ステークホルダー向けプレゼンテーション
- Entry path: 最もアクセスしやすいことが多い。多くのアナリストはCS学位なしで始める。
Data Scientist
- Focus: 予測モデルの構築と複雑なデータからパターンを見つける
- Tools: Python (pandas, scikit-learn, matplotlib), 統計学, SQL, Jupyter notebooks
- 日常業務: EDA、特徴量エンジニアリング、モデル構築、実験
- 参入経路: 通常、統計学または定量的な背景が必要。ブートキャンプや独学も有効。
機械学習エンジニア
- 焦点: 本番システムへのモデルのデプロイとスケーリング
- ツール: Python、TensorFlow/PyTorch、Docker、クラウドプラットフォーム(AWS/GCP)、API
- 日常業務: モデル最適化、パイプラインインフラ、運用モデルの監視
- 参入経路: 通常、強力なソフトウェアエンジニアリングスキルとML知識が必要。
ポートフォリオの構築
採用担当者は、あなたが何を学んだかではなく、何ができるかを重視します。GitHub上の3〜5個のしっかりしたプロジェクトからなるポートフォリオは、認定資格よりも重要です。良いプロジェクトは、実際の(おもちゃではない)データセットを使用し、明確なドキュメントを含み、完全なパイプラインを示します:乱雑なデータから行動可能なインサイトまで。
次のステップ
ここからどこへ進むか
業界のツールは無料で、入手可能です:
- pandas: データ操作のための標準的なPythonライブラリ
- matplotlib / seaborn: 可視化ライブラリ
- scikit-learn: 古典的機械学習の主力ツール
- Jupyter notebooks: コード、出力、ノートを混在させることができるインタラクティブなコーディング環境
- Kaggle: 無料のデータセット、コンペティション、プラクティショナーのコミュニティ
興味のある実データセットを1つ選んで始めましょう。ダウンロードし、クリーニングし、探索し、質問に答えてみましょう。その1つのプロジェクトが、どんなコースよりも多くのことを教えてくれます。