<?xml version="1.0" encoding="UTF-8" ?>
<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns="http://purl.org/rss/1.0/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">

  <channel rdf:about="http://learnms.blog.shinobi.jp/RSS/100/">
    <title>いけいけ機械学習</title>
    <link>http://learnms.blog.shinobi.jp/</link>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://learnms.blog.shinobi.jp/RSS/" />
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" />
    <description>統計、機械学習、AIを学んでいきたいと思います。 お役に立てば幸いです。</description>
    <dc:language>ja</dc:language>
    <dc:date>2026-07-04T20:12:18+09:00</dc:date>
    <items>
    <rdf:Seq>
      <rdf:li rdf:resource="http://learnms.blog.shinobi.jp/Entry/183/" />
      <rdf:li rdf:resource="http://learnms.blog.shinobi.jp/Entry/182/" />
      <rdf:li rdf:resource="http://learnms.blog.shinobi.jp/Entry/181/" />
      <rdf:li rdf:resource="http://learnms.blog.shinobi.jp/Entry/180/" />
      <rdf:li rdf:resource="http://learnms.blog.shinobi.jp/Entry/179/" />
      <rdf:li rdf:resource="http://learnms.blog.shinobi.jp/Entry/178/" />
      <rdf:li rdf:resource="http://learnms.blog.shinobi.jp/Entry/177/" />
      <rdf:li rdf:resource="http://learnms.blog.shinobi.jp/Entry/176/" />
      <rdf:li rdf:resource="http://learnms.blog.shinobi.jp/Entry/175/" />
      <rdf:li rdf:resource="http://learnms.blog.shinobi.jp/Entry/174/" />
    </rdf:Seq>
    </items>
  </channel>

  <item rdf:about="http://learnms.blog.shinobi.jp/Entry/183/">
    <link>http://learnms.blog.shinobi.jp/Entry/183/</link>
    <title>【Kaggle挑戦記】Mechanisms of Action (MoA) Prediction：ベースラインモデルの構築と手元検証</title>
    <description>前回、データの構造と役割を確認した「Mechanisms of Action (MoA) Prediction」コンペ。今回は、あえて高度な特徴量抽出などの加工は一切行わず、素のデータをそのままLightGBMに投入して手元での基準スコア（ベースライン）を算出しました。手元の環境である Python...</description>
    <content:encoded><![CDATA[<p>前回、データの構造と役割を確認した「Mechanisms of Action (MoA) Prediction」コンペ。今回は、あえて高度な特徴量抽出などの加工は一切行わず、素のデータをそのままLightGBMに投入して手元での基準スコア（ベースライン）を算出しました。手元の環境である Python 3.13.5 で試してみた検証ログと、マルチラベル特有のスコアの読み方、そして実際に使用したコードを整理します。</p>
<h3 style="color: blue;">0. 検証モデルの設計（5-Fold CV）</h3>
<p>今回のターゲットは206種類に及ぶマルチラベル構造です。今回は最もシンプルかつ確実なアプローチとして、<b>「206個のターゲットに対して、それぞれ独立したLightGBMの二値分類モデルを5分割交差検証（5-Fold CV）で合計1,030回ループさせて解く」</b>という愚直なパイプラインを構築しました。</p>
<p>前処理としては、LightGBMがエラーを起こさないための最低限の置換（cp_doseの数値化）と、生物学的に正解がすべて「0」と決まっている偽薬データ（cp_type == 'ctl_vehicle'）の除外のみを行っています。</p>
<h3 style="color: blue;">1. 実装した交差検証コード</h3>
<p>手元での検証（Cross Validation）を厳密に行うために作成したスクリプトの全文です。PandasとLightGBM、そしてscikit-learnを組み合わせてシンプルに記述しています。</p>
<pre style="background-color: #2d3748; color: #fff; padding: 15px; border-radius: 5px; font-family: monospace; font-size: 0.9em; overflow-x: auto; line-height: 1.5; white-space: pre;">import numpy as np
import pandas as pd
from lightgbm import LGBMClassifier
from sklearn.metrics import log_loss
from sklearn.model_selection import KFold
from sklearn.preprocessing import LabelEncoder
import warnings

# 不要な警告ログを非表示にする
warnings.filterwarnings("ignore")

# ==========================================
# 1. データの読み込み
# ==========================================
print("Loading data...")
train_features = pd.read_csv("train_features.csv")
train_targets = pd.read_csv("train_targets_scored.csv")

# ==========================================
# 2. 最低限の前処理（LightGBMが動くためだけ）
# ==========================================
print("Preprocessing...")

# cp_type が 'ctl_vehicle'（偽薬）のデータは、すべての正解が 0 と決まっています。
# ここは混ぜると学習のノイズになるため、純粋な薬のデータ（trt_cp）だけを抽出して学習させます。
train_mask = train_features["cp_type"] == "trt_cp"
X = train_features[train_mask].reset_index(drop=True)
y = train_targets[train_mask].reset_index(drop=True)

# IDと、不要になった cp_type カラムを削除
X = X.drop(columns=["sig_id", "cp_type"])
y = y.drop(columns=["sig_id"])

# 文字列のカテゴリ（cp_dose: D1/D2）を数値（0/1）に変換
le = LabelEncoder()
X["cp_dose"] = le.fit_transform(X["cp_dose"])

# ==========================================
# 3. 交差検証（5-Fold CV）のセットアップ
# ==========================================
kf = KFold(n_splits=5, shuffle=True, random_state=42)

# すべてのターゲット、すべての行の予測値を格納するゼロ行列を用意
oof_preds = np.zeros(y.shape)
target_cols = y.columns

print(f"Dataset shape: {X.shape}")
print(f"Number of targets: {len(target_cols)}")
print("Starting Cross Validation...")

# ==========================================
# 4. 206個のターゲットをループで1つずつ学習
# ==========================================
for idx, col in enumerate(target_cols):
    y_target = y[col]

    # そのターゲットに「1（効き目あり）」が1つもない特殊なケースの例外処理
    if y_target.sum() == 0:
        continue

    # 5分割のクロスバリデーションを実行
    for train_idx, val_idx in kf.split(X, y_target):
        X_train, y_train = X.iloc[train_idx], y_target.iloc[train_idx]
        X_val, y_val = X.iloc[val_idx], y_target.iloc[val_idx]

        # デフォルト設定のままのLightGBM（二値分類）
        model = LGBMClassifier(
            objective="binary",
            random_state=42,
            n_estimators=100,
            learning_rate=0.05,
            verbose=-1,
        )

        model.fit(X_train, y_train)

        # 「1」になる予測確率を対応する位置に格納
        oof_preds[val_idx, idx] = model.predict_proba(X_val)[:, 1]

    # 進行状況を20個ごとに表示
    if (idx + 1) % 20 == 0 or (idx + 1) == len(target_cols):
        print(f" Trained targets: {idx + 1}/{len(target_cols)}")

# ==========================================
# 5. 全体のスコア（Log Loss）を計算
# ==========================================
losses = []
for idx, col in enumerate(target_cols):
    loss = log_loss(y[col], oof_preds[:, idx], labels=[0, 1])
    losses.append(loss)

cv_score = np.mean(losses)
print("\n" + "=" * 30)
print(f"手元での交差検証スコア（CV Score）: {cv_score:.5f}")
print("=" * 30)
</pre>
<h3 style="color: blue;">2. 交差検証の実行ログ</h3>
<p>手元の環境（Mac M3、Python 3.13.5）で上記のスクリプトを試してみました。</p>
<pre style="background-color: #2d3748; color: #fff; padding: 15px; border-radius: 5px; font-family: monospace; font-size: 0.95em; overflow-x: auto; line-height: 1.4;">Loading data...
Preprocessing...
Dataset shape: (21948, 874)
Number of targets: 206
Starting Cross Validation...
 Trained targets: 20/206
 Trained targets: 40/206
 Trained targets: 60/206
 Trained targets: 80/206
 Trained targets: 100/206
 Trained targets: 120/206
 Trained targets: 140/206
 Trained targets: 160/206
 Trained targets: 180/206
 Trained targets: 200/206
 Trained targets: 206/206

==============================
手元での交差検証スコア（CV Score）: 0.03933
==============================
</pre>
<h3 style="color: blue;">3. スコア「0.03933」の正体と、log（対数）がもたらすペナルティ</h3>
<p>一見すると「0.039」という数字は非常に低く、モデルが30%くらい予測を外している（正解率70%程度）ように錯覚してしまいます。しかし結論から言うと、予測のハズレ割合（件数）としては<b>すでに1%未満</b>に抑え込まれています。これこそが本コンペの評価指標である<b>Log Loss（対数損失）</b>の最大の特徴です。</p>
<p>Log Lossは予測の正誤だけでなく「モデルの自信度合い（確率）」を厳しく採点する指標で、数式に<b>log（対数）</b>が含まれています。そのため、間違いが大きくなるほどペナルティが倍々ゲーム（指数関数的）に大炎上する仕組みになっています。</p>
<ul>
<li><b>「0（効き目なし）」のエリア：</b> 正解の99%以上が0なので、モデルが「99%の確率で0」と安全な予測を出すだけで、ペナルティはほぼ0点になります。ここで大量の貯金を稼いでいます。</li>
<li><b>たまに登場する「1（効き目あり）」のエリア：</b> ここでモデルが「うーん、自信がないから確率5%くらいで1かな&hellip;」と弱気に見逃すと、<b>一発で3点〜4点という特大のペナルティ（罰点）</b>を喰らいます。</li>
</ul>
<p>この「たまにある1を見逃したときの特大ペナルティ」を、2.4万行 &times; 206個という膨大なデータの海（分母）で薄く平均化した結果、最終的に<b>「0.03933」</b>という極小の数字として残っているのがこのスコアの正体です。つまり、件数としてはほぼ当たっていますが、本物の「1」に対してモデルがまだ自信を持てずにモヤモヤしている状態と言えます。</p>
<div style="text-align: center; margin: 20px auto; max-width: 90%; font-size: 1.1em; font-weight: bold; color: #d9534f; border: 2px solid #d9534f; padding: 12px 15px; border-radius: 5px; box-sizing: border-box; line-height: 1.5;">初期基準（ベースライン）：CV Score = 0.03933<br style="display: none;" class="sp-br" />ここからの戦いは、件数を増やすのではなく、特徴量を使ってモデルに決定的な証拠を教え、「1」のときに自信満々で高い確率を出させる戦いになります。</div>
<h3 style="color: blue;">4. 次なる一手</h3>
<p>何一つ工夫をしていない「素のLightGBM」でここまでのベースラインを測定できたため、手元の検証環境（CV）としては100点満点の仕上がりです。ここからは、先述した「投与時間（cp_time）」や「投与量（cp_dose）」を軸にした特徴量生成や、遺伝子データ（g-）と細胞データ（c-）の統計量を組み合わせ、このスコアをどこまで削り落とせるかの本格的な実験フェーズに移行します。</p>
<p style="font-style: italic; color: #666;"><br />
<br />
</p>]]></content:encoded>
    <dc:subject>【Kaggle挑戦記】</dc:subject>
    <dc:date>2026-07-04T20:12:18+09:00</dc:date>
    <dc:creator>吟遊詩人</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>吟遊詩人</dc:rights>
  </item>
  <item rdf:about="http://learnms.blog.shinobi.jp/Entry/182/">
    <link>http://learnms.blog.shinobi.jp/Entry/182/</link>
    <title>【Kaggle挑戦記】Mechanisms of Action (MoA) Prediction：データの取得と構造の確認</title>
    <description>手書き文字認識の「Digit Recognizer」などを経て、今回は生物・創薬系のデータを扱った「Mechanisms of Action (MoA) Prediction」に挑戦しました。今回はコンペのアーカイブデータを活用し、Late Submissionによる順位確認を目指します。まずは特徴...</description>
    <content:encoded><![CDATA[<p>手書き文字認識の「Digit Recognizer」などを経て、今回は生物・創薬系のデータを扱った「Mechanisms of Action (MoA) Prediction」に挑戦しました。今回はコンペのアーカイブデータを活用し、Late Submissionによる順位確認を目指します。まずは特徴量抽出などの複雑な加工は一切行わず、生のデータをそのままLightGBMに投入する「ベースライン構築」に向けて、データの入手手順と構造を整理します。</p>
<h3 style="color: blue;">0. このコンペティションの概要</h3>
<p>「Mechanisms of Action (MoA) Prediction」は、新薬の候補化合物が人間の細胞（遺伝子や細胞株）に与える影響を分析し、その薬が「どのような効き目（作用機序＝MoA）」を持っているかを予測するコンペティションです。データの主な仕様は以下の通りです。</p>
<ul>
<li><b>データ規模：</b> 訓練用の入力データが約2.4万行、テストデータが約4,000行弱。横方向には800を超える大量の特徴量カラムが並ぶ大規模な表形式データです。</li>
<li><b>入力データ：</b> 細胞の写真などの画像ではなく、100%数値化されたデータです。約770種類の遺伝子発現変化量（g-特徴量）と、100種類の細胞生存率（c-特徴量）、そして実験条件（時間や投与量）で構成されています。</li>
<li><b>タスク：</b> 用意された206種類に及ぶ「効き目のチェックリスト」に対して、それぞれの効き目が「ある（1）」か「ない（0）」かをすべて同時に予測する「マルチラベル二値分類」です。評価指標は「Log Loss（交差エントロピー誤差）」の平均値が採用されています。</li>
</ul>
<p>終了済みのコンペですが、テストデータ（test_features.csv）に対する予測ファイルを提出する「Late Submission」に対応しています。これにより、当時のリーダーボード（順位表）のどの位置に自分が食い込めていたかのスコアと暫定順位を正確に確認し、腕試しをすることができます。</p>
<h3 style="color: blue;">1. データの入手</h3>
<p>データの取得手順は以下の通りです。</p>
<ul>
<li>Kaggleにログインします。</li>
<li>検索窓で「Mechanisms of Action (MoA) Prediction」または「Kaggle MoA」を検索します。</li>
<li>コンペティションのページから「Data」タブを選択します。</li>
<li>右上の「Download All」ボタンから、ZIP形式で一括ダウンロードします。</li>
<li>ダウンロードしたZIPファイルを適当なディレクトリで展開します。</li>
</ul>
<p>展開すると、ディレクトリ内に役割の異なる6つのCSVファイルが生成されます。</p>
<h3 style="color: blue;">2. 主要なCSVファイルの解説</h3>
<p>展開して得られたCSVファイルの中から、初期のLightGBMベースライン構築において直接使用する重要なファイルを整理しました。カラム構造とそれぞれの役割は以下の通りです。</p>
<table style="width: 100%; border-collapse: collapse; margin-top: 10px; margin-bottom: 20px;">
<thead>
<tr style="background-color: #f2f2f2; border-bottom: 2px solid #ddd;"><th style="padding: 10px; text-align: left; border: 1px solid #ddd;">ファイル名 / カラム名</th><th style="padding: 10px; text-align: left; border: 1px solid #ddd;">解説</th></tr>
</thead>
<tbody>
<tr>
<td style="padding: 10px; border: 1px solid #ddd;"><b>train_features.csv</b></td>
<td style="padding: 10px; border: 1px solid #ddd;">学習用の入力データ（約2.4万行）。モデルの「入力（X）」となるファイルです。</td>
</tr>
<tr style="background-color: #f9f9f9;">
<td style="padding: 10px; border: 1px solid #ddd;">├ sig_id</td>
<td style="padding: 10px; border: 1px solid #ddd;">各実験サンプルの固有識別子（ID）</td>
</tr>
<tr>
<td style="padding: 10px; border: 1px solid #ddd;">├ cp_type / cp_time / cp_dose</td>
<td style="padding: 10px; border: 1px solid #ddd;">実験条件（薬か偽薬か、投与時間 24/48/72時間、投与量 高/低）</td>
</tr>
<tr style="background-color: #f9f9f9;">
<td style="padding: 10px; border: 1px solid #ddd;">├ g-0 ～ g-771</td>
<td style="padding: 10px; border: 1px solid #ddd;">772種類の遺伝子発現データ（すべて小数点付きの数値）</td>
</tr>
<tr>
<td style="padding: 10px; border: 1px solid #ddd;">├ c-0 ～ c-99</td>
<td style="padding: 10px; border: 1px solid #ddd;">100種類の細胞生存率データ（すべて小数点付きの数値）</td>
</tr>
<tr style="background-color: #f9f9f9;">
<td style="padding: 10px; border: 1px solid #ddd;"><b>train_targets_scored.csv</b></td>
<td style="padding: 10px; border: 1px solid #ddd;">学習用の正解データ（教師データ）。モデルの「目標（Y）」となるファイルです。</td>
</tr>
<tr>
<td style="padding: 10px; border: 1px solid #ddd;">└ 206種類の作用機序カラム</td>
<td style="padding: 10px; border: 1px solid #ddd;">各薬の効き目の有無を示すバイナリフラグ（0 = なし、1 = あり）。1行の中に「1」が複数存在し得るマルチラベル構造です。</td>
</tr>
<tr style="background-color: #f9f9f9;">
<td style="padding: 10px; border: 1px solid #ddd;"><b>test_features.csv</b></td>
<td style="padding: 10px; border: 1px solid #ddd;">Kaggleに提出する予測値を計算するための、本番用入力データです（正解は含まれません）。</td>
</tr>
</tbody>
</table>
<p>このコンペティションの最大のポイントは、入力データが「実験条件を表すカテゴリ変数」と「ひたすら横に並ぶ872個の純粋な数値」だけで美しく整理されている点にあります。面倒な文字列処理や画像の埋め込みが一切ないため、初期の数値データそのままでLightGBMへダイレクトに投入可能なデータ構造となっています。</p>
<div style="text-align: center; margin: 20px auto; max-width: 90%; font-size: 1.1em; font-weight: bold; color: #d9534f; border: 2px solid #d9534f; padding: 12px 15px; border-radius: 5px; box-sizing: border-box; line-height: 1.5;">予測タスク：実験条件と872個の数値データから、<br style="display: none;" class="sp-br" />206種類のターゲットフラグ（0 または 1）を同時に予測するマルチラベル分類</div>
<p>あえて高度な特徴量抽出は行わず、この数値の塊をそのままLightGBMに学習させ、206個の各ターゲットに対してどのような境界線を描くことができるのか、まずはストレートな実力を検証します。なお、オマケデータである「train_drug.csv」やスコア対象外の「train_targets_nonscored.csv」は初手では一切使用せず、完全に無視して進めます。</p>
<h3 style="color: blue;">3. 今後の流れ</h3>
<p>必要な3つの基本CSVファイルが手元に綺麗に揃いました。まずは実験条件（cp_time や cp_dose など）をLightGBMが読める形式にカテゴリ数値化する最低限の前処理だけを行い、そのまま206回ループさせてLightGBMの二値分類モデルを回すベースラインパイプラインの構築に移ります。</p>
<p style="font-style: italic; color: #666;"><br />
</p>]]></content:encoded>
    <dc:subject>【Kaggle挑戦記】</dc:subject>
    <dc:date>2026-07-04T16:24:18+09:00</dc:date>
    <dc:creator>吟遊詩人</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>吟遊詩人</dc:rights>
  </item>
  <item rdf:about="http://learnms.blog.shinobi.jp/Entry/181/">
    <link>http://learnms.blog.shinobi.jp/Entry/181/</link>
    <title>【DS検定対策】時間が生むランダムの軌跡！「確率過程」の基礎</title>
    <description>サイコロを振るような一瞬の確率ではなく、時間とともに数値がランダムに変化し続ける現象。時系列解析のベースとなる重要な概念が「確率過程」です。
