<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule" >
  <channel>
  <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/" />
  <description>統計、機械学習、AIを学んでいきたいと思います。 お役に立てば幸いです。</description>
  <lastBuildDate>Sun, 02 Aug 2026 02:37:38 GMT</lastBuildDate>
  <language>ja</language>
  <copyright>© Ninja Tools Inc.</copyright>
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" />

    <item>
    <title>【Qiskit】Hゲートで重ね合わせ状態を作ろう！1量子ビットの確率実験</title>
    <description>
    <![CDATA[<p>前回は、何も操作しない初期状態の量子ビットを測定すると、必ず <code>0</code>（100%）になることを確認しました。今回はついに、量子コンピュータの真骨頂である<strong>「Hゲート（アダマールゲート）」</strong>を使って、量子を「確率の波（重ね合わせ状態）」に変換する実験をしてみます！</p>
<h2 style="color: #2563eb; margin-top: 30px; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px;">1. サンプルコード</h2>
<p>量子ビットにHゲートを適用し、確率の波を作ってから測定するコードです。</p>
<pre style="background-color: #f1f5f9; padding: 15px; border-left: 5px solid #2563eb; font-family: monospace; overflow-x: auto; font-size: 0.9em;">from qiskit import QuantumCircuit
from qiskit.providers.basic_provider import BasicSimulator

# 1量子ビット、1古典ビットを準備
qc = QuantumCircuit(1, 1)

# Hゲート（アダマールゲート）を適用して「確率の波」にする
qc.h(0)

# 測定
qc.measure(0, 0)

# 回路図をテキスト形式で出力
print("--- 回路図 ---")
print(qc.draw(output='text'))

# シミュレータで1000回実行
simulator = BasicSimulator()
result = simulator.run(qc, shots=1000).result()
counts = result.get_counts()

print("\n--- 実行結果 ---")
print(f"実行結果: {counts}")
</pre>
<h2 style="color: #2563eb; margin-top: 30px; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px;">2. 実行結果と回路図</h2>
<p>上記のコードを実行すると、次のような回路図と結果が得られます。</p>
<pre style="background-color: #f1f5f9; padding: 15px; border-left: 5px solid #2563eb; font-family: monospace; overflow-x: auto; font-size: 0.9em;">--- 回路図 ---
     ┌───┐┌─┐
  q: ┤ H ├┤M├
     └───┘└╥┘
c: 1/══════╩═
           0 

--- 実行結果 ---
実行結果: {'1': 463, '0': 537}
</pre>
<h2 style="color: #2563eb; margin-top: 30px; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px;">3. 解説：ついに重ね合わせ状態ができた！</h2>
<p>実行結果を見ると、先ほどまで 100% だった <code>0</code> だけでなく、<strong><code>1</code> もほぼ半々の確率（この時は463回と537回）で出現</strong>しています！</p>
<ul>
<li><strong>Hゲートの物理的効果</strong>：極低温で静止していた純粋な <code>|0&gt;</code> の状態に対し、外部から絶妙なエネルギー（パルス）を加えることで、状態をぐるっと回転させました。</li>
<li><strong>確率の波の誕生</strong>：これにより、量子は「<code>0</code> でもあるし <code>1</code> でもある」という確率の波（重ね合わせ状態）に変換されます。</li>
<li><strong>測定による収縮</strong>：その波の状態のまま測定器にかけることで、毎回ランダムに <code>0</code> か <code>1</code> が決定されるようになります。</li>
</ul>
<div style="background-color: #eff6ff; border: 1px solid #bfdbfe; color: #1e40af; padding: 20px; border-radius: 8px; text-align: center; margin: 30px 0; font-weight: bold;">Hゲートによって量子が「波」になり、ついにランダムな確率の世界が姿を現しました！<br />
この確率の波こそが、量子コンピュータが並列計算を行える最大の原動力です。</div>]]>
    </description>
    <category>【Qiskit】</category>
    <link>http://learnms.blog.shinobi.jp/Entry/215/</link>
    <pubDate>Sun, 02 Aug 2026 02:37:38 GMT</pubDate>
    <guid isPermaLink="false">learnms.blog.shinobi.jp://entry/215</guid>
  </item>
    <item>
    <title>【Qiskit】1量子ビットの測定実験：「何もしないと0」の物理的意味</title>
    <description>
    <![CDATA[<p>量子コンピュータのコードを書くとき、初期状態の量子ビットをそのまま測定するとどうなるでしょうか？今回は、あえて操作を加えずに <code>1量子ビット</code> を定義して測定するシンプルな実験と、その裏にある物理的な意味を解説します。</p>
<h2 style="color: #2563eb; margin-top: 30px; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px;">1. サンプルコード</h2>
<p>1量子ビットと1つの古典ビットを準備し、Hゲートなどの操作を行わずにそのまま測定するコードです。</p>
<pre style="background-color: #f1f5f9; padding: 15px; border-left: 5px solid #2563eb; font-family: monospace; overflow-x: auto; font-size: 0.9em;">from qiskit import QuantumCircuit
from qiskit.providers.basic_provider import BasicSimulator

# 1量子ビット、1古典ビットを準備
qc = QuantumCircuit(1, 1)

# （操作を加えずにそのまま測定）
qc.measure(0, 0)

# シミュレータで1000回実行
simulator = BasicSimulator()
result = simulator.run(qc, shots=1000).result()
counts = result.get_counts()

print(f"実行結果: {counts}")
</pre>
<h2 style="color: #2563eb; margin-top: 30px; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px;">2. 実行結果</h2>
<p>上記のコードを実行すると、何度（何回shotsを回しても）結果は必ず以下のようになります。</p>
<pre style="background-color: #f1f5f9; padding: 15px; border-left: 5px solid #2563eb; font-family: monospace; overflow-x: auto; font-size: 0.9em;">実行結果: {'0': 1000}
</pre>
<h2 style="color: #2563eb; margin-top: 30px; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px;">3. 解説：なぜ「1」は出ないのか？</h2>
<p>「量子力学＝ランダムに確率で変わるもの」というイメージがあると <code>1</code> も混ざりそうになりますが、ここには明確な理由があります。</p>
<ul>
<li><strong>初期状態は純粋な <code>|0&gt;</code></strong>：実際のハードウェア（超伝導回路など）は極低温に冷却され、余計なエネルギーが奪われた状態（基底状態）からスタートするため、何も操作しなければ 100% 確実な <code>0</code> です。</li>
<li><strong>「波」にするにはエネルギーが必要</strong>：Hゲート（アダマールゲート）などで外部からエネルギーを加え、量子を揺らがせて「確率の波（重ね合わせ）」に変換して初めて、<code>0</code> や <code>1</code> が確率的に出現するようになります。</li>
<li><strong>測定と初期状態の違い</strong>：初期状態の <code>0</code> は静まり返った純粋な状態ですが、測定後の <code>0</code> は「波」の状態で漂っていたものが測定の衝撃で強制的に収縮させられた結果です。</li>
</ul>
<div style="background-color: #eff6ff; border: 1px solid #bfdbfe; color: #1e40af; padding: 20px; border-radius: 8px; text-align: center; margin: 30px 0; font-weight: bold;">量子は「何もしなければピシッと0」！<br />
Hゲートなどのエネルギー操作で「波」に変換して初めて、量子らしい確率の世界が始まります。</div>]]>
    </description>
    <category>【Qiskit】</category>
    <link>http://learnms.blog.shinobi.jp/Entry/214/</link>
    <pubDate>Sun, 02 Aug 2026 02:32:32 GMT</pubDate>
    <guid isPermaLink="false">learnms.blog.shinobi.jp://entry/214</guid>
  </item>
    <item>
    <title>【DS検定】AIが突然覚醒する！？「グロッキング（Grokking）」現象とは</title>
    <description>
    <![CDATA[<p>「いくら学習させてもデータを丸暗記（過学習）するだけで、一向に未知の問題が解けない&hellip;」と思っていたAIモデルが、学習ステップを極端に長く継続した結果、<b>ある瞬間に突然「データの法則性」を理解して精度100%に跳ね上がる</b>。そんな嘘のような現象が実在します。それが「グロッキング（Grokking）」です！</p>
<h3 style="color: blue;">1. 【 問題 】</h3>
<p>ディープラーニングの学習過程において、訓練データに対する精度が100%に達して過学習（丸暗記）が起きた後もさらに大量の学習（勾配降下法）を続けさせると、ある地点で突然、未知の検証データに対する精度が激増して汎化性能を獲得する現象を何と呼ぶでしょうか？</p>
<p>① グロッキング（Grokking）<br />
② カタストロフィック・フォーゲッティング（破滅的忘却）<br />
③ 勾配消失（Vanishing Gradient）<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;">正解： ① グロッキング（Grokking）</div>
<hr />
<h3 style="color: blue;">3. 整理：従来常識を覆す「過学習のその先」</h3>
<p>これまでの機械学習の教科書では「検証用データの精度が下がり始めたら（過学習が起きたら）、即座に学習をストップする（早期終了：Early Stopping）」のが鉄則とされていました。しかし、グロッキングはその常識を覆します。</p>
<p>【 グロッキング発生時の精度の変化 】</p>
<div style="font-family: monospace; border: 1px solid #ccc; padding: 12px; line-height: 1.6; background-color: #fafafa;">［学習初期〜中期］<br />
・訓練データの精度：100%（完璧に答えを暗記した！）<br />
・検証データの精度：0% 〜 低い（丸暗記なので応用が効かない＝過学習状態）<br />
<br />
&darr; <b>普通ならここで学習を止めるが、さらに過剰に学習を続ける&hellip;</b><br />
<br />
［学習終盤（何万ステップ後）］<br />
・訓練データの精度：100%<br />
・検証データの精度：<b>0% から 突然 100% に急上昇！（覚醒）</b></div>
<p>内部のネットワーク構造を解析した研究によると、過学習状態のときは「力任せの複雑な計算（丸暗記）」で解いていたモデルが、過剰な学習（正則化等の影響）を経る中で、<b>よりシンプルで本質的な数学的ルール（表現）へと再構築された結果、突然応用力が開花する</b>ことが分かっています。</p>
<hr />
<h3 style="color: blue;">4. なぜ起きる？と「創発（Emergence）」との違い</h3>
<p>AIの能力向上に関する重要用語として、「創発」との違いもセットで整理しておきましょう。</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>グロッキング<br />
（Grokking）</b></td>
<td>同一のモデル・同一のデータで<b>「学習時間（ステップ数）」を極端に長く伸ばしたとき</b>に、突然過学習を脱出してルールを「会得（理解）」する現象。</td>
</tr>
<tr>
<td><b>創発能力<br />
（Emergent Abilities）</b></td>
<td>LLM（大規模言語モデル）などで、<b>「パラメータ数（モデル規模）」や「データ量」をある閾値以上に大きくしたとき</b>に、突然推論能力や計算能力などの新機能が開花する現象。</td>
</tr>
</tbody>
</table>
<hr />
<h3 style="color: orange;">5. DS検定・AI資格形式：実戦4択クイズ</h3>
<p><b>問：ディープラーニングにおける「グロッキング（Grokking）」現象に関する記述として、最も適切なものはどれか。</b></p>
<p>① モデルのパラメータ数を小さくすればするほど発生しやすくなり、過学習を未然に防ぐための推奨テクニックである。<br />
② 訓練データへの適合（丸暗記）が完了した後、さらに学習を長時間継続することで、遅れて汎化性能（応用力）が急激に獲得される現象である。<br />
③ 新しいタスクを学習させた際に、過去に学習したタスクの記憶が完全に上書きされて消滅してしまう現象のことである。<br />
④ 勾配降下法において、学習率が大きすぎるために損失関数の値が無限大に発散してしまう現象のことである。</p>
<p><b>【 正解： ② 】</b></p>
<p><b>解説：</b> グロッキングの本質を問う問題です。<br />
②が正解です。訓練精度が上がった後、遅れて（Lagged）検証精度が激増するのが最大の特徴です。<br />
①グロッキングを起こすには膨大な計算ステップが必要となるため、実用上の過学習対策として能動的に狙うのは計算コスト的に容易ではありません。<br />
③は「破滅的忘却（Catastrophic Forgetting）」の説明です。<br />
④は「勾配爆発（Exploding Gradient）」などの説明です。</p>
<hr />
<h3 style="color: blue;">6. まとめ</h3>
<p>「過学習の限界を超えて学習し続けたら、AIが突然本質を理解して賢くなった」というグロッキングは、ディープラーニングの奥深さを象徴する非常にエキサイティングなテーマです。 「丸暗記（過学習）の後に遅れて起こる汎化性能の急上昇」というキーワードが出てきたら、迷わず「グロッキング」と回答できるようにしておきましょう！<br />
<br />
<br />
<br />
</p>]]>
    </description>
    <category>DS検定＞1-4-2.言語モデル</category>
    <link>http://learnms.blog.shinobi.jp/Entry/213/</link>
    <pubDate>Sat, 01 Aug 2026 22:11:25 GMT</pubDate>
    <guid isPermaLink="false">learnms.blog.shinobi.jp://entry/213</guid>
  </item>
    <item>
    <title>【機械学習の知識】ピアソン相関係数の概要と読み解き方</title>
    <description>
    <![CDATA[<p>2つのデータの関係性を分析する際、「一方が増えると、もう一方も増えるのか？」という関係性を数値で客観的に評価したい場面が多々あります。その最も代表的な指標が「ピアソン相関係数」です。今回はその意味と数値の読み解き方を整理します。</p>
<h3 style="color: blue;">1. 【 概要 】</h3>
<p>ピアソン相関係数とは、2つの変数が「どれだけ同じように変化するか（直線的な関係性があるか）」を表す統計指標です。</p>
<p>例えば、「気温とアイスクリームの売上」のように、一方が上がればもう一方も上がる関係にあるのか、あるいは全く無関係なのかを「数値」として客観的に判断するために用いられます。</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) 相関係数は、必ず `-1` から `1` までの値を取る</b><br />
<b>(2) 数値の「絶対値」が大きいほど、相関が強い（連動性が高い）</b><br />
<b>(3) 正の値（プラス）は、一方が大きくなれば他方も大きくなる「正の相関」</b><br />
<b>(4) 負の値（マイナス）は、一方が大きくなれば他方は小さくなる「負の相関」</b><br />
<b>(5) `0` に近い値は、2つの変数に関連性が見られない「無相関」</b></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)：正の相関（値が 0 より大きく 1 に近い）</b><br />
一方が増えると、もう一方も同じように増える関係です。<br />
例：「気温」と「エアコンの電気代」、「勉強時間」と「テストの点数」など。<br />
<br />
・<b>状態(2)：負の相関（値が 0 より小さく -1 に近い）</b><br />
一方が増えると、もう一方は逆に減っていく関係です。<br />
例：「商品の価格」と「売上数量」、「標高」と「気温」など。<br />
<br />
・<b>状態(3)：無相関（値が 0 に近い）</b><br />
一方の変化が、もう一方に全く影響を与えていない状態です。<br />
例：「身長」と「テストの点数」、「靴のサイズ」と「年収」など。<br />
<br />
・<b>状態(4)：絶対値と強さの目安</b><br />
「0.7以上（または -0.7以下）」＝ 強い相関がある<br />
「0.4〜0.7（または -0.4〜-0.7）」＝ 中程度の相関がある<br />
「0.2以下（または -0.2以上）」＝ ほとんど相関がない</div>
<h3 style="color: blue;">4. 関連して押さえたい「相関関係と因果関係の決定的な違い」</h3>
<p>データ分析の現場で最も注意しなければならないのが、<b>「相関関係があるからといって、因果関係があるとは限らない」</b>という点です。</p>
<p>例えば、「アイスクリームの売上」と「水難事故の件数」のピアソン相関係数を計算すると、強い『正の相関（プラスの値）』が出ます。</p>
<p>しかし、「アイスを買うと溺れる（因果関係）」わけではありません。実際には「夏場で気温が高い」という第3の要因（潜伏変数）が、両方を同時に増加させているだけです。</p>
<p>相関係数はあくまで「数値が連動して動いているか」を示しているに過ぎず、「どちらかが原因で、どちらかが結果か」までは証明してくれません。分析の際は、数値だけで判断せず背景のロジックをしっかり考える必要があります。</p>
<hr />
<h3 style="color: orange;">5. 補足：Python（Pandas）での相関係数の出し方</h3>
<p>実際のデータ分析（Python）で、ピアソン相関係数を一瞬で算出するコードの例です。<br />
Pandasを使えば、全項目同士の相関係数を表（相関行列）にして確認できます。</p>
<div style="font-family: monospace; border: 1px solid #ccc; padding: 10px; line-height: 1.6; background-color: #f5f5f5; color: #222222;"><span style="color: #666666;"># 2つの列のピアソン相関係数を計算（デフォルトがピアソンです）</span><br />
df['気温'].corr(df['売上'])<br />
<br />
<span style="color: #666666;"># データフレーム全体の相関行列を出力</span><br />
df.corr()<br />
<br />
<span style="color: #666666;"># 出力イメージ</span><br />
<span style="color: #666666;"># 気温と売上の相関係数が「0.85」なら、強い正の相関！</span></div>
<hr />
<h3 style="color: blue;">6. まとめ</h3>
<p>データマイニングや機械学習の前処理で頻繁に使われる「ピアソン相関係数」。-1から1までの範囲をとり、プラスなら正の相関（共に増える）、マイナスなら負の相関（一方が増えると一方は減る）、絶対値が1に近いほど強い連動性を示すという基本ルールを押さえておきましょう。因果関係との違いに注意しながら、データ間の隠れたつながりを見つける強力な武器として活用してください！<br />
<br />
<br />
</p>]]>
    </description>
    <category>【機械学習の知識】</category>
    <link>http://learnms.blog.shinobi.jp/Entry/212/</link>
    <pubDate>Fri, 31 Jul 2026 22:41:45 GMT</pubDate>
    <guid isPermaLink="false">learnms.blog.shinobi.jp://entry/212</guid>
  </item>
    <item>
    <title>【DS検定対策】「相関」と「因果」は違う！統計的因果推論の基本</title>
    <description>
    <![CDATA[<p>データ分析で最も重要な問いの一つが、「その結果は本当にその施策が原因で起きたのか？」ということです。データ同士の「単なる相関関係」と「本当の因果関係」を明確に見極め、正しい意思決定を行うための手法、それが「統計的因果推論」です。</p>
<h3 style="color: blue;">1. 【 問題 】</h3>
<p>データ分析において、変数間の単純な関連性（相関関係）だけでなく、交錯因子などのバイアスを取り除いて「ある原因（介入）が特定の結果を引き起こしたか」という因果関係を統計的に推論する枠組みを何と呼ぶでしょうか？</p>
<p>① 統計的因果推論（Causal Inference）<br />
② 主成分分析（PCA）<br />
③ アソシエーション分析<br />
④ 因子分析（Factor Analysis）</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;">正解： ① 統計的因果推論（Causal Inference）</div>
<hr />
<h3 style="color: blue;">3. 整理：「相関関係」と「因果関係」の決定的な違い</h3>
<p>2つのデータの動きが似ているからといって、そこに原因と結果の関係があるとは限りません。</p>
<p>【 よくある間違い：擬似相関（見せかけの相関） 】</p>
<div style="font-family: monospace; border: 1px solid #ccc; padding: 12px; line-height: 1.6; background-color: #fafafa;">「アイスクリームの売上が増えると、水難事故件数が増える」<br />
<br />
・相関関係：あり（アイスが売れる時期に、水難事故も増えている）<br />
・因果関係：<b>なし</b>（アイスを食べたから事故が起きたわけではない）<br />
<br />
★ <b>真の原因（交錯因子）：気温の上昇（夏）</b><br />
「気温が高い」から「アイスが売れる」し、同時に「海や川で泳ぐ人が増えて事故が増える」だけです。この気温のような第3の変数を<b>「交錯因子（錯乱因子）」</b>と呼びます。</div>
<hr />
<h3 style="color: blue;">4. 試験に出る！因果推論の主なアプローチ</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>ランダム化比較試験<br />
（RCT / A/Bテスト）</b></td>
<td>対象を無作為（ランダム）に2グループに分け、片方だけに施策を行う。<b>因果推論の黄金律（最も信頼性が高い）</b>とされる手法。</td>
</tr>
<tr>
<td><b>傾向スコアマッチング<br />
（Propensity Score）</b></td>
<td>ランダム分けができない過去データ（観察データ）において、似た属性（背景）を持つデータ同士をペアにして比較し、バイアスを減らす手法。</td>
</tr>
<tr>
<td><b>反実仮想モデル<br />
（Counterfactual）</b></td>
<td>「もしこの施策を行わなかったら（もし〜だったら）どうなっていたか？」という<b>「起こらなかった世界の IF 」</b>を推測して効果を比較する考え方。</td>
</tr>
</tbody>
</table>
<hr />
<h3 style="color: orange;">5. DS検定形式：実戦4択クイズ</h3>
<p><b>問：統計的因果推論およびデータ分析における「相関」と「因果」に関する記述として、最も適切なものはどれか。</b></p>
<p>① 2つの変数間に高い相関関係（相関係数が 0.9 以上）が認められれば、必ずそこには因果関係が存在すると判定してよい。<br />
② 交錯因子（第3の変数）が存在する場合、実際には因果関係がない2つの変数の間に、あたかも因果関係があるかのような相関が生じることがある。<br />
③ ランダム化比較試験（RCT）を行うと交錯因子の影響が極めて大きくなるため、観察データを用いた回帰分析の方が因果推論に適している。<br />
④ 「あるキャンペーンを実施した結果、売上が上がった」ことを証明するには、キャンペーン期間中の売上データのみを集計すれば十分である。</p>
<p><b>【 正解： ② 】</b></p>
<p><b>解説：</b> 因果推論の基本思想を問う本質的な問題です。<br />
②が正解です。交錯因子の存在によって生じる見せかけの相関を「擬似相関」と呼びます。<br />
①相関係数がどれだけ高くても、擬似相関の可能性があるため因果関係の証明にはなりません。<br />
③RCTはランダム割り当てによって交錯因子を均等化できるため、因果推論において最も理想的な手法です。<br />
④キャンペーンを実施しなかった場合（反実仮想）の売上と比較しなければ、単なる季節変動などの影響と区別できません。</p>
<hr />
<h3 style="color: blue;">6. まとめ</h3>
<p>DS検定や実務において、「単なる相関と因果の違い」「交錯因子の除去」「A/Bテストや傾向スコア」といったテーマが出たら、正解は「統計的因果推論」に関連する知識です。 データを扱うデータサイエンティストにとって、「相関関係＝因果関係ではない」という視点は最も重要な倫理・スキルの一つですので、しっかりと押さえておきましょう！<br />
<br />
<br />
</p>]]>
    </description>
    <category>DS検定＞1-1-2. 統計数理</category>
    <link>http://learnms.blog.shinobi.jp/Entry/211/</link>
    <pubDate>Sun, 26 Jul 2026 12:52:55 GMT</pubDate>
    <guid isPermaLink="false">learnms.blog.shinobi.jp://entry/211</guid>
  </item>
    <item>
    <title>【DS検定対策】評価のブレを防ぐ！「交差検証（クロスバリデーション）」の仕組み</title>
    <description>
    <![CDATA[<p>機械学習モデルの精度を測る際、データを1回だけ分ける「ホールドアウト法」では「偶然のデータの偏り（分け方の運）」で評価が変わってしまうリスクがありました。その弱点を解決する標準的な評価手法が「交差検証（クロスバリデーション）」です。仕組みと特徴を整理しましょう！</p>
<h3 style="color: blue;">1. 【 問題 】</h3>
<p>手元にある全データを n 等分（または k 等分）に分割し、「n-1 組のデータで学習し、残りの 1 組でテスト（検証）」という処理を、テスト役を順番に交代しながら n 回繰り返して平均精度を出す評価手法は何でしょうか？</p>
<p>① ホールドアウト法<br />
② 交差検証（クロスバリデーション / k-fold Cross Validation）<br />
③ ブートストラップ法<br />
④ 主成分分析（PCA）</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;">正解： ② 交差検証（クロスバリデーション / k-fold Cross Validation）</div>
<hr />
<h3 style="color: blue;">3. 整理：交差検証のローテーション構造（k=4 の例）</h3>
<p>交差検証では、全データを「捨ててしまうデータ」を作らず、<b>すべてのデータを1回ずつテスト用として活用</b>します。</p>
<p>【 4分割交差検証（4-fold Cross Validation）の流れ 】</p>
<div style="font-family: monospace; border: 1px solid #ccc; padding: 12px; line-height: 1.6; background-color: #fafafa;">データを［グループA］［グループB］［グループC］［グループD］の4つに分割<br />
<br />
・1回目： B, C, D で学習 ＝＞ <b>A でテスト</b> （精度1を計算）<br />
・2回目： A, C, D で学習 ＝＞ <b>B でテスト</b> （精度2を計算）<br />
・3回目： A, B, D で学習 ＝＞ <b>C でテスト</b> （精度3を計算）<br />
・4回目： A, B, C で学習 ＝＞ <b>D でテスト</b> （精度4を計算）<br />
<br />
<b>★ 最終評価 ＝ 精度1 〜 精度4 の平均値</b></div>
<p>全データの評価結果を平均化するため、特定データの偏りに影響されにくく、<b>信頼性の高い「汎化性能（未知データへの強さ）」を測定できます。</b></p>
<hr />
<h3 style="color: blue;">4. 試験で問われる発展手法・派生パターン</h3>
<p>DS検定やG検定では、通常の交差検証に加えて以下の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: 35%;">派生手法名</th><th style="width: 65%;">特徴・使いどころ</th></tr>
<tr>
<td><b>層化 k 分割交差検証<br />
（Stratified k-fold）</b></td>
<td>分類問題で正解ラベルの比率（例：病気 5%：健康 95%）が偏っている場合、<b>各分割グループ内のラベル比率が元のデータと同じになるように分割</b>して交差検証を行う手法。分類問題の超定番。</td>
</tr>
<tr>
<td><b>リーブワンアウト交差検証<br />
（LOOCV：Leave-One-Out）</b></td>
<td>データ数が極めて少ない場合、<b>「1件だけをテスト用にし、残り全件で学習」</b>する作業をデータ件数（N回）分繰り返す手法。計算量は極めて大きいが、データを極限まで無駄にしない。</td>
</tr>
</tbody>
</table>
<hr />
<h3 style="color: orange;">5. DS検定形式：実戦4択クイズ</h3>
<p><b>問：交差検証（クロスバリデーション）に関する記述として、最も適切なものはどれか。</b></p>
<p>① 分割数 k の値を大きく（例：k=5 から k=10 へ）するほど、モデルの学習（トレーニング）回数が減るため、全体の計算時間は短くなる。<br />
② 交差検証を行う主な目的は、学習データの件数を増やすことで最終的なモデルのパラメータを直接更新・強化することである。<br />
③ ホールドアウト法と比較して、特定のデータ分割の偏りによる評価精度のばらつき（影響）を抑え、より客観的なモデル性能の推計が可能になる。<br />
④ 時系列データ（株価や売上予測など）に対して交差検証を行う場合、過去と未来のデータを無作為（ランダム）に混ぜ合わせて分割することが推奨される。</p>
<p><b>【 正解： ③ 】</b></p>
<p><b>解説：</b> 交差検証のメリット・注意点を問う標準問題です。<br />
③が正解です。評価の平均をとることでデータの偏りを打ち消します。<br />
①分割数 k を大きくすると学習回数（k回）が増えるため、計算時間は長くなります。<br />
②交差検証はあくまで「モデル性能の評価・パラメータチューニングの手元比較」のための手法であり、モデルそのものを強化する手順ではありません。<br />
④時系列データで未来のデータを過去の学習に混ぜ込むと「未来のカンニング（データリーク）」になるため、時間の順序を保った特殊な交差検証（TimeSeriesSplit）を使う必要があります。</p>
<hr />
<h3 style="color: blue;">6. まとめ</h3>
<p>DS検定において「データを n 個に分け、入れ替えて n 回テスト」「平均で評価」「信頼性が高い」といったフレーズが出たら、迷わず「交差検証（クロスバリデーション）」を選びましょう！ 前回の「ホールドアウト法」との違いや、データ偏りを防ぐ「層化 k 分割（Stratified k-fold）」とあわせてセットで得点源にしておきましょう！<br />
<br />
<br />
</p>]]>
    </description>
    <category>DS検定＞1-3-1. 学習モデル</category>
    <link>http://learnms.blog.shinobi.jp/Entry/210/</link>
    <pubDate>Sat, 25 Jul 2026 23:08:51 GMT</pubDate>
    <guid isPermaLink="false">learnms.blog.shinobi.jp://entry/210</guid>
  </item>
    <item>
    <title>【DS検定対策】モデル評価の基本！「ホールドアウト法」の仕組みと注意点</title>
    <description>
    <![CDATA[<p>機械学習モデルを作った際、そのモデルが「未知のデータに対しても正しく予測できるか（汎化性能）」を評価することは必須です。その最も基本的で直感的な手法が「ホールドアウト法」です。仕組みと特徴を整理しましょう！</p>
<h3 style="color: blue;">1. 【 問題 】</h3>
<p>手元にある全データを「学習用（トレーニングデータ）」と「検証用（テストデータ）」の2つに分割し、学習用データのみでモデルを構築した後、検証用データを用いてそのモデルの予測性能を評価する手法を何と呼ぶでしょうか？</p>
<p>① ホールドアウト法<br />
② k分割交差検証（k-fold Cross Validation）<br />
③ リーブワンアウト法（LOOCV）<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つに分けるのでしょうか？それは、<b>「学習に使ったデータをそのままテストに使っても、単に答えを暗記しているだけ（過学習）かどうかが分からないから」</b>です。</p>
<p>【 ホールドアウト法の分割イメージ 】</p>
<div style="font-family: monospace; border: 1px solid #ccc; padding: 12px; line-height: 1.6; background-color: #fafafa;">［ 手元にあるすべてのデータ ］<br />
├─ <b>学習用データ（Train Data）： 70%〜80%</b><br />
│ &rarr; モデルのパラメータを学習させるために使う<br />
│<br />
└─ <b>検証用データ（Test Data）： 20%〜30%</b><br />
&rarr; 学習には一切使わず、「初見の問題」として精度チェックに使う</div>
<p>★ <b>分割時の注意点（層化抽出：Stratified Sampling）：</b><br />
分類問題などで、データ内のクラス割合（例：病気あり1%・なし99%）が偏っている場合、ランダムに分けるとテストデータに病気データが1件も入らないリスクがあります。そのため、<b>「元のデータのクラス比率を維持したまま2つに分ける（層化分割）」</b>のが実務の鉄則です。</p>
<hr />
<h3 style="color: blue;">4. ホールドアウト法の「メリット」と「デメリット」</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>ホールドアウト法</b></td>
<td>データ分割と学習が<b>1回で済むため、計算時間が短くシンプル</b>。大規模データ（ディープラーニング等）に向く。</td>
<td>データの「分かれ目（運）」によって評価結果が偶然ブレやすい。<b>データ量が少ない場合は不向き</b>。</td>
</tr>
<tr>
<td><b>k分割交差検証<br />
（Cross Validation）</b></td>
<td>データをk個に分け、テスト役を交代しながらk回評価して平均をとるため、<b>評価が安定し信頼性が高い</b>。</td>
<td>モデルの学習をk回繰り返すため、<b>計算時間がk倍かかる</b>。</td>
</tr>
</tbody>
</table>
<hr />
<h3 style="color: orange;">5. DS検定形式：実戦4択クイズ</h3>
<p><b>問：機械学習モデルの評価手法に関する記述として、最も適切なものはどれか。</b></p>
<p>① ホールドアウト法は、手元にあるデータを学習用と検証用に分けるため、学習用データとして使えるデータ量が全データ量よりも少なくなってしまう欠点がある。<br />
② ホールドアウト法では、検証用データを一度学習に組み込んで精度を確かめた後、再度学習用データに戻して最終モデルを作成するのが一般的である。<br />
③ データ量が極めて少ない場合、交差検証よりもホールドアウト法を採用した方がモデルの評価精度が安定する。<br />
④ ホールドアウト法において、モデルの精度が一番高くなるまで学習用と検証用の分割パターンを何度も変更して評価を繰り返す操作は、正しい評価手順である。</p>
<p><b>【 正解： ① 】</b></p>
<p><b>解説：</b> ホールドアウト法の本質的な特徴・弱点を問う問題です。<br />
①が正解です。データをテスト用にプールしておく分、学習に使えるデータが減ってしまうのがホールドアウト法のデメリットです。<br />
②検証用データは学習に絶対混ぜてはいけません（データリークの原因になります）。<br />
③データ量が少ない場合は、評価が安定する「交差検証（Cross Validation）」を使うべきです。<br />
④分割パターンを変えて一番良い結果を選ぶ行為は「テストデータに対する過学習」を引き起こすためNGです。</p>
<hr />
<h3 style="color: blue;">6. まとめ</h3>
<p>DS検定やG検定において「データを学習用と検証用の2つに分ける」「処理が高速だがデータ偏りの影響を受けやすい」というキーワードが出たら、正解は「ホールドアウト法」です。 データ量が十分に大きいときはホールドアウト法、データが少ないときは交差検証（クロスバリデーション）、という使い分けもセットで押さえておきましょう！</p>]]>
    </description>
    <category>DS検定＞1-3-1. 学習モデル</category>
    <link>http://learnms.blog.shinobi.jp/Entry/209/</link>
    <pubDate>Sat, 25 Jul 2026 23:05:05 GMT</pubDate>
    <guid isPermaLink="false">learnms.blog.shinobi.jp://entry/209</guid>
  </item>
    <item>
    <title>【Qiskit】CNOTゲートの仕組みを徹底検証！制御ビットで対象が変わる動きを確認しよう</title>
    <description>
    <![CDATA[<p>前回までに、1量子ビットでの重ね合わせと測定、そしてQiskit標準シミュレータ（<code>BasicSimulator</code>）を使った実行方法を学びました。</p>
<p>今回はステップアップして、**2量子ビットを使った量子プログラミングの基本パーツ「CNOTゲート（制御NOTゲート）」**の動きを検証してみたいと思います。CNOTゲートが「条件によって標的を反転させる」という挙動を、実際のコードとシミュレーション結果から確かめてみましょう。</p>
<h2 style="color: #2563eb; margin-top: 30px; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px;">1. CNOTゲートとは？</h2>
<p>CNOTゲートは、量子コンピュータにおける「もし〜なら〜する（if文）」のような役割を持つ超重要パーツです。2つの量子ビットを使い、次のようなルールで動作します。</p>
<ul>
<li><strong>制御ビット（Control）</strong>：条件を決める側の量子ビットです。</li>
<li><strong>標的ビット（Target）</strong>：制御ビットの状態に応じて値が反転するかどうか変わる側の量子ビットです。</li>
<li><strong>制御が「0」の場合</strong>：標的ビットは何もしません（そのまま）。</li>
<li><strong>制御が「1」の場合</strong>：標的ビットの値を反転（0なら1に、1なら0に）させます。</li>
</ul>
<h2 style="color: #2563eb; margin-top: 30px; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px;">2. 比較検証のサンプルコード</h2>
<p>制御ビットが「0」の場合と「1」の場合で、CNOTゲートを通った後に標的ビットがどう変わるのかを比較するコードを作成します。</p>
<pre style="background-color: #f1f5f9; padding: 15px; border-left: 5px solid #2563eb; font-family: monospace; overflow-x: auto; font-size: 0.9em;">from qiskit import QuantumCircuit
from qiskit.providers.basic_provider import BasicSimulator

simulator = BasicSimulator()

print("=== パターンA: 制御ビットが「0」の場合 ===")
qc_a = QuantumCircuit(2, 2)
# 制御ビット(0番目)は何もしない（初期状態の「0」のまま）
qc_a.cx(0, 1)  # CNOTゲート適用（制御=0, 標的=1）
qc_a.measure(0, 0)
qc_a.measure(1, 1)

result_a = simulator.run(qc_a, shots=1000).result()
print(f"回路図:\n{qc_a.draw(output='text')}")
print(f"実行結果: {result_a.get_counts()}\n")

print("=== パターンB: 制御ビットが「1」の場合 ===")
qc_b = QuantumCircuit(2, 2)
qc_b.x(0)      # Xゲートで制御ビット(0番目)を「1」にする
qc_b.cx(0, 1)  # CNOTゲート適用（制御=0, 標的=1）
qc_b.measure(0, 0)
qc_b.measure(1, 1)

result_b = simulator.run(qc_b, shots=1000).result()
print(f"回路図:\n{qc_b.draw(output='text')}")
print(f"実行結果: {result_b.get_counts()}")
</pre>
<h2 style="color: #2563eb; margin-top: 30px; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px;">3. 実際の実行結果と回路図</h2>
<p>ターミナルでスクリプトを実行すると、それぞれのパターンで以下のような回路図と実行結果が得られます。</p>
<pre style="background-color: #f1f5f9; padding: 15px; border-left: 5px solid #2563eb; font-family: monospace; overflow-x: auto; font-size: 0.9em;">=== パターンA: 制御ビットが「0」の場合 ===
回路図:
         ┌─┐   
q_0: ──■──┤M├───
     ┌─┴─┐└╥┘┌─┐
q_1: ┤ X ├─╫─┤M├
     └───┘ ║ └╥┘
c: 2/══════╩══╩═
           0  1 
実行結果: {'00': 1000}

=== パターンB: 制御ビットが「1」の場合 ===
回路図:
     ┌───┐    ┌─┐   
q_0: ┤ X ├──■──┤M├───
     └───┘┌─┴─┐└╥┘┌─┐
q_1: ─────┤ X ├─╫─┤M├
         └───┘ ║ └╥┘
c: 2/═══════════╩══╩═
                0  1 
実行結果: {'11': 1000}
</pre>
<h2 style="color: #2563eb; margin-top: 30px; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px;">4. 結果の解説：CNOTゲートの動き</h2>
<p>得られた結果を整理してみましょう。</p>
<ul>
<li><strong>パターンA（制御が「0」）</strong>：制御ビットが <code>0</code> のため、標的ビットは反転せずそのまま <code>0</code> を維持しました。そのため、結果はすべて <strong><code>00</code></strong>（1,000回）になっています。</li>
<li><strong>パターンB（制御が「1」）</strong>：Xゲートで制御ビットを <code>1</code> にしたため、CNOTゲートが働いて標的ビットが反転（<code>0</code> から <code>1</code> へ）しました。その結果、両方とも <code>1</code> になり、結果はすべて <strong><code>11</code></strong>（1,000回）になっています。</li>
</ul>
<div style="background-color: #eff6ff; border: 1px solid #bfdbfe; color: #1e40af; padding: 20px; border-radius: 8px; text-align: center; margin: 30px 0; font-weight: bold;">CNOTゲートの「条件分岐」動作を完全確認！<br />
制御ビットの値（0か1か）によって、もう一方の標的ビットの運命が変わる様子がシミュレーションでハッキリと証明できました。</div>
<h2 style="color: #2563eb; margin-top: 30px; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px;">まとめ</h2>
<p>今回は、2量子ビットの基本操作であるCNOTゲートの挙動をコードとシミュレーションで確認しました。制御ビットの状態に応じて標的が変わる仕組みがよく分かったと思います。このCNOTゲートの組み合わせこそが、量子もつれ（エンタングルメント）を生み出す鍵になります！<br />
<br />
<br />
</p>]]>
    </description>
    <category>【Qiskit】</category>
    <link>http://learnms.blog.shinobi.jp/Entry/208/</link>
    <pubDate>Sat, 25 Jul 2026 08:37:54 GMT</pubDate>
    <guid isPermaLink="false">learnms.blog.shinobi.jp://entry/208</guid>
  </item>
    <item>
    <title>【DS検定対策】見た目に騙されるな！「多項式回帰」が線形回帰と呼ばれる理由</title>
    <description>
    <![CDATA[<p>データ分析の試験で最も多くの人が引っかかる超・トラップ問題があります。それが「説明変数を2乗や3乗（冪乗）したモデルは、線形回帰か？非線形回帰か？」という問いです。結論から言うと、これは<b>「線形回帰」</b>に分類されます！なぜそうなるのか、理由をスッキリ整理しましょう。</p>
<h3 style="color: blue;">1. 【 問題 】</h3>
<p>説明変数 x の2乗や3乗といった冪乗（多項式）を含む回帰モデル「 y = b0 + b1*x + b2*(x^2) 」に関する説明として、最も適切なものはどれか。</p>
<p>① グラフを描くと曲線になるため、「非線形回帰モデル」に分類される。<br />
② 説明変数 x に対して曲線の関係を表すが、推定するパラメータ（係数 b）に関して一次式であるため、「線形回帰モデル」に分類される。<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;">正解： ② 説明変数 x に対して曲線の関係を表すが、推定するパラメータ（係数 b）に関して一次式であるため、「線形回帰モデル」に分類される。</div>
<hr />
<h3 style="color: blue;">3. 整理：なぜ曲線なのに「線形（Linear）」なのか？</h3>
<p>「線形＝まっすぐな直線」というイメージが強いため混乱しがちですが、統計学における「線形」の意味を正しく理解することがポイントです。</p>
<p>【 「線形」の定義の違い 】</p>
<div style="font-family: monospace; border: 1px solid #ccc; padding: 12px; line-height: 1.6; background-color: #fafafa;">・<b>変数の形（x）で見ると</b>：<br />
x^2 や x^3 が入っているため、グラフを描くと綺麗な「曲線」を描きます。<br />
<br />
・<b>パラメータの形（係数 b）で見ると</b>：<br />
係数 b0, b1, b2 はすべて「1乗（掛け算・割り算・指数になっていない）」で並んでいます。<br />
<br />
★<b>決定的な結論：</b><br />
統計学における「線形回帰」とは、<b>「パラメータ（係数 b）に関して線形（1乗の足し算）であること」</b>を指します！<br />
そのため、x^2 を「新しい別の変数 z」と置き換えれば、単なる普通の「重回帰分析」と全く同じ形になるため、<b>「線形回帰」</b>の一種（多項式回帰）として扱われるのです。</div>
<hr />
<h3 style="color: blue;">4. 本物の「非線形回帰」とはどんなもの？</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: 25%;">分類</th><th style="width: 45%;">モデルの構造（イメージ）</th><th style="width: 30%;">特徴</th></tr>
<tr>
<td><b>線形回帰<br />
（多項式回帰含む）</b></td>
<td>y = b0 + b1*x + b2*(<b>x^2</b>)<br />
※パラメータ b はすべて1乗の足し算</td>
<td>x が何乗になっていても、パラメータ b が1乗なら線形回帰。<b>最小二乗法で一発で解ける。</b></td>
</tr>
<tr>
<td><b>非線形回帰</b></td>
<td>y = b0 * <b>e^(b1 * x)</b><br />
※パラメータ b が指数の肩に乗っているなど</td>
<td>パラメータ自体が指数や複雑な関数の内側に入っている。<b>最小二乗法では解けず、繰返し計算（数値最適化）が必要。</b></td>
</tr>
</tbody>
</table>
<hr />
<h3 style="color: orange;">5. DS検定形式：実戦4択クイズ</h3>
<p><b>問：多項式回帰（説明変数に2乗や3乗の項を含める線形回帰）を実務で適用する際の注意点として、最も適切なものはどれか。</b></p>
<p>① 次数（2乗、3乗、4乗&hellip;）を大きく増やしていくほど、モデルの表現力が高まり、未知のデータに対する予測精度（汎化性能）は常に向上する。<br />
② 次数を大きくしすぎると、学習データに過剰に適合してしまい、「過学習（オーバーフィッティング）」を起こしやすくなる。<br />
③ 多項式回帰は線形モデルであるため、どれだけ次数を増やしても過学習を起こすことは構造上あり得ない。<br />
④ 説明変数の2乗の項を追加すると、入力データの次元数が減少し、モデルが単純化される。</p>
<p><b>【 正解： ② 】</b></p>
<p><b>解説：</b> 多項式回帰の実務的な注意点を問う良問です。<br />
次数をどんどん大きくしていく（例：10乗、20乗&hellip;）と、モデルのグラフは学習データの全ポイントを無理やり通ろうとしてグニャグニャに曲がりくねり、<b>「過学習（オーバーフィッティング）」</b>を起こします。<br />
実務では、適切な次数を選ぶか、Lasso・Ridgeなどの正則化手法と組み合わせて過学習を防ぐ必要があります。</p>
<hr />
<h3 style="color: blue;">6. まとめ</h3>
<p>DS検定や統計検定において、「説明変数が冪乗（xの2乗など）になっているモデルは何か？」と聞かれたら、罠にハマらず<b>「線形回帰（多項式回帰）」</b>と答えられるようにしておきましょう！ 「線形か非線形かは、x の形ではなく、パラメータ（係数）の形で決まる」という本質を押さえておけば、どんな引っかけ問題も怖くありません！</p>]]>
    </description>
    <category>DS検定＞1-3-1. 学習モデル</category>
    <link>http://learnms.blog.shinobi.jp/Entry/207/</link>
    <pubDate>Fri, 24 Jul 2026 22:40:12 GMT</pubDate>
    <guid isPermaLink="false">learnms.blog.shinobi.jp://entry/207</guid>
  </item>
    <item>
    <title>【Qiskit】追加インストールなし！標準シミュレータで量子回路を実行してみよう&lt;/h1&gt;</title>
    <description>
    <![CDATA[<p>前回までに、Hゲートを使った「重ね合わせ」の作り方と、結果を取り出すための「測定（Measure）」の仕組み、そして回路図の見方を学びました。</p>
<p>今回は、追加のパッケージ（<code>qiskit-aer</code>など）をわざわざインストールしなくても使えるQiskit標準のシミュレータ（<code>BasicSimulator</code>）を利用して、実際に回路を動かし、確率的な計算結果を取得してみたいと思います。</p>
<h2 style="color: #2563eb; margin-top: 30px; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px;">1. 実行用サンプルコード</h2>
<p>以下のコードを <code>sample_run.py</code> として保存して実行します。Qiskitのコア機能だけで完結するため、環境構築が非常にシンプルです。</p>
<pre style="background-color: #f1f5f9; padding: 15px; border-left: 5px solid #2563eb; font-family: monospace; overflow-x: auto; font-size: 0.9em;">from qiskit import QuantumCircuit
from qiskit.providers.basic_provider import BasicSimulator

# 1量子ビットと、測定結果を記録する古典ビットを1つ準備
qc = QuantumCircuit(1, 1)

# Hゲートで重ね合わせ状態を作成
qc.h(0)

# 0番目の量子ビットを測定し、0番目の古典ビットに保存
qc.measure(0, 0)

# Qiskit標準の内蔵シミュレータを準備
simulator = BasicSimulator()

# 回路を1000回実行（シミュレーション）
result = simulator.run(qc, shots=1000).result()

# 実行結果から「0」と「1」が出た回数を取得
counts = result.get_counts()

print(f"実行結果: {counts}")
</pre>
<h2 style="color: #2563eb; margin-top: 30px; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px;">2. 実際の実行結果</h2>
<p>ターミナルでこのスクリプトを実行すると、以下のような結果が出力されます。</p>
<pre style="background-color: #f1f5f9; padding: 15px; border-left: 5px solid #2563eb; font-family: monospace; overflow-x: auto; font-size: 0.9em;">% python sample_run.py
実行結果: {'1': 508, '0': 492}
</pre>
<h2 style="color: #2563eb; margin-top: 30px; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px;">3. 結果の解説：なぜこの数値になるのか？</h2>
<p>得られた結果を詳しく見てみましょう。</p>
<ul>
<li><strong>0 が 492回、1 が 508回</strong>という内訳になっています。合計するとちょうど 1,000回（<code>shots=1000</code>）の試行が行われていることがわかります。</li>
<li>Hゲート（アダマールゲート）を通った量子ビットは、「0である確率」と「1である確率」がちょうど半々（50%ずつ）の重ね合わせ状態になります。</li>
<li>それを1,000回測定したため、理論値である 50:50（各500回前後）に非常に近い、確率的な揺らぎを持った数値が再現されました。</li>
</ul>
<div style="background-color: #eff6ff; border: 1px solid #bfdbfe; color: #1e40af; padding: 20px; border-radius: 8px; text-align: center; margin: 30px 0; font-weight: bold;">量子コンピュータの確率的振る舞いをコードで実証！<br />
ただの理論だけでなく、シミュレーションを通じて「半々の確率で0と1がランダムに出現する」という量子力学の現象を手元のPCで確認できました。</div>
<h2 style="color: #2563eb; margin-top: 30px; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px;">まとめ</h2>
<p>今回は、Qiskit標準の <code>BasicSimulator</code> を使って、重ね合わせ回路の実行から統計データの取得までを体験しました。回路を作って測定し、結果を数字として受け取るという、量子プログラミングの基本サイクルがこれでバッチリ完了です！<br />
<br />
<br />
<br />
</p>]]>
    </description>
    <category>【Qiskit】</category>
    <link>http://learnms.blog.shinobi.jp/Entry/206/</link>
    <pubDate>Fri, 24 Jul 2026 21:55:40 GMT</pubDate>
    <guid isPermaLink="false">learnms.blog.shinobi.jp://entry/206</guid>
  </item>

    </channel>
</rss>