<?xml version="1.0" encoding="UTF-8" ?>
<rss version="0.91">
  <channel>
    <title>いけいけ機械学習</title>
    <description>統計、機械学習、AIを学んでいきたいと思います。 お役に立てば幸いです。</description>
    <link>https://learnms.blog.shinobi.jp/</link>
    <language>ja</language>
    <copyright>Copyright (C) NINJATOOLS ALL RIGHTS RESERVED.</copyright>

    <item>
      <title>【DS検定対策】「相関」と「因果」は違う！統計的因果推論の基本</title>
      <description>&lt;p&gt;データ分析で最も重要な問いの一つが、「その結果は本当にその施策が原因で起きたのか？」ということです。データ同士の「単なる相関関係」と「本当の因果関係」を明確に見極め、正しい意思決定を行うための手法、それが「統計的因果推論」です。&lt;/p&gt;
&lt;h3 style=&quot;color: blue;&quot;&gt;1. 【 問題 】&lt;/h3&gt;
&lt;p&gt;データ分析において、変数間の単純な関連性（相関関係）だけでなく、交錯因子などのバイアスを取り除いて「ある原因（介入）が特定の結果を引き起こしたか」という因果関係を統計的に推論する枠組みを何と呼ぶでしょうか？&lt;/p&gt;
&lt;p&gt;① 統計的因果推論（Causal Inference）&lt;br /&gt;
② 主成分分析（PCA）&lt;br /&gt;
③ アソシエーション分析&lt;br /&gt;
④ 因子分析（Factor Analysis）&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: #d32f2f;&quot;&gt;2. 【 解答 】&lt;/h3&gt;
&lt;div style=&quot;background-color: #eeeeee; border: 2px solid #333; padding: 15px; font-size: 1.2em; font-weight: bold; text-align: center;&quot;&gt;正解： ① 統計的因果推論（Causal Inference）&lt;/div&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: blue;&quot;&gt;3. 整理：「相関関係」と「因果関係」の決定的な違い&lt;/h3&gt;
&lt;p&gt;2つのデータの動きが似ているからといって、そこに原因と結果の関係があるとは限りません。&lt;/p&gt;
&lt;p&gt;【 よくある間違い：擬似相関（見せかけの相関） 】&lt;/p&gt;
&lt;div style=&quot;font-family: monospace; border: 1px solid #ccc; padding: 12px; line-height: 1.6; background-color: #fafafa;&quot;&gt;「アイスクリームの売上が増えると、水難事故件数が増える」&lt;br /&gt;
&lt;br /&gt;
・相関関係：あり（アイスが売れる時期に、水難事故も増えている）&lt;br /&gt;
・因果関係：&lt;b&gt;なし&lt;/b&gt;（アイスを食べたから事故が起きたわけではない）&lt;br /&gt;
&lt;br /&gt;
★ &lt;b&gt;真の原因（交錯因子）：気温の上昇（夏）&lt;/b&gt;&lt;br /&gt;
「気温が高い」から「アイスが売れる」し、同時に「海や川で泳ぐ人が増えて事故が増える」だけです。この気温のような第3の変数を&lt;b&gt;「交錯因子（錯乱因子）」&lt;/b&gt;と呼びます。&lt;/div&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: blue;&quot;&gt;4. 試験に出る！因果推論の主なアプローチ&lt;/h3&gt;
&lt;p&gt;統計的因果推論では、交錯因子の影響を排除して「純粋な効果」を測定するために様々な手法が使われます。&lt;/p&gt;
&lt;table border=&quot;1&quot; style=&quot;border-collapse: collapse; width: 100%; text-align: left; cellpadding: 8px;&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;background-color: #f2f2f2; text-align: center;&quot;&gt;&lt;th style=&quot;width: 30%;&quot;&gt;手法・概念&lt;/th&gt;&lt;th style=&quot;width: 70%;&quot;&gt;仕組み・特徴&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;ランダム化比較試験&lt;br /&gt;
（RCT / A/Bテスト）&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;対象を無作為（ランダム）に2グループに分け、片方だけに施策を行う。&lt;b&gt;因果推論の黄金律（最も信頼性が高い）&lt;/b&gt;とされる手法。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;傾向スコアマッチング&lt;br /&gt;
（Propensity Score）&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;ランダム分けができない過去データ（観察データ）において、似た属性（背景）を持つデータ同士をペアにして比較し、バイアスを減らす手法。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;反実仮想モデル&lt;br /&gt;
（Counterfactual）&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;「もしこの施策を行わなかったら（もし〜だったら）どうなっていたか？」という&lt;b&gt;「起こらなかった世界の IF 」&lt;/b&gt;を推測して効果を比較する考え方。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: orange;&quot;&gt;5. DS検定形式：実戦4択クイズ&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;問：統計的因果推論およびデータ分析における「相関」と「因果」に関する記述として、最も適切なものはどれか。&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;① 2つの変数間に高い相関関係（相関係数が 0.9 以上）が認められれば、必ずそこには因果関係が存在すると判定してよい。&lt;br /&gt;
② 交錯因子（第3の変数）が存在する場合、実際には因果関係がない2つの変数の間に、あたかも因果関係があるかのような相関が生じることがある。&lt;br /&gt;
③ ランダム化比較試験（RCT）を行うと交錯因子の影響が極めて大きくなるため、観察データを用いた回帰分析の方が因果推論に適している。&lt;br /&gt;
④ 「あるキャンペーンを実施した結果、売上が上がった」ことを証明するには、キャンペーン期間中の売上データのみを集計すれば十分である。&lt;/p&gt;
&lt;p&gt;&lt;b&gt;【 正解： ② 】&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;解説：&lt;/b&gt; 因果推論の基本思想を問う本質的な問題です。&lt;br /&gt;
②が正解です。交錯因子の存在によって生じる見せかけの相関を「擬似相関」と呼びます。&lt;br /&gt;
①相関係数がどれだけ高くても、擬似相関の可能性があるため因果関係の証明にはなりません。&lt;br /&gt;
③RCTはランダム割り当てによって交錯因子を均等化できるため、因果推論において最も理想的な手法です。&lt;br /&gt;
④キャンペーンを実施しなかった場合（反実仮想）の売上と比較しなければ、単なる季節変動などの影響と区別できません。&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: blue;&quot;&gt;6. まとめ&lt;/h3&gt;
&lt;p&gt;DS検定や実務において、「単なる相関と因果の違い」「交錯因子の除去」「A/Bテストや傾向スコア」といったテーマが出たら、正解は「統計的因果推論」に関連する知識です。 データを扱うデータサイエンティストにとって、「相関関係＝因果関係ではない」という視点は最も重要な倫理・スキルの一つですので、しっかりと押さえておきましょう！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;</description> 
      <link>https://learnms.blog.shinobi.jp/Entry/211/</link> 
    </item>
    <item>
      <title>【DS検定対策】評価のブレを防ぐ！「交差検証（クロスバリデーション）」の仕組み</title>
      <description>&lt;p&gt;機械学習モデルの精度を測る際、データを1回だけ分ける「ホールドアウト法」では「偶然のデータの偏り（分け方の運）」で評価が変わってしまうリスクがありました。その弱点を解決する標準的な評価手法が「交差検証（クロスバリデーション）」です。仕組みと特徴を整理しましょう！&lt;/p&gt;