1. 【 問題 】
統計学やデータサイエンスにおいて、時間の経過とともに変化する確率変数の列（またはその動的なメカニズム全体）のことを何と呼ぶでしょうか？
①...</description>
    <content:encoded><![CDATA[<p>サイコロを振るような一瞬の確率ではなく、時間とともに数値がランダムに変化し続ける現象。時系列解析のベースとなる重要な概念が「確率過程」です。</p>
<h3 style="color: blue;">1. 【 問題 】</h3>
<p>統計学やデータサイエンスにおいて、時間の経過とともに変化する確率変数の列（またはその動的なメカニズム全体）のことを何と呼ぶでしょうか？</p>
<p>① 確率過程<br />
② 決定論的過程<br />
③ 主成分分析<br />
④ 線形回帰分析</p>
<hr />
<h3 style="color: #d32f2f;">2. 【 解答 】</h3>
<div style="background-color: #eeeeee; border: 2px solid #333; padding: 15px; font-size: 1.2em; font-weight: bold; text-align: center;">正解： ① 確率過程</div>
<hr />
<h3 style="color: blue;">3. 整理：確率過程の身近な具体例</h3>
<p>確率過程は、私たちの身の回りのあらゆる「時間とともに変動するデータ」の裏側で動いています。</p>
<p>【 代表的な確率過程の例 】</p>
<div style="font-family: monospace; border: 1px solid #ccc; padding: 10px; line-height: 1.6;">・<b>事例1：ランダムウォーク（酔歩）</b><br />
コインを投げて、表が出たら右に1歩、裏が出たら左に1歩進む。これを時間とともに何度も繰り返したときの「現在地」の推移。株価の変動モデルなどの基礎にもなります。<br />
<br />
・<b>事例2：ポアソン過程</b><br />
「Webサーバーに1分間にアクセスが何件来るか」「コールセンターに何本の電話がかかってくるか」といった、ランダムに発生するイベントの時間的な積み重なり。</div>
<h3 style="color: blue;">4. 試験で狙われる最重要キーワード：「マルコフ性」と「定常性」</h3>
<p>確率過程をデータ分析（時系列解析）で扱う際、試験でも非常によく問われる2つの超重要性質があります。<br />
<br />
1. <b>マルコフ性（マルコフ過程）</b>: 「未来の確率が、<b>現在の状態だけで決まり</b>、過去の経緯には依存しない」という性質。直前の状態だけをシステムが保持していれば良いというクリーンなモデルで、実務でも広く応用されます。<br />
2. <b>定常性</b>: 時間が経っても、データ全体の「平均や分散（ばらつきの幅）が一定で変わらない」という性質。時系列予測（ARIMAモデルなど）を行うための大前提となる、タフで安定した状態のことです。</p>
<hr />
<h3 style="color: orange;">5. DS検定形式：実戦4択クイズ</h3>
<p><b>問：確率過程の中でも、「未来の予測を行うために過去のすべての履歴を遡る必要はなく、現在の状態のデータさえ分かれば次の状態の確率が完全に決定される」という性質を何と呼ぶか。</b></p>
<p>① 定常性 &nbsp; ② 独立性 &nbsp; ③ マルコフ性 &nbsp; ④ 頑健性（ロバスト性）</p>
<p><b>【 正解： ③ 】</b></p>
<p><b>解説：</b> まさに「マルコフ性（Markov property）」の定義です。これを持つ確率過程をマルコフ過程と呼び、自然言語処理の形態素解析（形態素のつながりやすさ）や、強化学習（MDP）、さらにはMCMC法（マルコフ連鎖モンテカルロ法）といった高度なデータサイエンスのアルゴリズムの土台として頻出します。</p>
<hr />
<h3 style="color: blue;">6. まとめ</h3>
<p>DS検定において「確率変数そのものが時間で変化していくプロセス」という記述が登場したら「確率過程」です。静的な統計データから、時間の流れる「時系列データ」の分析へとステップアップする際の入り口となる概念ですので、マルコフ性などの関連キーワードと結びつけて整理しておきましょう！</p>]]></content:encoded>
    <dc:subject>DS検定＞1-1-2. 統計数理</dc:subject>
    <dc:date>2026-07-04T07:25:12+09:00</dc:date>
    <dc:creator>吟遊詩人</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>吟遊詩人</dc:rights>
  </item>
  <item rdf:about="http://learnms.blog.shinobi.jp/Entry/180/">
    <link>http://learnms.blog.shinobi.jp/Entry/180/</link>
    <title>【Julia】Juliaでの条件分岐（if 〜 elseif 〜 else）の基本手順</title>
    <description>プログラムの中で「もし○○ならAの処理、そうでなければBの処理」というように、条件に応じて動きを変えたいときに使うのが条件分岐です。今回はJuliaにおける条件分岐の基本文法と、正しい記述手順について解説します。
※本記事の手順は、MacBook Air（macOS 15.7.7）の環境にて実際に動...</description>
    <content:encoded><![CDATA[<p>プログラムの中で「もし○○ならAの処理、そうでなければBの処理」というように、条件に応じて動きを変えたいときに使うのが条件分岐です。今回はJuliaにおける条件分岐の基本文法と、正しい記述手順について解説します。</p>
<p style="background-color: #f9f9f9; border-left: 4px solid #007aff; padding: 10px; font-size: 0.95em;">※本記事の手順は、<b>MacBook Air（macOS 15.7.7）</b>の環境にて実際に動作を確認したログをベースに作成しています。</p>
<h3 style="color: blue;">1. 【 概要 】</h3>
<p>Juliaの条件分岐は、`if` で始まり、最後は必ず <b>`end`</b> で締めくくるというルールがあります。また、複数の条件を重ねたい場合は、Pythonのような「elif」ではなく、<b>`elseif`</b> と一続きで記述するのがJuliaの文法的な特徴です。今回はこの構文の基本を整理します。</p>
<hr />
<h3 style="color: #d32f2f;">2. 【 基本手順 】</h3>
<div style="background-color: #eeeeee; border: 2px solid #333; padding: 15px; font-size: 1.1em; line-height: 1.8; text-align: left;"><b>(1) `if 条件式` を書き、その条件が正しい（true）ときの処理を記述する</b><br />
<b>(2) 別の条件を追加したい場合は `elseif 条件式` を使って繋げる</b><br />
<b>(3) どの条件にも合わない場合の処理を `else` の下に記述する</b><br />
<b>(4) 構文の最後には必ず `end` を記述して、条件分岐の範囲を閉じる</b></div>
<hr />
<h3 style="color: blue;">3. 整理：各ステップの具体的な処理内容</h3>
<p>Juliaの条件分岐を正しく書きこなすためのポイントを、ステップごとに具体的に見ていきましょう。</p>
<p>【 条件分岐構文の具体的な処理内容 】</p>
<div style="font-family: monospace; border: 1px solid #ccc; padding: 10px; line-height: 1.6;">・<b>ステップ(1)：if の記述</b><br />
最初の条件を指定します。Juliaでは `if` のあとに括弧 `( )` を書く必要はありません。<br />
条件式の後ろで改行し、条件が成立したときに行いたい処理を記述します。<br />
<br />
・<b>ステップ(2)＆(3)：elseif と else の追加</b><br />
2つ目以降の条件がある場合は `elseif` を使います。ここを `elif` や `else if` とスペースを空けて書くと文法エラー（SyntaxError）になるため注意しましょう。<br />
すべての条件に当てはまらなかった場合の受け皿として、最後に `else` を配置します。<br />
<br />
・<b>ステップ(4)：end で閉じる</b><br />
Juliaの構文において最重要とも言えるステップです。<br />
`if` 構文の終わりには、必ず単独で `end` を記述して「ここまでがif文の範囲である」ことをコンピュータに伝えます。</div>
<h3 style="color: blue;">4. 関連して押さえたい「Juliaの条件式における注意点（厳密な型チェック）」</h3>
<p>他のプログラミング言語（C言語やJavaScriptなど）では、数値の `1` を「正しい（true）」、`0` を「間違い（false）」とみなして `if` 文に放り込めるものもあります。</p>
<p>しかし、Juliaは型に対して非常に厳密な言語です。`if` や `elseif` の後ろに続く条件式の結果は、必ず純粋な論理値である **`true`（真）か `false`（偽）** にならなければなりません。</p>
<p>例えば、`if 1` のように数値をそのまま条件式に書くとエラー（TypeError）になります。必ず `if x == 1` や `if score &gt;= 80` のように、比較演算子を使って結果が `true` か `false` になる式を記述するようにしましょう。この厳密さが、予期せぬバグを防ぎ、Juliaの高速な実行速度を支える基盤になっています。</p>
<hr />
<h3 style="color: orange;">5. 補足：実際のターミナル操作ログ</h3>
<p>対話型環境（REPL）を起動し、いくつか条件分岐のコードを実行した際の実際の操作ログです。<br />
画面上でパッと見て構造が分かりやすいよう、短く改行を挟みながら入力しています。</p>
<div style="font-family: monospace; border: 1px solid #ccc; padding: 10px; line-height: 1.6; background-color: #2d2d2d; color: #f8f8f2;">% julia<br />
<br />
<span style="color: #6272a4;"># パターン1：最もシンプルな if 〜 end</span><br />
julia&gt; score = 85<br />
85<br />
<br />
julia&gt; if score &gt;= 80<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;println("合格です！")<br />
&nbsp; &nbsp; &nbsp; &nbsp;end<br />
合格です！<br />
<br />
<span style="color: #6272a4;"># パターン2：elseif と else を含んだ複数条件分岐</span><br />
julia&gt; temperature = 18<br />
18<br />
<br />
julia&gt; if temperature &gt;= 30<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;println("暑いです")<br />
&nbsp; &nbsp; &nbsp; &nbsp;elseif temperature &gt;= 15<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;println("快適です")<br />
&nbsp; &nbsp; &nbsp; &nbsp;else<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;println("寒いです")<br />
&nbsp; &nbsp; &nbsp; &nbsp;end<br />
快適です<br />
<br />
julia&gt; exit()<br />
%</div>
<hr />
<h3 style="color: blue;">6. まとめ</h3>
<p>Juliaにおける条件分岐の基本手順をマスターしました。`if` から始まり `elseif` で条件を繋げ、最後に `end` で美しく閉じるという一連のルールは、このあとに学ぶループ処理（for文やwhile文）など、Juliaのあらゆる構文の土台となります。型チェックの厳密さに気をつけながら、状況に応じて賢く動くプログラムを組み立てていきましょう！<br />
<br />
<br />
</p>]]></content:encoded>
    <dc:subject>【Julia】</dc:subject>
    <dc:date>2026-06-28T13:53:00+09:00</dc:date>
    <dc:creator>吟遊詩人</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>吟遊詩人</dc:rights>
  </item>
  <item rdf:about="http://learnms.blog.shinobi.jp/Entry/179/">
    <link>http://learnms.blog.shinobi.jp/Entry/179/</link>
    <title>【DS検定対策】Kaggleでも大人気！最強の直列アルゴリズム「勾配ブースティング」</title>
    <description>前のモデルが犯したミスを、次のモデルが引き継いで集中修正していく。この「リレー」のような仕組みで驚異的な予測精度を叩き出すのが、勾配ブースティングです。