&lt;h3 style=&quot;color: blue;&quot;&gt;1. 【 問題 】&lt;/h3&gt;
&lt;p&gt;手元にある全データを n 等分（または k 等分）に分割し、「n-1 組のデータで学習し、残りの 1 組でテスト（検証）」という処理を、テスト役を順番に交代しながら n 回繰り返して平均精度を出す評価手法は何でしょうか？&lt;/p&gt;
&lt;p&gt;① ホールドアウト法&lt;br /&gt;
② 交差検証（クロスバリデーション / k-fold Cross Validation）&lt;br /&gt;
③ ブートストラップ法&lt;br /&gt;
④ 主成分分析（PCA）&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: #d32f2f;&quot;&gt;2. 【 解答 】&lt;/h3&gt;
&lt;div style=&quot;background-color: #eeeeee; border: 2px solid #333; padding: 15px; font-size: 1.2em; font-weight: bold; text-align: center;&quot;&gt;正解： ② 交差検証（クロスバリデーション / k-fold Cross Validation）&lt;/div&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: blue;&quot;&gt;3. 整理：交差検証のローテーション構造（k=4 の例）&lt;/h3&gt;
&lt;p&gt;交差検証では、全データを「捨ててしまうデータ」を作らず、&lt;b&gt;すべてのデータを1回ずつテスト用として活用&lt;/b&gt;します。&lt;/p&gt;
&lt;p&gt;【 4分割交差検証（4-fold Cross Validation）の流れ 】&lt;/p&gt;
&lt;div style=&quot;font-family: monospace; border: 1px solid #ccc; padding: 12px; line-height: 1.6; background-color: #fafafa;&quot;&gt;データを［グループA］［グループB］［グループC］［グループD］の4つに分割&lt;br /&gt;
&lt;br /&gt;
・1回目： B, C, D で学習 ＝＞ &lt;b&gt;A でテスト&lt;/b&gt; （精度1を計算）&lt;br /&gt;
・2回目： A, C, D で学習 ＝＞ &lt;b&gt;B でテスト&lt;/b&gt; （精度2を計算）&lt;br /&gt;
・3回目： A, B, D で学習 ＝＞ &lt;b&gt;C でテスト&lt;/b&gt; （精度3を計算）&lt;br /&gt;
・4回目： A, B, C で学習 ＝＞ &lt;b&gt;D でテスト&lt;/b&gt; （精度4を計算）&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;★ 最終評価 ＝ 精度1 〜 精度4 の平均値&lt;/b&gt;&lt;/div&gt;
&lt;p&gt;全データの評価結果を平均化するため、特定データの偏りに影響されにくく、&lt;b&gt;信頼性の高い「汎化性能（未知データへの強さ）」を測定できます。&lt;/b&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: blue;&quot;&gt;4. 試験で問われる発展手法・派生パターン&lt;/h3&gt;
&lt;p&gt;DS検定やG検定では、通常の交差検証に加えて以下の2つの派生テクニックが頻出です。&lt;/p&gt;
&lt;table border=&quot;1&quot; style=&quot;border-collapse: collapse; width: 100%; text-align: left; cellpadding: 8px;&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;background-color: #f2f2f2; text-align: center;&quot;&gt;&lt;th style=&quot;width: 35%;&quot;&gt;派生手法名&lt;/th&gt;&lt;th style=&quot;width: 65%;&quot;&gt;特徴・使いどころ&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;層化 k 分割交差検証&lt;br /&gt;
（Stratified k-fold）&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;分類問題で正解ラベルの比率（例：病気 5%：健康 95%）が偏っている場合、&lt;b&gt;各分割グループ内のラベル比率が元のデータと同じになるように分割&lt;/b&gt;して交差検証を行う手法。分類問題の超定番。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;リーブワンアウト交差検証&lt;br /&gt;
（LOOCV：Leave-One-Out）&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;データ数が極めて少ない場合、&lt;b&gt;「1件だけをテスト用にし、残り全件で学習」&lt;/b&gt;する作業をデータ件数（N回）分繰り返す手法。計算量は極めて大きいが、データを極限まで無駄にしない。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: orange;&quot;&gt;5. DS検定形式：実戦4択クイズ&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;問：交差検証（クロスバリデーション）に関する記述として、最も適切なものはどれか。&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;① 分割数 k の値を大きく（例：k=5 から k=10 へ）するほど、モデルの学習（トレーニング）回数が減るため、全体の計算時間は短くなる。&lt;br /&gt;
② 交差検証を行う主な目的は、学習データの件数を増やすことで最終的なモデルのパラメータを直接更新・強化することである。&lt;br /&gt;
③ ホールドアウト法と比較して、特定のデータ分割の偏りによる評価精度のばらつき（影響）を抑え、より客観的なモデル性能の推計が可能になる。&lt;br /&gt;
④ 時系列データ（株価や売上予測など）に対して交差検証を行う場合、過去と未来のデータを無作為（ランダム）に混ぜ合わせて分割することが推奨される。&lt;/p&gt;
&lt;p&gt;&lt;b&gt;【 正解： ③ 】&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;解説：&lt;/b&gt; 交差検証のメリット・注意点を問う標準問題です。&lt;br /&gt;
③が正解です。評価の平均をとることでデータの偏りを打ち消します。&lt;br /&gt;
①分割数 k を大きくすると学習回数（k回）が増えるため、計算時間は長くなります。&lt;br /&gt;
②交差検証はあくまで「モデル性能の評価・パラメータチューニングの手元比較」のための手法であり、モデルそのものを強化する手順ではありません。&lt;br /&gt;
④時系列データで未来のデータを過去の学習に混ぜ込むと「未来のカンニング（データリーク）」になるため、時間の順序を保った特殊な交差検証（TimeSeriesSplit）を使う必要があります。&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: blue;&quot;&gt;6. まとめ&lt;/h3&gt;
&lt;p&gt;DS検定において「データを n 個に分け、入れ替えて n 回テスト」「平均で評価」「信頼性が高い」といったフレーズが出たら、迷わず「交差検証（クロスバリデーション）」を選びましょう！ 前回の「ホールドアウト法」との違いや、データ偏りを防ぐ「層化 k 分割（Stratified k-fold）」とあわせてセットで得点源にしておきましょう！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;</description> 
      <link>https://learnms.blog.shinobi.jp/Entry/210/</link> 
    </item>
    <item>
      <title>【DS検定対策】モデル評価の基本！「ホールドアウト法」の仕組みと注意点</title>
      <description>&lt;p&gt;機械学習モデルを作った際、そのモデルが「未知のデータに対しても正しく予測できるか（汎化性能）」を評価することは必須です。その最も基本的で直感的な手法が「ホールドアウト法」です。仕組みと特徴を整理しましょう！&lt;/p&gt;