1. 【 問題 】
アンサンブル学習の代表的な手法の一つであり、決定木などの弱い予測モデル（弱学習器）を一つずつ順番に（直列に）構築し、前のモデル...</description>
    <content:encoded><![CDATA[<p>前のモデルが犯したミスを、次のモデルが引き継いで集中修正していく。この「リレー」のような仕組みで驚異的な予測精度を叩き出すのが、勾配ブースティングです。</p>
<h3 style="color: blue;">1. 【 問題 】</h3>
<p>アンサンブル学習の代表的な手法の一つであり、決定木などの弱い予測モデル（弱学習器）を一つずつ順番に（直列に）構築し、前のモデルが出した予測値と正解との「誤差（勾配）」を、次のモデルが修正するように学習を繰り返すことで、最終的に非常に高い予測精度を得る機械学習アルゴリズムを何と呼ぶでしょうか？</p>
<p>① 勾配ブースティング（Gradient Boosting）<br />
② バギング（Bagging）<br />
③ 主成分分析（PCA）<br />
④ K-means法</p>
<hr />
<h3 style="color: #d32f2f;">2. 【 解答 】</h3>
<div style="background-color: #eeeeee; border: 2px solid #333; padding: 15px; font-size: 1.2em; font-weight: bold; text-align: center;">正解： ① 勾配ブースティング（Gradient Boosting）</div>
<hr />
<h3 style="color: blue;">3. 整理：バギングとブースティングの決定的違い</h3>
<p>試験で最も狙われるのは、先ほど学んだ「バギング」とのアーキテクチャ（構造）の違いです。ここを完全に区別しておきましょう。</p>
<table border="1" style="border-collapse: collapse; width: 100%; text-align: left; cellpadding: 8px;">
<tbody>
<tr style="background-color: #f2f2f2; text-align: center;"><th style="width: 20%;">手法名</th><th style="width: 40%;">学習の進め方（アーキテクチャ）</th><th style="width: 40%;">統計学的な狙い（強み）</th></tr>
<tr>
<td><b>バギング<br />
（前回）</b></td>
<td>複数のモデルを<b>「並列」</b>に同時に作り、最後に全員の平均や多数決をとる。<br />
（例：ランダムフォレスト）</td>
<td>モデルの過学習を抑え、予測の<b>「ブレ（分散・バリアンス）」を下げる</b>のが得意。</td>
</tr>
<tr>
<td><b>ブースティング<br />
★今回の主役</b></td>
<td>モデルを<b>「直列（順番）」</b>に作り、前のモデルのミス（残差）を次のモデルが追いかける。</td>
<td>モデルの表現力を高め、予測の<b>「的外れさ（バイアス）」を極限まで下げる</b>のが得意。</td>
</tr>
</tbody>
</table>
<h3 style="color: blue;">4. 実務で使われる超有名ライブラリたち</h3>
<p>「勾配ブースティング」というアルゴリズムは、実務やKaggleなどのコンペにおいて以下のような超強力な進化系ライブラリとして実装され、表形式データの予測で無双しています。<br />
<br />
・<b>XGBoost</b>: 勾配ブースティングを一躍有名にした、高速・高精度な歴史的名作。<br />
・<b>LightGBM</b>: Microsoftが開発。データのスキャン方法を工夫することで、計算速度とメモリ効率を劇的に進化させた現代の主役。</p>
<hr />
<h3 style="color: orange;">5. DS検定形式：実戦4択クイズ</h3>
<p><b>問：勾配ブースティングは非常に強力なアルゴリズムですが、学習（イテレーション）を際限なく繰り返してしまうと、どのような問題（不具合）が発生しやすくなるか。最も適切なものを一つ選べ。</b></p>
<p>① アンダーフィッティング（学習不足） &nbsp; ② 勾配消失問題 &nbsp; ③ 過学習（オーバーフィッティング） &nbsp; ④ 多重共線性（マルチコ）</p>
<p><b>【 正解： ③ 】</b></p>
<p><b>解説：</b> ブースティングはミスを執拗に追いかけて修正していくため、繰り返し回数を多くしすぎると、訓練データに含まれる細かいノイズまで完璧に合わせにいってしまい、<b>過学習（オーバーフィッティング）</b>を起こします。これを防ぐために、テスト誤差が下がらなくなった時点で学習を強制終了する「早期終了（Early Stopping）」というテクニックが実務では必須になります。</p>
<hr />
<h3 style="color: blue;">6. まとめ</h3>
<p>DS検定において「前のモデルの誤差・勾配を後ろのモデルが順番に修正して強くなる」という記述が出たら「勾配ブースティング」です。バギング（並列）との違い、そして過学習を抑えるための周辺技術とセットで頭を整理しておきましょう！</p>]]></content:encoded>
    <dc:subject>DS検定＞1-3-1. 学習モデル</dc:subject>
    <dc:date>2026-06-28T11:28:53+09:00</dc:date>
    <dc:creator>吟遊詩人</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>吟遊詩人</dc:rights>
  </item>
  <item rdf:about="http://learnms.blog.shinobi.jp/Entry/178/">
    <link>http://learnms.blog.shinobi.jp/Entry/178/</link>
    <title>【DS検定対策】JSONやXMLの正体！「半構造データ」の特徴とメリット</title>
    <description>リレーショナルデータベース（RDB）のテーブルのようにカチッと決まった枠はないけれど、テキストファイルとも違う。柔軟性と扱いやすさを両立したのが「半構造データ」です。
1. 【 問題 】
データサイエンスで扱うデータの分類において、リレーショナルデータベースのテーブルのように「すべてのデータに共通す...</description>
    <content:encoded><![CDATA[<p>リレーショナルデータベース（RDB）のテーブルのようにカチッと決まった枠はないけれど、テキストファイルとも違う。柔軟性と扱いやすさを両立したのが「半構造データ」です。</p>
<h3 style="color: blue;">1. 【 問題 】</h3>
<p>データサイエンスで扱うデータの分類において、リレーショナルデータベースのテーブルのように「すべてのデータに共通する厳密な定義（スキーマ）」は存在しないものの、各データがタグやキーなどの自己記述的な構造（スキーマ）を内部に持っているデータ形式を何と呼ぶでしょうか？</p>
<p>① 構造化データ<br />
② 半構造データ<br />
③ 非構造化データ<br />
④ メタデータ</p>
<hr />
<h3 style="color: #d32f2f;">2. 【 解答 】</h3>
<div style="background-color: #eeeeee; border: 2px solid #333; padding: 15px; font-size: 1.2em; font-weight: bold; text-align: center;">正解： ② 半構造データ</div>
<hr />
<h3 style="color: blue;">3. 整理：3つのデータ形式の違いと具体例</h3>
<p>試験や実務では、データを「構造化」「半構造」「非構造」の3つに明確にキャラクター分けして整理しておくことが鉄則です。</p>
<table border="1" style="border-collapse: collapse; width: 100%; text-align: left; cellpadding: 8px;">
<tbody>
<tr style="background-color: #f2f2f2; text-align: center;"><th style="width: 25%;">データの分類</th><th style="width: 45%;">スキーマ（構造）の特徴</th><th style="width: 30%;">具体的なデータ形式</th></tr>
<tr>
<td><b>1. 構造化データ</b></td>
<td>あらかじめ厳密に定義された枠組み（スキーマ）に従って、行と列にきれいに収まっているデータ。</td>
<td>RDB（関係データベース）のテーブル、CSV、Excelファイルなど。</td>
</tr>
<tr>
<td><b>2. 半構造データ<br />
★今回の主役</b></td>
<td>全体を一律に縛る枠はないが、データ自身の中に<b>「キー」や「タグ」などの構造（メタデータ）が含まれている</b>データ。</td>
<td><b>JSON</b>、<b>XML</b>、WebサイトのHTML、設定ファイル（YAML）など。</td>
</tr>
<tr>
<td><b>3. 非構造化データ</b></td>
<td>定型的なルールや構造を一切持たない、生のデータ。そのままではRDB等に格納して集計することが難しいデータ。</td>
<td>画像、音声、動画、自然言語のテキスト（メール本文や書籍）など。</td>
</tr>
</tbody>
</table>
<h3 style="color: blue;">4. なぜ今「半構造データ」が重要なのか？</h3>
<p>WebサービスのAPI通信や、IoTセンサーから送られてくるログデータなどは、そのほとんどが<b>JSON（半構造データ）</b>でやり取りされます。<br />
「ユーザーによって持っている属性情報（カラム）がバラバラ」「後から新しい項目を急に追加したい」といった場合でも、RDBのように `ALTER TABLE` でシステムを止めたりスキーマ変更をしたりする必要がなく、<b>データをそのまま柔軟に吸い込める（高い拡張性を持つ）</b>という点が、モダンなシステム開発やデータ収集において最大の強みとなっています。</p>
<hr />
<h3 style="color: orange;">5. DS検定形式：実戦4択クイズ</h3>
<p><b>問：半構造データの代表例である「JSON」の記述ルールに関する説明として、最も適切なものはどれか。</b></p>
<p>① データを「&lt;tag&gt;データ&lt;/tag&gt;」のように、カスタムタグで挟むことで構造を表現する。<br />
② データを「"キー" : 値」のペア（Key-Valueペア）の形式で記述し、全体を中括弧 { } や大括弧 [ ] で囲んで表現する。<br />
③ カンマ（,）で区切られたデータ行のみで構成され、階層構造を表現することはできない。<br />
④ バイナリ形式のデータであり、テキストエディタで直接中身を読んで編集することはできない。</p>
<p><b>【 正解： ② 】</b></p>
<p><b>解説：</b> まさにJSON（JavaScript Object Notation）の基本定義です。ちなみに①はXMLの説明、③はCSVの説明です。JSONはテキスト形式でありながら複雑な階層構造（ネスト）を表現できるため、半構造データの王座に君臨しています。</p>
<hr />
<h3 style="color: blue;">6. まとめ</h3>
<p>DS検定において「全体の共通スキーマはないが、個々にスキーマを持っているデータ」という非常に精緻な問題文が出たら「半構造データ（JSONやXML）」の事です。構造化データへの前処理（パース）やNoSQLデータベースの文脈でも必ずセットで問われる知識ですので、その柔軟なメリットをしっかり頭に叩き込んでおきましょう！</p>]]></content:encoded>
    <dc:subject>DS検定＞1-2-1. データ把握</dc:subject>
    <dc:date>2026-06-28T08:41:57+09:00</dc:date>
    <dc:creator>吟遊詩人</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>吟遊詩人</dc:rights>
  </item>
  <item rdf:about="http://learnms.blog.shinobi.jp/Entry/177/">
    <link>http://learnms.blog.shinobi.jp/Entry/177/</link>
    <title>【DS検定対策】並列処理でブレを抑える！アンサンブル学習の王道「バギング」</title>
    <description>機械学習モデルの予測性能を安定させる「アンサンブル学習」。その中でも、データをランダムに切り分けて複数のモデルを同時に（並列に）育てる手法がバギングです。