&lt;h3 style=&quot;color: blue;&quot;&gt;1. 【 問題 】&lt;/h3&gt;
&lt;p&gt;手元にある全データを「学習用（トレーニングデータ）」と「検証用（テストデータ）」の2つに分割し、学習用データのみでモデルを構築した後、検証用データを用いてそのモデルの予測性能を評価する手法を何と呼ぶでしょうか？&lt;/p&gt;
&lt;p&gt;① ホールドアウト法&lt;br /&gt;
② k分割交差検証（k-fold Cross Validation）&lt;br /&gt;
③ リーブワンアウト法（LOOCV）&lt;br /&gt;
④ ブートストラップ法&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: #d32f2f;&quot;&gt;2. 【 解答 】&lt;/h3&gt;
&lt;div style=&quot;background-color: #eeeeee; border: 2px solid #333; padding: 15px; font-size: 1.2em; font-weight: bold; text-align: center;&quot;&gt;正解： ① ホールドアウト法&lt;/div&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: blue;&quot;&gt;3. 整理：ホールドアウト法のイメージと分割割合&lt;/h3&gt;
&lt;p&gt;なぜデータをわざわざ2つに分けるのでしょうか？それは、&lt;b&gt;「学習に使ったデータをそのままテストに使っても、単に答えを暗記しているだけ（過学習）かどうかが分からないから」&lt;/b&gt;です。&lt;/p&gt;
&lt;p&gt;【 ホールドアウト法の分割イメージ 】&lt;/p&gt;
&lt;div style=&quot;font-family: monospace; border: 1px solid #ccc; padding: 12px; line-height: 1.6; background-color: #fafafa;&quot;&gt;［ 手元にあるすべてのデータ ］&lt;br /&gt;
├─ &lt;b&gt;学習用データ（Train Data）： 70%〜80%&lt;/b&gt;&lt;br /&gt;
│ &amp;rarr; モデルのパラメータを学習させるために使う&lt;br /&gt;
│&lt;br /&gt;
└─ &lt;b&gt;検証用データ（Test Data）： 20%〜30%&lt;/b&gt;&lt;br /&gt;
&amp;rarr; 学習には一切使わず、「初見の問題」として精度チェックに使う&lt;/div&gt;
&lt;p&gt;★ &lt;b&gt;分割時の注意点（層化抽出：Stratified Sampling）：&lt;/b&gt;&lt;br /&gt;
分類問題などで、データ内のクラス割合（例：病気あり1%・なし99%）が偏っている場合、ランダムに分けるとテストデータに病気データが1件も入らないリスクがあります。そのため、&lt;b&gt;「元のデータのクラス比率を維持したまま2つに分ける（層化分割）」&lt;/b&gt;のが実務の鉄則です。&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: blue;&quot;&gt;4. ホールドアウト法の「メリット」と「デメリット」&lt;/h3&gt;
&lt;p&gt;試験では、ホールドアウト法と「交差検証（クロスバリデーション）」の比較が非常によく出題されます。&lt;/p&gt;
&lt;table border=&quot;1&quot; style=&quot;border-collapse: collapse; width: 100%; text-align: left; cellpadding: 8px;&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;background-color: #f2f2f2; text-align: center;&quot;&gt;&lt;th style=&quot;width: 20%;&quot;&gt;評価手法&lt;/th&gt;&lt;th style=&quot;width: 40%;&quot;&gt;メリット&lt;/th&gt;&lt;th style=&quot;width: 40%;&quot;&gt;デメリット&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;ホールドアウト法&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;データ分割と学習が&lt;b&gt;1回で済むため、計算時間が短くシンプル&lt;/b&gt;。大規模データ（ディープラーニング等）に向く。&lt;/td&gt;
&lt;td&gt;データの「分かれ目（運）」によって評価結果が偶然ブレやすい。&lt;b&gt;データ量が少ない場合は不向き&lt;/b&gt;。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;k分割交差検証&lt;br /&gt;
（Cross Validation）&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;データをk個に分け、テスト役を交代しながらk回評価して平均をとるため、&lt;b&gt;評価が安定し信頼性が高い&lt;/b&gt;。&lt;/td&gt;
&lt;td&gt;モデルの学習をk回繰り返すため、&lt;b&gt;計算時間がk倍かかる&lt;/b&gt;。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: orange;&quot;&gt;5. DS検定形式：実戦4択クイズ&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;問：機械学習モデルの評価手法に関する記述として、最も適切なものはどれか。&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;① ホールドアウト法は、手元にあるデータを学習用と検証用に分けるため、学習用データとして使えるデータ量が全データ量よりも少なくなってしまう欠点がある。&lt;br /&gt;
② ホールドアウト法では、検証用データを一度学習に組み込んで精度を確かめた後、再度学習用データに戻して最終モデルを作成するのが一般的である。&lt;br /&gt;
③ データ量が極めて少ない場合、交差検証よりもホールドアウト法を採用した方がモデルの評価精度が安定する。&lt;br /&gt;
④ ホールドアウト法において、モデルの精度が一番高くなるまで学習用と検証用の分割パターンを何度も変更して評価を繰り返す操作は、正しい評価手順である。&lt;/p&gt;
&lt;p&gt;&lt;b&gt;【 正解： ① 】&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;解説：&lt;/b&gt; ホールドアウト法の本質的な特徴・弱点を問う問題です。&lt;br /&gt;
①が正解です。データをテスト用にプールしておく分、学習に使えるデータが減ってしまうのがホールドアウト法のデメリットです。&lt;br /&gt;
②検証用データは学習に絶対混ぜてはいけません（データリークの原因になります）。&lt;br /&gt;
③データ量が少ない場合は、評価が安定する「交差検証（Cross Validation）」を使うべきです。&lt;br /&gt;
④分割パターンを変えて一番良い結果を選ぶ行為は「テストデータに対する過学習」を引き起こすためNGです。&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: blue;&quot;&gt;6. まとめ&lt;/h3&gt;
&lt;p&gt;DS検定やG検定において「データを学習用と検証用の2つに分ける」「処理が高速だがデータ偏りの影響を受けやすい」というキーワードが出たら、正解は「ホールドアウト法」です。 データ量が十分に大きいときはホールドアウト法、データが少ないときは交差検証（クロスバリデーション）、という使い分けもセットで押さえておきましょう！&lt;/p&gt;</description> 
      <link>https://learnms.blog.shinobi.jp/Entry/209/</link> 
    </item>
    <item>
      <title>【Qiskit】CNOTゲートの仕組みを徹底検証！制御ビットで対象が変わる動きを確認しよう</title>
      <description>&lt;p&gt;前回までに、1量子ビットでの重ね合わせと測定、そしてQiskit標準シミュレータ（&lt;code&gt;BasicSimulator&lt;/code&gt;）を使った実行方法を学びました。&lt;/p&gt;
&lt;p&gt;今回はステップアップして、**2量子ビットを使った量子プログラミングの基本パーツ「CNOTゲート（制御NOTゲート）」**の動きを検証してみたいと思います。CNOTゲートが「条件によって標的を反転させる」という挙動を、実際のコードとシミュレーション結果から確かめてみましょう。&lt;/p&gt;
&lt;h2 style=&quot;color: #2563eb; margin-top: 30px; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px;&quot;&gt;1. CNOTゲートとは？&lt;/h2&gt;
&lt;p&gt;CNOTゲートは、量子コンピュータにおける「もし〜なら〜する（if文）」のような役割を持つ超重要パーツです。2つの量子ビットを使い、次のようなルールで動作します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;制御ビット（Control）&lt;/strong&gt;：条件を決める側の量子ビットです。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;標的ビット（Target）&lt;/strong&gt;：制御ビットの状態に応じて値が反転するかどうか変わる側の量子ビットです。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;制御が「0」の場合&lt;/strong&gt;：標的ビットは何もしません（そのまま）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;制御が「1」の場合&lt;/strong&gt;：標的ビットの値を反転（0なら1に、1なら0に）させます。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 style=&quot;color: #2563eb; margin-top: 30px; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px;&quot;&gt;2. 比較検証のサンプルコード&lt;/h2&gt;
&lt;p&gt;制御ビットが「0」の場合と「1」の場合で、CNOTゲートを通った後に標的ビットがどう変わるのかを比較するコードを作成します。&lt;/p&gt;
&lt;pre style=&quot;background-color: #f1f5f9; padding: 15px; border-left: 5px solid #2563eb; font-family: monospace; overflow-x: auto; font-size: 0.9em;&quot;&gt;from qiskit import QuantumCircuit
from qiskit.providers.basic_provider import BasicSimulator

simulator = BasicSimulator()

print(&quot;=== パターンA: 制御ビットが「0」の場合 ===&quot;)
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&quot;回路図:\n{qc_a.draw(output='text')}&quot;)
print(f&quot;実行結果: {result_a.get_counts()}\n&quot;)

print(&quot;=== パターンB: 制御ビットが「1」の場合 ===&quot;)
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&quot;回路図:\n{qc_b.draw(output='text')}&quot;)
print(f&quot;実行結果: {result_b.get_counts()}&quot;)
&lt;/pre&gt;
&lt;h2 style=&quot;color: #2563eb; margin-top: 30px; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px;&quot;&gt;3. 実際の実行結果と回路図&lt;/h2&gt;
&lt;p&gt;ターミナルでスクリプトを実行すると、それぞれのパターンで以下のような回路図と実行結果が得られます。&lt;/p&gt;
&lt;pre style=&quot;background-color: #f1f5f9; padding: 15px; border-left: 5px solid #2563eb; font-family: monospace; overflow-x: auto; font-size: 0.9em;&quot;&gt;=== パターン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}
&lt;/pre&gt;
&lt;h2 style=&quot;color: #2563eb; margin-top: 30px; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px;&quot;&gt;4. 結果の解説：CNOTゲートの動き&lt;/h2&gt;
&lt;p&gt;得られた結果を整理してみましょう。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;パターンA（制御が「0」）&lt;/strong&gt;：制御ビットが &lt;code&gt;0&lt;/code&gt; のため、標的ビットは反転せずそのまま &lt;code&gt;0&lt;/code&gt; を維持しました。そのため、結果はすべて &lt;strong&gt;&lt;code&gt;00&lt;/code&gt;&lt;/strong&gt;（1,000回）になっています。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;パターンB（制御が「1」）&lt;/strong&gt;：Xゲートで制御ビットを &lt;code&gt;1&lt;/code&gt; にしたため、CNOTゲートが働いて標的ビットが反転（&lt;code&gt;0&lt;/code&gt; から &lt;code&gt;1&lt;/code&gt; へ）しました。その結果、両方とも &lt;code&gt;1&lt;/code&gt; になり、結果はすべて &lt;strong&gt;&lt;code&gt;11&lt;/code&gt;&lt;/strong&gt;（1,000回）になっています。&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #eff6ff; border: 1px solid #bfdbfe; color: #1e40af; padding: 20px; border-radius: 8px; text-align: center; margin: 30px 0; font-weight: bold;&quot;&gt;CNOTゲートの「条件分岐」動作を完全確認！&lt;br /&gt;
制御ビットの値（0か1か）によって、もう一方の標的ビットの運命が変わる様子がシミュレーションでハッキリと証明できました。&lt;/div&gt;
&lt;h2 style=&quot;color: #2563eb; margin-top: 30px; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px;&quot;&gt;まとめ&lt;/h2&gt;
&lt;p&gt;今回は、2量子ビットの基本操作であるCNOTゲートの挙動をコードとシミュレーションで確認しました。制御ビットの状態に応じて標的が変わる仕組みがよく分かったと思います。このCNOTゲートの組み合わせこそが、量子もつれ（エンタングルメント）を生み出す鍵になります！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;</description> 
      <link>https://learnms.blog.shinobi.jp/Entry/208/</link> 
    </item>
    <item>
      <title>【DS検定対策】見た目に騙されるな！「多項式回帰」が線形回帰と呼ばれる理由</title>
      <description>&lt;p&gt;データ分析の試験で最も多くの人が引っかかる超・トラップ問題があります。それが「説明変数を2乗や3乗（冪乗）したモデルは、線形回帰か？非線形回帰か？」という問いです。結論から言うと、これは&lt;b&gt;「線形回帰」&lt;/b&gt;に分類されます！なぜそうなるのか、理由をスッキリ整理しましょう。&lt;/p&gt;
&lt;h3 style=&quot;color: blue;&quot;&gt;1. 【 問題 】&lt;/h3&gt;
&lt;p&gt;説明変数 x の2乗や3乗といった冪乗（多項式）を含む回帰モデル「 y = b0 + b1*x + b2*(x^2) 」に関する説明として、最も適切なものはどれか。&lt;/p&gt;
&lt;p&gt;① グラフを描くと曲線になるため、「非線形回帰モデル」に分類される。&lt;br /&gt;
② 説明変数 x に対して曲線の関係を表すが、推定するパラメータ（係数 b）に関して一次式であるため、「線形回帰モデル」に分類される。&lt;br /&gt;
③ 最小二乗法で解くことができず、必ずディープラーニングなどの複雑な数値計算アルゴリズムが必要となる。&lt;br /&gt;
④ パラメータの最適化が不可能であるため、実務では使用してはならない。&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: #d32f2f;&quot;&gt;2. 【 解答 】&lt;/h3&gt;
&lt;div style=&quot;background-color: #eeeeee; border: 2px solid #333; padding: 15px; font-size: 1.2em; font-weight: bold; text-align: center;&quot;&gt;正解： ② 説明変数 x に対して曲線の関係を表すが、推定するパラメータ（係数 b）に関して一次式であるため、「線形回帰モデル」に分類される。&lt;/div&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: blue;&quot;&gt;3. 整理：なぜ曲線なのに「線形（Linear）」なのか？&lt;/h3&gt;
&lt;p&gt;「線形＝まっすぐな直線」というイメージが強いため混乱しがちですが、統計学における「線形」の意味を正しく理解することがポイントです。&lt;/p&gt;
&lt;p&gt;【 「線形」の定義の違い 】&lt;/p&gt;
&lt;div style=&quot;font-family: monospace; border: 1px solid #ccc; padding: 12px; line-height: 1.6; background-color: #fafafa;&quot;&gt;・&lt;b&gt;変数の形（x）で見ると&lt;/b&gt;：&lt;br /&gt;
x^2 や x^3 が入っているため、グラフを描くと綺麗な「曲線」を描きます。&lt;br /&gt;
&lt;br /&gt;
・&lt;b&gt;パラメータの形（係数 b）で見ると&lt;/b&gt;：&lt;br /&gt;
係数 b0, b1, b2 はすべて「1乗（掛け算・割り算・指数になっていない）」で並んでいます。&lt;br /&gt;
&lt;br /&gt;
★&lt;b&gt;決定的な結論：&lt;/b&gt;&lt;br /&gt;
統計学における「線形回帰」とは、&lt;b&gt;「パラメータ（係数 b）に関して線形（1乗の足し算）であること」&lt;/b&gt;を指します！&lt;br /&gt;
そのため、x^2 を「新しい別の変数 z」と置き換えれば、単なる普通の「重回帰分析」と全く同じ形になるため、&lt;b&gt;「線形回帰」&lt;/b&gt;の一種（多項式回帰）として扱われるのです。&lt;/div&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: blue;&quot;&gt;4. 本物の「非線形回帰」とはどんなもの？&lt;/h3&gt;
&lt;p&gt;では、逆にどういう式が「非線形回帰」になるのでしょうか？比較して覚えておきましょう。&lt;/p&gt;
&lt;table border=&quot;1&quot; style=&quot;border-collapse: collapse; width: 100%; text-align: left; cellpadding: 8px;&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;background-color: #f2f2f2; text-align: center;&quot;&gt;&lt;th style=&quot;width: 25%;&quot;&gt;分類&lt;/th&gt;&lt;th style=&quot;width: 45%;&quot;&gt;モデルの構造（イメージ）&lt;/th&gt;&lt;th style=&quot;width: 30%;&quot;&gt;特徴&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;線形回帰&lt;br /&gt;
（多項式回帰含む）&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;y = b0 + b1*x + b2*(&lt;b&gt;x^2&lt;/b&gt;)&lt;br /&gt;
※パラメータ b はすべて1乗の足し算&lt;/td&gt;
&lt;td&gt;x が何乗になっていても、パラメータ b が1乗なら線形回帰。&lt;b&gt;最小二乗法で一発で解ける。&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;非線形回帰&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;y = b0 * &lt;b&gt;e^(b1 * x)&lt;/b&gt;&lt;br /&gt;
※パラメータ b が指数の肩に乗っているなど&lt;/td&gt;
&lt;td&gt;パラメータ自体が指数や複雑な関数の内側に入っている。&lt;b&gt;最小二乗法では解けず、繰返し計算（数値最適化）が必要。&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: orange;&quot;&gt;5. DS検定形式：実戦4択クイズ&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;問：多項式回帰（説明変数に2乗や3乗の項を含める線形回帰）を実務で適用する際の注意点として、最も適切なものはどれか。&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;① 次数（2乗、3乗、4乗&amp;hellip;）を大きく増やしていくほど、モデルの表現力が高まり、未知のデータに対する予測精度（汎化性能）は常に向上する。&lt;br /&gt;
② 次数を大きくしすぎると、学習データに過剰に適合してしまい、「過学習（オーバーフィッティング）」を起こしやすくなる。&lt;br /&gt;
③ 多項式回帰は線形モデルであるため、どれだけ次数を増やしても過学習を起こすことは構造上あり得ない。&lt;br /&gt;
④ 説明変数の2乗の項を追加すると、入力データの次元数が減少し、モデルが単純化される。&lt;/p&gt;
&lt;p&gt;&lt;b&gt;【 正解： ② 】&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;解説：&lt;/b&gt; 多項式回帰の実務的な注意点を問う良問です。&lt;br /&gt;
次数をどんどん大きくしていく（例：10乗、20乗&amp;hellip;）と、モデルのグラフは学習データの全ポイントを無理やり通ろうとしてグニャグニャに曲がりくねり、&lt;b&gt;「過学習（オーバーフィッティング）」&lt;/b&gt;を起こします。&lt;br /&gt;
実務では、適切な次数を選ぶか、Lasso・Ridgeなどの正則化手法と組み合わせて過学習を防ぐ必要があります。&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: blue;&quot;&gt;6. まとめ&lt;/h3&gt;
&lt;p&gt;DS検定や統計検定において、「説明変数が冪乗（xの2乗など）になっているモデルは何か？」と聞かれたら、罠にハマらず&lt;b&gt;「線形回帰（多項式回帰）」&lt;/b&gt;と答えられるようにしておきましょう！ 「線形か非線形かは、x の形ではなく、パラメータ（係数）の形で決まる」という本質を押さえておけば、どんな引っかけ問題も怖くありません！&lt;/p&gt;</description> 
      <link>https://learnms.blog.shinobi.jp/Entry/207/</link> 
    </item>
    <item>
      <title>【Qiskit】追加インストールなし！標準シミュレータで量子回路を実行してみよう</h1></title>
      <description>&lt;p&gt;前回までに、Hゲートを使った「重ね合わせ」の作り方と、結果を取り出すための「測定（Measure）」の仕組み、そして回路図の見方を学びました。&lt;/p&gt;