1. 【 問題 】
アンサンブル学習の代表的な手法の一つにおいて、元の訓練データからランダムに重複を許して一部のデータを抽出し（ブートストラップ...</description>
    <content:encoded><![CDATA[<p>機械学習モデルの予測性能を安定させる「アンサンブル学習」。その中でも、データをランダムに切り分けて複数のモデルを同時に（並列に）育てる手法がバギングです。</p>
<h3 style="color: blue;">1. 【 問題 】</h3>
<p>アンサンブル学習の代表的な手法の一つにおいて、元の訓練データからランダムに重複を許して一部のデータを抽出し（ブートストラップサンプリング）、それらを用いて複数のモデルを並列的に構築した上で、最終的な予測結果を平均（回帰の場合）や多数決（分類の場合）によって決定するアルゴリズムを何と呼ぶでしょうか？</p>
<p>① ブースティング（Boosting）<br />
② バギング（Bagging）<br />
③ スタッキング（Stacking）<br />
④ ドロップアウト（Dropout）</p>
<hr />
<h3 style="color: #d32f2f;">2. 【 解答 】</h3>
<div style="background-color: #eeeeee; border: 2px solid #333; padding: 15px; font-size: 1.2em; font-weight: bold; text-align: center;">正解： ② バギング（Bagging）</div>
<hr />
<h3 style="color: blue;">3. 整理：バギングの仕組みと最大のメリット</h3>
<p>バギング（<b>B</b>ootstrap <b>Agg</b>regat<b>ing</b>）は、その名の通り「データを小分けのバッグ（Bag）に詰めて別々に学習させる」イメージです。</p>
<p>【 バギングの3ステップ 】</p>
<div style="font-family: monospace; border: 1px solid #ccc; padding: 10px; line-height: 1.6;">1. <b>データの切り分け（並列準備）</b>：元のデータから、重複を許してランダムにデータを抜き出した「子データ」を大量に作成します。<br />
2. <b>並列構築</b>：それぞれの子データを使って、複数のモデル（決定木など）を<b>完全に独立して並列に</b>同時学習させます。<br />
3. <b>総合（アグリゲーション）</b>：テストデータに対して全員で予測を行い、最後にその「平均」や「多数決」で一つの答えを出します。</div>
<p>★ <b>ここがメリット：「バリアンス（分散・ブレ）を下げる」</b><br />
1つのモデルだけに学習させると、手元のデータに過剰に適合してしまい（以前学んだ<b>過学習</b>）、新しいデータに対して予測値が激しくブレる傾向があります。バギングは、並列に作った多くのモデルの意見を総合してマイルドに平均化するため、<b>モデルの過学習を抑え、未知のデータに対する堅牢性（ロバスト性）を劇的に高める</b>ことができます。</p>
<hr />
<h3 style="color: orange;">5. DS検定形式：実戦4択クイズ</h3>
<p><b>問：バギングの仕組みをベースに、変数の選択（特徴量の抽出）にもランダム性を加えることで、決定木同士の相関を下げて予測精度をさらに向上させた、データサイエンスで非常によく使われる代表的な機械学習アルゴリズムはどれか。</b></p>
<p>① 主成分分析 &nbsp; ② ロジスティック回帰 &nbsp; ③ ランダムフォレスト &nbsp; ④ サポートベクターマシン</p>
<p><b>【 正解： ③ 】</b></p>
<p><b>解説：</b> バギングの最も有名な応用例が<b>「ランダムフォレスト」</b>です。データだけでなく「使う変数」までモデルごとにランダムに制限することで、個々の木が全く異なる個性を持ち、それらを並列で組み合わせることで極めて強力な「森（フォレスト）」を作り上げます。</p>
<hr />
<h3 style="color: blue;">6. まとめ</h3>
<p>DS検定において「並列的にモデルを構築して平均や多数決を用いる」というキーワードが登場したら、それは「バギング」の性質を指します。実務のデータコンペ（Kaggleなど）でも、モデルのブレを抑えて手堅くスコアを安定させるための大基本となる戦略ですので、直列処理のブースティングとの違いとセットで確実にマスターしておきましょう！<br />
<br />
<br />
</p>]]></content:encoded>
    <dc:subject>DS検定＞1-3-1. 学習モデル</dc:subject>
    <dc:date>2026-06-28T08:14:26+09:00</dc:date>
    <dc:creator>吟遊詩人</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>吟遊詩人</dc:rights>
  </item>
  <item rdf:about="http://learnms.blog.shinobi.jp/Entry/176/">
    <link>http://learnms.blog.shinobi.jp/Entry/176/</link>
    <title>【DS検定対策】高次元へ飛ばしてスパッと切る！SVMと「カーネル法」の魔術</title>
    <description>直線や平面ではどうしても2つのグループに切り分けることができない複雑なデータ。それを数理の力で鮮やかに分類できるようにするのが、サポートベクターマシンの「カーネル法」です。