&lt;p&gt;今回は、追加のパッケージ（&lt;code&gt;qiskit-aer&lt;/code&gt;など）をわざわざインストールしなくても使えるQiskit標準のシミュレータ（&lt;code&gt;BasicSimulator&lt;/code&gt;）を利用して、実際に回路を動かし、確率的な計算結果を取得してみたいと思います。&lt;/p&gt;
&lt;h2 style=&quot;color: #2563eb; margin-top: 30px; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px;&quot;&gt;1. 実行用サンプルコード&lt;/h2&gt;
&lt;p&gt;以下のコードを &lt;code&gt;sample_run.py&lt;/code&gt; として保存して実行します。Qiskitのコア機能だけで完結するため、環境構築が非常にシンプルです。&lt;/p&gt;
&lt;pre style=&quot;background-color: #f1f5f9; padding: 15px; border-left: 5px solid #2563eb; font-family: monospace; overflow-x: auto; font-size: 0.9em;&quot;&gt;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&quot;実行結果: {counts}&quot;)
&lt;/pre&gt;
&lt;h2 style=&quot;color: #2563eb; margin-top: 30px; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px;&quot;&gt;2. 実際の実行結果&lt;/h2&gt;
&lt;p&gt;ターミナルでこのスクリプトを実行すると、以下のような結果が出力されます。&lt;/p&gt;
&lt;pre style=&quot;background-color: #f1f5f9; padding: 15px; border-left: 5px solid #2563eb; font-family: monospace; overflow-x: auto; font-size: 0.9em;&quot;&gt;% python sample_run.py
実行結果: {'1': 508, '0': 492}
&lt;/pre&gt;
&lt;h2 style=&quot;color: #2563eb; margin-top: 30px; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px;&quot;&gt;3. 結果の解説：なぜこの数値になるのか？&lt;/h2&gt;
&lt;p&gt;得られた結果を詳しく見てみましょう。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;0 が 492回、1 が 508回&lt;/strong&gt;という内訳になっています。合計するとちょうど 1,000回（&lt;code&gt;shots=1000&lt;/code&gt;）の試行が行われていることがわかります。&lt;/li&gt;
&lt;li&gt;Hゲート（アダマールゲート）を通った量子ビットは、「0である確率」と「1である確率」がちょうど半々（50%ずつ）の重ね合わせ状態になります。&lt;/li&gt;
&lt;li&gt;それを1,000回測定したため、理論値である 50:50（各500回前後）に非常に近い、確率的な揺らぎを持った数値が再現されました。&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #eff6ff; border: 1px solid #bfdbfe; color: #1e40af; padding: 20px; border-radius: 8px; text-align: center; margin: 30px 0; font-weight: bold;&quot;&gt;量子コンピュータの確率的振る舞いをコードで実証！&lt;br /&gt;
ただの理論だけでなく、シミュレーションを通じて「半々の確率で0と1がランダムに出現する」という量子力学の現象を手元のPCで確認できました。&lt;/div&gt;
&lt;h2 style=&quot;color: #2563eb; margin-top: 30px; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px;&quot;&gt;まとめ&lt;/h2&gt;
&lt;p&gt;今回は、Qiskit標準の &lt;code&gt;BasicSimulator&lt;/code&gt; を使って、重ね合わせ回路の実行から統計データの取得までを体験しました。回路を作って測定し、結果を数字として受け取るという、量子プログラミングの基本サイクルがこれでバッチリ完了です！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;</description> 
      <link>https://learnms.blog.shinobi.jp/Entry/206/</link> 
    </item>
    <item>
      <title>【DS検定対策】入力をそのまま復元！？自己符号化器「オートエンコーダ」の仕組み</title>
      <description>&lt;p&gt;画像やデータの「次元削減」や「ノイズ除去」、「異常検知」などで大活躍するディープラーニングの手法、それが「オートエンコーダ（自己符号化器）」です。正解データ（ラベル）がない「教師なし学習」でありながら、どのように学習を進めるのかその仕組みを整理しましょう！&lt;/p&gt;
&lt;h3 style=&quot;color: blue;&quot;&gt;1. 【 問題 】&lt;/h3&gt;
&lt;p&gt;ニューラルネットワークを用いた「オートエンコーダ（自己符号化器）」の学習方法に関する説明として、正しいものはどれか。&lt;/p&gt;
&lt;p&gt;① 入力データとは異なる外部の正解ラベル（正解クラス）を与え、分類誤差を最小化するように勾配降下法で学習する。&lt;br /&gt;
② 出力データが入力をそのまま復元したもの（入力と同じ）になるように目標を設定し、復元誤差を最小化するように勾配降下法で学習する。&lt;br /&gt;
③ 正解の出力は設定せず、データの分散が最大になる方向へデータを射影するように主成分分析（PCA）の行列演算のみで学習する。&lt;br /&gt;
④ 2つのネットワーク（生成器と識別子）を戦わせることで、正解ラベルなしで入力データと同じ分布を学習する。&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: #d32f2f;&quot;&gt;2. 【 解答 】&lt;/h3&gt;
&lt;div style=&quot;background-color: #eeeeee; border: 2px solid #333; padding: 15px; font-size: 1.2em; font-weight: bold; text-align: center;&quot;&gt;正解： ② 出力データが入力をそのまま復元したもの（入力と同じ）になるように目標を設定し、復元誤差を最小化するように勾配降下法で学習する。&lt;/div&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: blue;&quot;&gt;3. 整理：砂時計型の構造と「Encoder / Decoder」&lt;/h3&gt;
&lt;p&gt;「自分自身を入力にして自分自身を出力するのに、何の意味があるの？」と一瞬思うかもしれませんが、その秘密はネットワークの中央にある&lt;b&gt;「ギュッと縮んだボトルネック（砂時計のくびれ部分）」&lt;/b&gt;にあります。&lt;/p&gt;
&lt;p&gt;【 オートエンコーダの構造 】&lt;/p&gt;
&lt;div style=&quot;font-family: monospace; border: 1px solid #ccc; padding: 12px; line-height: 1.6; background-color: #fafafa;&quot;&gt;［入力データ］&lt;br /&gt;
&amp;darr;&lt;br /&gt;
【&lt;b&gt;Encoder（符号化器）&lt;/b&gt;】：次元をギュッと圧縮して、重要な情報だけを抽出&lt;br /&gt;
&amp;darr;&lt;br /&gt;
［&lt;b&gt;潜在表現（コード / ボトルネック）&lt;/b&gt;］★データの特徴が凝縮された状態&lt;br /&gt;
&amp;darr;&lt;br /&gt;
【&lt;b&gt;Decoder（復元器）&lt;/b&gt;】：圧縮された情報から、元のデータを復元しようとする&lt;br /&gt;
&amp;darr;&lt;br /&gt;
［出力データ（復元された入力）］&lt;/div&gt;
&lt;p&gt;★ &lt;b&gt;学習のメカニズム：&lt;/b&gt;&lt;br /&gt;
「元の入力」と「復元された出力」を見比べ、そのズレ（復元誤差）を計算します。そして、その誤差が限りなくゼロに近づくように、ディープラーニングの基本アルゴリズムである&lt;b&gt;「勾配降下法（および誤差逆伝播法）」&lt;/b&gt;を使ってネットワークの重みを更新（学習）していきます。&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: blue;&quot;&gt;4. 何に使える？実務での主な活用例&lt;/h3&gt;
&lt;p&gt;試験では「オートエンコーダの用途」についてもよく問われます。&lt;/p&gt;
&lt;table border=&quot;1&quot; style=&quot;border-collapse: collapse; width: 100%; text-align: left; cellpadding: 8px;&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;background-color: #f2f2f2; text-align: center;&quot;&gt;&lt;th style=&quot;width: 30%;&quot;&gt;活用用途&lt;/th&gt;&lt;th style=&quot;width: 70%;&quot;&gt;仕組み・理由&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;次元削減・特徴抽出&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;中央のボトルネック部分を取り出すことで、高次元のデータを本質的な情報だけ残した低次元データに圧縮できます（非線形なPCAのようなイメージ）。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;ノイズ除去（De-noising）&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;ノイズ混じりの画像を入力し、綺麗な画像を出力するように学習させることで、画像から雑音を取り除くモデルが作れます。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;異常検知（Anomaly Detection）&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;「正常なデータ」だけを学習させたオートエンコーダに「異常データ」を入力すると、上手く復元できず誤差が大きくなります。この復元誤差の大きさを判定して異常を検知します。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: orange;&quot;&gt;5. DS検定形式：実戦4択クイズ&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;問：オートエンコーダ（Autoencoder）に関する記述として、最も不適切なものはどれか。&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;① 正解ラベルを必要としない「教師なし学習」の一種である。&lt;br /&gt;
② 入力層と出力層の次元数（ユニット数）は基本的に同じになる。&lt;br /&gt;
③ 中間層（潜在空間）の次元を入力層より小さくすることで、データ圧縮や特徴抽出が可能になる。&lt;br /&gt;
④ 画像の局所的な特徴をとらえるために、フィルタ処理（畳み込み演算）を適用することは構造上不可能である。&lt;/p&gt;
&lt;p&gt;&lt;b&gt;【 正解： ④ 】&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;解説：&lt;/b&gt; 不適切な選択肢を選ぶ問題です。&lt;br /&gt;
オートエンコーダに畳み込み層（CNN）を組み込んだ手法は&lt;b&gt;「畳み込みオートエンコーダ（CAE：Convolutional Autoencoder）」&lt;/b&gt;と呼ばれ、画像認識や画像圧縮の分野で非常に一般的に利用されています。したがって「構造上不可能」とする④が誤り（正解）です。&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: blue;&quot;&gt;6. まとめ&lt;/h3&gt;
&lt;p&gt;DS検定やG検定で「正解の出力は入力と同じ」「勾配降下法で復元誤差を最小化する」「次元削減や異常検知に使う」といったキーフレーズが出たら、正解は「オートエンコーダ」です。 教師なし学習でありながら、勾配降下法という教師あり学習と同じ仕組みを使って自力で特徴を学習する面白さを押さえておきましょう！&lt;/p&gt;</description> 
      <link>https://learnms.blog.shinobi.jp/Entry/205/</link> 
    </item>
    <item>
      <title>【DS検定対策】LLMの革命的基盤！「トランスフォーマー」とAttention機構の仕組み</title>
      <description>&lt;p&gt;現在の生成AIや大規模言語モデル（LLM）の発展は、2017年に発表されたたった1つのモデル構造から始まりました。それが、自然言語処理の歴史を塗り替えた「トランスフォーマー（Transformer）」です。&lt;/p&gt;