1. 【 問題 】
サポートベクターマシン（SVM）において、直線や平面では綺麗に分類できない「非線形分離」なデータに対し、デ...</description>
    <content:encoded><![CDATA[<p>直線や平面ではどうしても2つのグループに切り分けることができない複雑なデータ。それを数理の力で鮮やかに分類できるようにするのが、サポートベクターマシンの「カーネル法」です。</p>
<h3 style="color: blue;">1. 【 問題 】</h3>
<p>サポートベクターマシン（SVM）において、直線や平面では綺麗に分類できない「非線形分離」なデータに対し、データをより高次元の空間へと写像（マッピング）することで、線形分離（直線や平面での分割）を可能にする手法を何と呼ぶでしょうか？</p>
<p>① カーネル法<br />
② 勾配降下法<br />
③ ステップワイズ法<br />
④ 主成分分析</p>
<hr />
<h3 style="color: #d32f2f;">2. 【 解答 】</h3>
<div style="background-color: #eeeeee; border: 2px solid #333; padding: 15px; font-size: 1.2em; font-weight: bold; text-align: center;">正解： ① カーネル法</div>
<hr />
<h3 style="color: blue;">3. 図解イメージ：高次元へ飛ばすとはどういうことか？</h3>
<p>2次元（平面）ではどう頑張っても直線1本でセパレートできない「ドーナツ型」のデータを例に、カーネル法の魔法を視覚的に整理してみましょう。</p>
<table border="1" style="border-collapse: collapse; width: 100%; text-align: center; font-size: 1.1em;">
<tbody>
<tr style="background-color: #f2f2f2;"><th style="width: 50%;">元の空間（2次元平面）</th><th style="background-color: #e3f2fd; width: 50%;">カーネルトリック後の空間（3次元空間）</th></tr>
<tr>
<td style="padding: 15px; text-align: left;">・中心に「グループA（●）」がある。<br />
・その周りを「グループB（✖）」が囲んでいる。<br />
<br />
<b>【悩み】</b><br />
まっすぐな直線（線形）をどこに引いても、●と✖を1本で完全に切り離すことは不可能です。</td>
<td style="padding: 15px; text-align: left; background-color: #f1f8ff;">・カーネル関数を使い、データを「縦・横」だけでなく<b>「高さ（Z軸）」</b>の次元を追加した3次元空間にマッピングします。<br />
<br />
<b>【結果】</b><br />
中心の●だけがポコッと上に浮き上がり、周りの群が下に残るため、<b>間を「1枚の平らな紙（平面）」でスパッと水平に切り分ける（線形分離）</b>ことができるようになります！</td>
</tr>
</tbody>
</table>
<p>★ <b>ここが天才的：「カーネルトリック」</b><br />
実際に高次元のめんどくさい座標計算を真面目にやると、計算量が爆発してフリーズしてしまいます。しかし、カーネル法では<b>「高次元に移動した後のデータ同士の内積」を、元の次元のままで直接ショートカット計算できる関数（カーネル関数）</b>を使います。これを「カーネルトリック」と呼び、深層学習が登場する前の機械学習界を席巻しました。</p>
<hr />
<h3 style="color: orange;">5. DS検定形式：実戦4択クイズ</h3>
<p><b>問：サポートベクターマシン（SVM）において、データを2つのクラスに分類する境界線を決定する際、境界線に最も近い位置に存在する（境界線を支える目印となる）一部のデータ点のことを何と呼ぶか。</b></p>
<p>① サポートベクター &nbsp; ② マージン &nbsp; ③ カーネル係数 &nbsp; ④ スラック変数</p>
<p><b>【 正解： ① 】</b></p>
<p><b>解説：</b> アルゴリズムの名の由来でもある「サポートベクター」です。SVMは、すべてのデータを覚えるのではなく、境界線のギリギリのキワにいる「サポートベクター」だけを基準にして境界線を引きます。そのため、以前に学んだ<b>外れ値やノイズに対しても非常にタフ（堅牢 / ロバスト）</b>であるという、美しい繋がりを持っています。</p>
<hr />
<h3 style="color: blue;">6. まとめ</h3>
<p>DS検定において「非線形データを高次元に飛ばして線形分離する」「SVM」というキーワードが来たら「カーネル法」です。実務のデータコンペ（Kaggleなど）でも、データ構造によっては非常に強力な選択肢となるクラシックな名手法ですので、その幾何学的なイメージをしっかり押さえておきましょう！</p>]]></content:encoded>
    <dc:subject>DS検定＞1-3-1. 学習モデル</dc:subject>
    <dc:date>2026-06-28T08:12:57+09:00</dc:date>
    <dc:creator>吟遊詩人</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>吟遊詩人</dc:rights>
  </item>
  <item rdf:about="http://learnms.blog.shinobi.jp/Entry/175/">
    <link>http://learnms.blog.shinobi.jp/Entry/175/</link>
    <title>【DS検定対策】サブスクビジネスの命綱！顧客の離脱を防ぐ「チャーン分析」</title>
    <description>新規顧客を獲得するよりも、既存の顧客に長く続けてもらう方がコストを低く抑えられます。顧客がサービスを解約（離脱）する予兆をデータから予測する手法が、チャーン分析です。