&lt;h3 style=&quot;color: blue;&quot;&gt;1. 【 問題 】&lt;/h3&gt;
&lt;p&gt;大規模言語モデル（LLM）を実現するディープラーニングモデルの中で、文章中の離れた単語同士の関係性（長距離依存関係）を効果的に学習し、並列処理を可能にした革命的なモデル構造は何でしょうか？&lt;/p&gt;
&lt;p&gt;① トランスフォーマー（Transformer）&lt;br /&gt;
② RNN（Recurrent Neural Network）&lt;br /&gt;
③ CNN（Convolutional Neural Network）&lt;br /&gt;
④ 決定木（Decision Tree）&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: #d32f2f;&quot;&gt;2. 【 解答 】&lt;/h3&gt;
&lt;div style=&quot;background-color: #eeeeee; border: 2px solid #333; padding: 15px; font-size: 1.2em; font-weight: bold; text-align: center;&quot;&gt;正解： ① トランスフォーマー（Transformer）&lt;/div&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: blue;&quot;&gt;3. 整理：なぜトランスフォーマーは「離れた単語の関係」を学べるのか？&lt;/h3&gt;
&lt;p&gt;従来のモデル（RNN）とトランスフォーマーの違いを整理すると、現代のLLMがなぜこれほど強力なのかがスッキリ理解できます。&lt;/p&gt;
&lt;p&gt;【 従来のRNN vs トランスフォーマー 】&lt;/p&gt;
&lt;div style=&quot;font-family: monospace; border: 1px solid #ccc; padding: 12px; line-height: 1.6; background-color: #fafafa;&quot;&gt;・&lt;b&gt;従来のRNN（逐次処理）&lt;/b&gt;：&lt;br /&gt;
文章を左から右へ「1単語ずつ順番」に処理していく方式。&lt;br /&gt;
&lt;b&gt;弱点：&lt;/b&gt; 長い文章になると、最初の方に出てきた単語の情報を途中で忘れてしまい、離れた単語同士の関係（例：「1行目の代名詞」が「5行目のどの名詞」を指すか）を学習するのが苦手でした。&lt;br /&gt;
&lt;br /&gt;
・&lt;b&gt;トランスフォーマー（並列処理 ＋ Attention）&lt;/b&gt;：&lt;br /&gt;
文章全体を「一括で一気に」読み込む方式。&lt;br /&gt;
&lt;b&gt;強み：&lt;/b&gt; 後述する「Self-Attention（自己注意機構）」のおかげで、文章内のすべての単語からすべての単語への関連度（重み）をダイレクトに計算できるため、離れた位置にある単語同士の関係性を正確に捉えることができます。&lt;/div&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: blue;&quot;&gt;4. 試験で絶対に出る「Self-Attention（自己注意機構）」とは？&lt;/h3&gt;
&lt;p&gt;トランスフォーマーの心臓部であり、試験で最も狙われるキーワードが「Self-Attention」です。&lt;/p&gt;
&lt;p&gt;【 具体例：「それ」は何を指している？ 】&lt;/p&gt;
&lt;p style=&quot;background-color: #e3f2fd; padding: 10px; border-left: 5px solid #2196f3;&quot;&gt;例文：「&lt;b&gt;犬&lt;/b&gt;が道路を走っていたが、疲れていたので&lt;b&gt;それ&lt;/b&gt;は途中で立ち止まった。」&lt;/p&gt;
&lt;p&gt;人間なら「それ ＝ 犬」だと即座に分かりますが、コンピューターにとっては「それ」が「道路」なのか「犬」なのかを見極めるのは難しい課題でした。&lt;/p&gt;
&lt;p&gt;Self-Attentionは、文章中の全単語同士の「注目度（関連の強さ）」をスコア化します。&lt;br /&gt;
「それ」という単語を処理する際、離れた場所にある「犬」という単語との間に高い注目度スコア（Attention Weight）を自動的に割り振ることで、&lt;b&gt;「離れた単語間の文脈・意味のつながり」&lt;/b&gt;を正しく理解できるようになっているのです。&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: orange;&quot;&gt;5. DS検定形式：実戦4択クイズ&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;问：トランスフォーマー（Transformer）に関する記述として、最も適切なものはどれか。&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;① 画像の局所的な特徴を抽出することに特化しており、主にエッジ検出や物体認識の分野で標準的に使用される。&lt;br /&gt;
② 時系列データを1ステップずつ順番に処理する必要があるため、GPUによる大規模な並列計算・高速学習には向いていない。&lt;br /&gt;
③ 論文「Attention Is All You Need」（2017年）で提案され、再帰構造（RNN）を使わずにAttention機構のみで文脈をモデル化した。&lt;br /&gt;
④ 入力データの次元を削減するための非線形手法であり、主成分分析（PCA）の発展型として開発されたアルゴリズムである。&lt;/p&gt;
&lt;p&gt;&lt;b&gt;【 正解： ③ 】&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;解説：&lt;/b&gt; AI史に残る名著論文「Attention Is All You Need」に関する歴史的背景です。&lt;br /&gt;
トランスフォーマーはRNNを排除してAttention機構のみで構築されたことで、GPUによる圧倒的な**「並列処理（高速学習）」**が可能になりました。これが、現在のLLM（GPT-4、Geminiなど）が大量のWebデータから高速に学習できた最大の理由です！（①はCNN、④は次元削減の説明です）&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: blue;&quot;&gt;6. まとめ&lt;/h3&gt;
&lt;p&gt;DS検定やAI関連の資格試験において、「LLM」「離れた単語の関係（長距離依存）」「Attention」「並列処理」というキーワードが出たら、正解は「トランスフォーマー（Transformer）」です。 ディープラーニングにおける最新トレンドの最重要概念ですので、Self-Attentionの仕組みとセットで確実に得点源にしていきましょう！&lt;/p&gt;</description> 
      <link>https://learnms.blog.shinobi.jp/Entry/204/</link> 
    </item>
    <item>
      <title>【DS検定対策】境界線の余白を最大化せよ！SVMの核心「マージン」とサポートベクター</title>
      <description>&lt;p&gt;分類アルゴリズムの王様と呼ばれる「サポートベクターマシン（SVM）」。データをただ2つに分けるだけでなく、最も判定が難しいギリギリのデータからの「距離（余白）」を最大に保つことで、高い予測精度を実現しています。&lt;/p&gt;
&lt;h3 style=&quot;color: blue;&quot;&gt;1. 【 問題 】&lt;/h3&gt;
&lt;p&gt;サポートベクターマシン（SVM）において、学習用データの中で「決定境界（データを分ける線）」に最も近いデータ点（サポートベクター）と、決定境界との間の「距離（余白）」のことを何と呼ぶでしょうか？&lt;/p&gt;
&lt;p&gt;① マージン&lt;br /&gt;
② コストパラメータ&lt;br /&gt;
③ スラック変数&lt;br /&gt;
④ ラグランジュ乗数&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: #d32f2f;&quot;&gt;2. 【 解答 】&lt;/h3&gt;
&lt;div style=&quot;background-color: #eeeeee; border: 2px solid #333; padding: 15px; font-size: 1.2em; font-weight: bold; text-align: center;&quot;&gt;正解： ① マージン&lt;/div&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: blue;&quot;&gt;3. 整理：図でイメージするSVMの「マージン最大化」&lt;/h3&gt;
&lt;p&gt;言葉の定義だけでなく、SVMがどのように境界線を引いているのか、その仕組みをスッキリ整理しましょう！&lt;/p&gt;
&lt;p&gt;【 機械学習（SVM）の境界線の引き方 】&lt;/p&gt;
&lt;div style=&quot;font-family: monospace; border: 1px solid #ccc; padding: 12px; line-height: 1.6; background-color: #fafafa;&quot;&gt;・&lt;b&gt;決定境界（ハイパープラン）&lt;/b&gt;：&lt;br /&gt;
2つのグループ（例えば「○」と「&amp;times;」）を綺麗に分ける中心線。&lt;br /&gt;
&lt;br /&gt;
・&lt;b&gt;サポートベクター&lt;/b&gt;：&lt;br /&gt;
決定境界のすぐ近くに位置する、境界線に最も近い「ギリギリのデータ点」。&lt;br /&gt;
&lt;br /&gt;
・&lt;b&gt;マージン（Margin）&lt;/b&gt;：&lt;br /&gt;
サポートベクターから決定境界までの「距離（安全余白）」。&lt;/div&gt;
&lt;p&gt;★ &lt;b&gt;なぜマージンを大きくする（最大化する）のか？&lt;/b&gt;&lt;br /&gt;
2つのデータを分ける線（決定境界）自体は、実はいくらでも引くことができます。&lt;br /&gt;
しかし、境界線がデータギリギリを攻めていると、新しく入ってきた未知のデータに対応できず誤判定を起こしやすくなります。&lt;br /&gt;
そこでSVMは、&lt;b&gt;「両方のグループの最寄りデータから、一番距離（マージン）が広くなる真ん中に線を引く」&lt;/b&gt;ことで、未知のデータに対しても誤判定しにくい強固なモデル（高い汎化性能）を作り出しているのです。&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: blue;&quot;&gt;4. 試験で絶対に出る「ハードマージン」と「ソフトマージン」&lt;/h3&gt;
&lt;p&gt;検定試験において、マージンとセットで出題されるのがこの2つのアプローチの違いです。&lt;/p&gt;
&lt;table border=&quot;1&quot; style=&quot;border-collapse: collapse; width: 100%; text-align: left; cellpadding: 8px;&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;background-color: #f2f2f2; text-align: center;&quot;&gt;&lt;th style=&quot;width: 25%;&quot;&gt;種類&lt;/th&gt;&lt;th style=&quot;width: 45%;&quot;&gt;特徴&lt;/th&gt;&lt;th style=&quot;width: 30%;&quot;&gt;メリット・デメリット&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;ハードマージン&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;データの&lt;b&gt;「誤分類（間違い）を一切許さない」&lt;/b&gt;厳密な分け方。データが綺麗に直線で分けられる場合（線形分離可能）のみ使える。&lt;/td&gt;
&lt;td&gt;ノイズや外れ値に弱く、現実の複雑なデータには適用しにくい。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;ソフトマージン&lt;br /&gt;
★実務の主流&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;現実のデータは多少混ざり合っているため、&lt;b&gt;「多少の誤分類（間違い）を許容しながら」&lt;/b&gt;マージンを最大化する分け方。&lt;/td&gt;
&lt;td&gt;スラック変数やハイパーパラメータ（C値）を調整して柔軟にモデル化できる。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: orange;&quot;&gt;5. DS検定形式：実戦4択クイズ&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;問：サポートベクターマシン（SVM）に関する記述として、最も適切なものはどれか。&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;① マージンを決定する際に必要なデータは、決定境界から遠く離れた外れ値データのみであり、境界近くのデータは無視される。&lt;br /&gt;
② ソフトマージンSVMにおいて、ペナルティを表すハイパーパラメータ（C値）を非常に大きく設定すると、誤分類を許容する柔軟なモデルになる。&lt;br /&gt;
③ 直線で分けることができない非線形なデータに対しては、カーネル関数を用いて高次元空間に写像することで直線的に分離できるようにする。&lt;br /&gt;
④ 決定木を並列にたくさん作成し、多数決によって予測結果を出力するアンサンブル学習アルゴリズムである。&lt;/p&gt;
&lt;p&gt;&lt;b&gt;【 正解： ③ 】&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;解説：&lt;/b&gt; SVMのもう一つの大目玉である&lt;b&gt;「カーネル法（カーネルトリック）」&lt;/b&gt;の説明です。&lt;br /&gt;
①境界近くのデータ（サポートベクター）こそが決定境界を決めます。&lt;br /&gt;
②ハイパーパラメータ C を大きくすると「誤分流を許さない（ハードマージンに近づく）」方向に向かいます。&lt;br /&gt;
④はランダムフォレストなどの説明です。直線で分けられないデータ（非線形）を次元を上げてバシッと直線（超平面）で切るのが「カーネル関数」の役割です！&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 style=&quot;color: blue;&quot;&gt;6. まとめ&lt;/h3&gt;
&lt;p&gt;DS検定や情報処理技術者試験において「SVMで決定境界に最も近いデータと決定境界との距離」と聞かれたら、正解は「マージン」です。 「サポートベクター（最寄りのデータ）」と「マージン（余白の最大化）」、そして「カーネル法（非線形対応）」の3点セットで、機械学習分野の得点を確実にゲットしていきましょう！&lt;/p&gt;</description> 
      <link>https://learnms.blog.shinobi.jp/Entry/203/</link> 
    </item>
    <item>
      <title>【Qiskit】量子回路の基本：回路構築から「測定」の前まで</title>
      <description>&lt;p&gt;量子コンピュータのプログラミングでは、量子ゲートを使って回路を構築するだけでは計算結果を得ることができません。量子ビットは計算が終わるまで確率的に揺らぎ続けているため、&lt;strong&gt;最終的な結果を取り出すためには、必ず「測定（Measure）」という工程が必要になります。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 style=&quot;color: #2563eb; margin-top: 30px; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px;&quot;&gt;1. 測定を含む量子回路の構築&lt;/h2&gt;
&lt;p&gt;Qiskitにおいて結果を確認するための回路を作成します。&lt;code&gt;QuantumCircuit(1, 1)&lt;/code&gt; と記述することで、1つの量子ビットと、測定結果を書き込むための「1つの古典ビット」を準備します。この古典ビットを用意して測定を行わない限り、量子計算の結果を数値として読み出すことはできません。&lt;/p&gt;
&lt;pre style=&quot;background-color: #f1f5f9; padding: 15px; border-left: 5px solid #2563eb; font-family: monospace; overflow-x: auto; font-size: 0.9em;&quot;&gt;from qiskit import QuantumCircuit

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

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

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

# 回路を描画
print(qc.draw(output='text'))
&lt;/pre&gt;
&lt;h2 style=&quot;color: #2563eb; margin-top: 30px; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px;&quot;&gt;2. 実行結果（回路図）&lt;/h2&gt;
&lt;p&gt;ターミナルで実行すると、以下のように測定ゲート（M）が配置された回路図が表示されます。&lt;/p&gt;
&lt;pre style=&quot;background-color: #f1f5f9; padding: 15px; border-left: 5px solid #2563eb; font-family: monospace; overflow-x: auto; font-size: 0.9em;&quot;&gt;% python sample_measure.py
     ┌───┐┌─┐
q: ┤ H ├┤M├
     └───┘└╥┘
c: 1/══════╩═
           0
&lt;/pre&gt;
&lt;h2 style=&quot;color: #2563eb; margin-top: 30px; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px;&quot;&gt;3. 回路図の読み方と「0」の意味&lt;/h2&gt;
&lt;p&gt;この回路図には、重要な情報が可視化されています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;c: 1/&lt;/strong&gt; : 測定結果を保存するための古典的な記録領域です。ここへ情報を書き出すことではじめて、人間が結果を読み取れます。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;╩（二重線）&lt;/strong&gt; : 測定（M）によって、量子情報が古典ビットへと「確定」して送られる様子を表しています。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;一番下の「0」&lt;/strong&gt; : これは「結果が0だった」という意味ではありません。&lt;strong&gt;「0番目の量子ビットの測定結果を、0番目の古典ビットという『宛先（ID）』に保存する」&lt;/strong&gt;という接続指示を指しています。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;このように、Qiskitで &lt;code&gt;qc.measure(0, 0)&lt;/code&gt; を実行することで、量子ビットの確率的な情報を「古典ビットという箱」に固定することができます。これによって、後続のシミュレータ実行時に「0」または「1」という確定した値として結果を得ることができるようになるのです。&lt;/p&gt;
&lt;div style=&quot;background-color: #eff6ff; border: 1px solid #bfdbfe; color: #1e40af; padding: 20px; border-radius: 8px; text-align: center; margin: 30px 0; font-weight: bold;&quot;&gt;量子コンピュータの「観測」プロセスを実装！&lt;br /&gt;
Hゲートで確率を作ったら、必ずMeasureで測定して結果を確定させる。これが量子プログラミングの基本です。&lt;/div&gt;
&lt;h2 style=&quot;color: #2563eb; margin-top: 30px; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px;&quot;&gt;次のステップ&lt;/h2&gt;
&lt;p&gt;測定する場所が確保できたので、次回はいよいよシミュレータを使って、この回路を実際に動かし、統計的な結果（0と1の出現回数）を取得してみたいと思います。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;</description> 
      <link>https://learnms.blog.shinobi.jp/Entry/202/</link> 
    </item>

  </channel>
</rss>