1. 【 問題 】
サブスクリプション型のサービスや会員制ビジネスにおいて、顧客が契約を解除したりサービスを利用しなくなったりする「...</description>
    <content:encoded><![CDATA[<p>新規顧客を獲得するよりも、既存の顧客に長く続けてもらう方がコストを低く抑えられます。顧客がサービスを解約（離脱）する予兆をデータから予測する手法が、チャーン分析です。</p>
<h3 style="color: blue;">1. 【 問題 】</h3>
<p>サブスクリプション型のサービスや会員制ビジネスにおいて、顧客が契約を解除したりサービスを利用しなくなったりする「解約・離脱」の行動やその確率を、過去の利用履歴データ（アクセス頻度、契約期間、サポートへの問い合わせ回数など）から予測・分析する手法を何と呼ぶでしょうか？</p>
<p>① バスケット分析<br />
② チャーン分析（解約・離脱分析）<br />
③ アソシエーション分析<br />
④ ABC分析</p>
<hr />
<h3 style="color: #d32f2f;">2. 【 解答 】</h3>
<div style="background-color: #eeeeee; border: 2px solid #333; padding: 15px; font-size: 1.2em; font-weight: bold; text-align: center;">正解： ② チャーン分析（解約・離脱分析）</div>
<hr />
<h3 style="color: blue;">3. 整理：チャーン分析で「予測の手がかり」となるデータ（特徴量）</h3>
<p>顧客が解約する前には、高確率で行動に「サイン（変化）」が現れます。データサイエンティストは以下のような特徴量をモデルに投入して予測を行います。</p>
<table border="1" style="border-collapse: collapse; width: 100%; text-align: left; cellpadding: 8px;">
<tbody>
<tr style="background-color: #f2f2f2; text-align: center;"><th style="width: 30%;">データカテゴリ</th><th style="width: 70%;">解約の予兆（フラグ）となりやすい変化</th></tr>
<tr>
<td><b>1. 利用頻度の減少</b></td>
<td>「ログイン回数が先月比で急激に減った」「動画の視聴時間が短くなった」など、サービスへのエンゲージメント（熱量）の低下。</td>
</tr>
<tr>
<td><b>2. 顧客属性・契約プラン</b></td>
<td>「無料トライアル期間の終了間際」「特定のキャンペーン経由で入会した」など、元からの定着度の低さ。</td>
</tr>
<tr>
<td><b>3. ネガティブな体験</b></td>
<td>「システムの不具合（エラー）を何度も経験した」「カスタマーサポートに複数回クレームや問い合わせを入れている」など。</td>
</tr>
</tbody>
</table>
<p>★ <b>データサイエンティストの戦い方：</b><br />
これまでに学んだ「LightGBM」や「ロジスティック回帰」などの機械学習アルゴリズムを用いて、「この顧客はあと1ヶ月以内に80%の確率で解約する」といった予測を算出します。マーケティングチームはその予測を基に、解約されそうなユーザーだけに限定してクーポンを配信する、といった効率的な引き止め施策を打ちます。</p>
<hr />
<h3 style="color: orange;">5. DS検定形式：実戦4択クイズ</h3>
<p><b>問：チャーン予測モデルを構築した際、すでに解約してしまった過去のユーザーのデータだけを分析対象とし、途中でプランを変更したユーザーや現在も継続しているユーザーの行動ログを除外してモデルを評価した。このときに警戒すべき、以前の講義で学んだデータの偏り（バイアス）として最も適切なものはどれか。</b></p>
<p>① 自己選択バイアス &nbsp; ② 脱落バイアス &nbsp; ③ 出版バイアス &nbsp; ④ 確定バイアス</p>
<p><b>【 正解： ② 】</b></p>
<p><b>解説：</b> 解約という「途中の離脱（脱落）」が起きた結果のデータだけを後から見て、そのプロセス（時間の経過に伴う変化）や現役ユーザーとの違いを無視して集計すると、正しい予測ルールが作れなくなります。まさに<b>脱落バイアス</b>への配慮が必要な典型例です。</p>
<hr />
<h3 style="color: blue;">6. まとめ</h3>
<p>DS検定において「顧客の解約・離脱を予測・分析する手法」という主旨の問題が出たら、迷わず「チャーン分析」を選択しましょう。実務において、機械学習モデルが企業の売上守備を固めるための最たる応用例ですので、ビジネス理解とセットでしっかりと押さえておきましょう！</p>]]></content:encoded>
    <dc:subject>DS検定＞1-3-1. 学習モデル</dc:subject>
    <dc:date>2026-06-28T07:56:46+09:00</dc:date>
    <dc:creator>吟遊詩人</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>吟遊詩人</dc:rights>
  </item>
  <item rdf:about="http://learnms.blog.shinobi.jp/Entry/174/">
    <link>http://learnms.blog.shinobi.jp/Entry/174/</link>
    <title>【DS検定対策】因果関係を証明する黄金基準！「ランダム化比較試験（RCT）」の仕組み</title>
    <description>データ分析で最も難しいのが「因果関係」の証明です。相関関係（たまたま一緒に動いているだけ）に騙されず、本当の効果を正しく見極めるための強力な実験手法が、ランダム化比較試験（RCT）です。
1. 【 問題 】
ある施策や新薬などの「本当の効果（因果関係）」を正しく測定するため、対象者を自発的な参加では...</description>
    <content:encoded><![CDATA[<p>データ分析で最も難しいのが「因果関係」の証明です。相関関係（たまたま一緒に動いているだけ）に騙されず、本当の効果を正しく見極めるための強力な実験手法が、ランダム化比較試験（RCT）です。</p>
<h3 style="color: blue;">1. 【 問題 】</h3>
<p>ある施策や新薬などの「本当の効果（因果関係）」を正しく測定するため、対象者を自発的な参加ではなく、確率的に完全に均等な2つのグループ（介入群と対照群）にランダムに割り振って比較する実験手法を何と呼ぶでしょうか？</p>
<p>① ランダム化比較試験（RCT）<br />
② 段階的要因分析<br />
③ 後ろ向きコホート調査<br />
④ 主成分回帰分析</p>
<hr />
<h3 style="color: #d32f2f;">2. 【 解答 】</h3>
<div style="background-color: #eeeeee; border: 2px solid #333; padding: 15px; font-size: 1.2em; font-weight: bold; text-align: center;">正解： ① ランダム化比較試験（RCT）</div>
<hr />
<h3 style="color: blue;">3. 整理：なぜ「ランダム（無作為）」に分ける必要があるのか？</h3>
<p>もし、対象者が「自分で選んで」新しい施策（例えば、新しい有料の教育プログラムなど）に参加した場合、そこには以前学んだ<b>自己選択バイアス</b>が働きます。プログラムを受けた人の成績が良くても、それは「プログラムの効果」ではなく「元からやる気があった人の効果」かもしれないからです。</p>
<p>【 RCTの基本構造（2つのグループ） 】</p>
<table border="1" style="border-collapse: collapse; width: 100%; text-align: left; cellpadding: 8px;">
<tbody>
<tr style="background-color: #f2f2f2; text-align: center;"><th style="width: 30%;">グループ名</th><th style="width: 35%;">役割</th><th style="width: 35%;">具体例（新サプリの効果測定）</th></tr>
<tr>
<td><b>1. 介入群<br />
（試験群 / トリートメント）</b></td>
<td>新しく試したい施策や薬を<b>「適用する」</b>グループ。</td>
<td>ランダムに選ばれた50人。新しいサプリメントを毎日飲む。</td>
</tr>
<tr>
<td><b>2. 対照群<br />
（コントロール群）</b></td>
<td>比較対象（基準）となる、施策を<b>「適用しない」</b>グループ。</td>
<td>ランダムに選ばれた50人。見た目が同じ偽物のサプリ（プラセボ）を飲む。</td>
</tr>
</tbody>
</table>
<p>★ <b>ここがポイント：</b><br />
くじ引き（ランダム）で分けることによって、年齢・性別・健康状態・やる気の有無といった「あらゆる個体差（ノイズ）」が<b>両方のグループに均等に分散</b>されます。これにより、2つのグループに生じた最終的な差は、純粋に「施策（サプリ）の効果である」と言い切れるようになります（フィッシャーの3原則の『無作為化』の応用です）。</p>
<hr />
<h3 style="color: orange;">5. DS検定形式：実戦4択クイズ</h3>
<p><b>問：インターネットビジネスにおいて、ユーザーをランダムに2つのグループに分け、従来のWebデザイン（A案）と新しいデザイン（B案）のどちらがクリック率が高いかを検証する、実務で広く使われているRCT（ランダム化比較試験）の一種を何と呼ぶか。</b></p>
<p>① 多変量解析 &nbsp; ② A/Bテスト &nbsp; ③ 顧客ロイヤルティ分析 &nbsp; ④ クロス集計</p>
<p><b>【 正解： ② 】</b></p>
<p><b>解説：</b> 実務で毎日のように行われている「A/Bテスト」は、統計学におけるランダム化比較試験（RCT）そのものです。サーバー側でユーザーを完全にランダムに振り分けることで、時間帯やユーザーの属性による偏りを排除し、デザインの純粋な効果を測定しています。</p>
<hr />
<h3 style="color: blue;">6. まとめ</h3>
<p>DS検定において「因果関係を正しく測定するために、ランダムにグループに分けて比較する実験手法」という主旨が出たら、迷わず「ランダム化比較試験（RCT）」です。これまで学んできた『各種バイアス』を数理的にシャットアウトするための最強の防衛策として、その定義をしっかり覚えておきましょう！</p>]]></content:encoded>
    <dc:subject>DS検定＞1-1-2. 統計数理</dc:subject>
    <dc:date>2026-06-28T07:55:15+09:00</dc:date>
    <dc:creator>吟遊詩人</dc:creator>
    <dc:publisher>NINJA BLOG</dc:publisher>
    <dc:rights>吟遊詩人</dc:rights>
  </item>
</rdf:RDF>
