<?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, 10 May 2026 00:17:34 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>【Python】SymPyで極限（limit）を求める！1/x の 0 への接近</title>
    <description>
    <![CDATA[<p>関数の値がどこまで近づくかを計算する「極限（limit）」。PythonのSymPyライブラリを使うと、単純な数値代入ではエラー（ゼロ除算）になってしまう $f(x) = 1/x$ のようなケースも、数学的な極限として正しく処理できます。</p>
<h3 style="color: blue;">1. limit関数のポイント：近づく「方向」</h3>
<p>関数 $f(x) = 1/x$ は、0に近づくときに「右側（正の数）」から近づくか、「左側（負の数）」から近づくかで結果が異なります。SymPyでは引数 <code>dir</code> を使ってこの方向を指定します。</p>
<ul>
<li><b>dir='+'</b>：右側極限（0.1, 0.01...と正の側から接近）</li>
<li><b>dir='-'</b>：左側極限（-0.1, -0.01...と負の側から接近）</li>
</ul>
<h3 style="color: blue;">2. Pythonサンプルプログラム</h3>
<p>特別な設定をせず、標準的な <code>print</code> 関数を使って結果を出力します。</p>
<pre style="background-color: #f5f5f5; color: #333; padding: 15px; border-radius: 5px; border: 1px solid #ddd; overflow-x: auto; font-family: Consolas, Monaco, 'Courier New', monospace;"># -*- coding: utf-8 -*-
from sympy import symbols, limit

def main():
    # 変数xを定義
    x = symbols('x')
    
    # 関数 f(x) = 1/x の定義
    f = 1 / x

    # 右側極限 (x -&gt; 0+)
    limit_right = limit(f, x, 0, dir='+')

    # 左側極限 (x -&gt; 0-)
    limit_left = limit(f, x, 0, dir='-')

    print("--- f(x) = 1/x の極限計算 ---")
    print(f"x -&gt; 0+ (右側極限): {limit_right}")
    print(f"x -&gt; 0- (左側極限): {limit_left}")

if __name__ == "__main__":
    main()
</pre>
<h3 style="color: blue;">3. 実行結果</h3>
<p>実行すると、以下のような結果が得られます。SymPyでは無限大（$\infty$）を <b>oo</b>（小文字のoが2つ）で表現します。</p>
<div style="background-color: #eeeeee; border: 1px solid #333; padding: 15px; font-family: 'Courier New', Courier, monospace; color: #000; line-height: 1.5;">--- f(x) = 1/x の極限計算 ---<br />
x -&gt; 0+ (右側極限): oo<br />
x -&gt; 0- (左側極限): -oo</div>
<h3 style="color: blue;">4. まとめ</h3>
<p>結果にある <code>oo</code> は正の無限大、<code>-oo</code> は負の無限大を意味しています。右から近づけばプラス無限に、左から近づけばマイナス無限に発散するという数学的な挙動が、たった数行のコードで確認できました。ゼロ除算エラーを気にせず数学的検証ができるSymPyは、エンジニアにとっても強力な武器になりますね。<br />
<br />
<br />
<br />
</p>]]>
    </description>
    <category>DS検定＞1. データサイエンス ＞1-1. 数理基礎・統計学 ＞1-1-2. 統計数理</category>
    <link>http://learnms.blog.shinobi.jp/Entry/136/</link>
    <pubDate>Sun, 10 May 2026 00:17:34 GMT</pubDate>
    <guid isPermaLink="false">learnms.blog.shinobi.jp://entry/136</guid>
  </item>
    <item>
    <title>【Python】SymPyで偏微分をマスター！多変数関数の計算結果をコード形式で出力する</title>
    <description>
    <![CDATA[<p>Pythonの強力な数式処理ライブラリ「SymPy」を使って、多変数関数 $f(x, y) = x^2 + 3 + y^4 + 5$ の偏微分を計算する方法を解説します。今回は、計算結果をそのままプログラムに再利用しやすい「標準出力形式」で表示します。</p>
<h3 style="color: blue;">1. 偏微分のルール</h3>
<p>偏微分とは、特定の変数だけに注目して微分し、それ以外の変数はすべて「定数（ただの数字）」として扱う計算です。</p>
<ul>
<li><b>xで偏微分</b>：x^2を微分して <b>2*x</b> となり、それ以外の $y^4$ や定数は消えます。</li>
<li><b>yで偏微分</b>：y^4 を微分して <b>4*y**3</b> となり、それ以外の $x^2$ や定数は消えます。</li>
</ul>
<h3 style="color: blue;">2. Pythonサンプルプログラム</h3>
<p>余計な装飾設定を省き、標準の <code>print()</code> 関数で結果を出力するシンプルな構成です。</p>
<pre style="background-color: #f5f5f5; color: #333; padding: 15px; border-radius: 5px; border: 1px solid #ddd; overflow-x: auto; font-family: Consolas, Monaco, 'Courier New', monospace;"># -*- coding: utf-8 -*-
from sympy import symbols, diff

def main():
    # 1. 変数x, yを記号として定義
    x, y = symbols('x y')

    # 2. 関数の定義 f(x, y) = x^2 + 3 + y^4 + 5
    f = x**2 + 3 + y**4 + 5

    # 3. xおよびyで偏微分を実行
    df_dx = diff(f, x)
    df_dy = diff(f, y)

    # 4. 結果を表示
    print("--- xでの偏微分結果 ---")
    print(df_dx)
    
    print("\n--- yでの偏微分結果 ---")
    print(df_dy)

if __name__ == "__main__":
    main()
</pre>
<h3 style="color: blue;">3. 実際の実行結果</h3>
<p>このコードを実行すると、コンソールには以下のように出力されます。<code>*</code>（掛け算）や <code>**</code>（累乗）がそのまま表示されるため、エンジニアにとって非常に直感的です。</p>
<div style="background-color: #eeeeee; border: 1px solid #333; padding: 15px; font-family: 'Courier New', Courier, monospace; color: #000; line-height: 1.5;">--- xでの偏微分結果 ---<br />
2*x<br />
<br />
--- yでの偏微分結果 ---<br />
4*y**3</div>
<h3 style="color: blue;">4. まとめ</h3>
<p>SymPyのデフォルト出力は、Pythonのコードとしてそのまま通用する形式です。複雑な数式も、この形式で出力すればロジックの確認や他のスクリプトへの移植がスムーズに行えます。見た目の美しさよりも「実用性」を重視する場面では、この標準出力が最も頼りになります。<br />
<br />
<br />
</p>]]>
    </description>
    <category>実習＞Python</category>
    <link>http://learnms.blog.shinobi.jp/Entry/135/</link>
    <pubDate>Sun, 10 May 2026 00:09:34 GMT</pubDate>
    <guid isPermaLink="false">learnms.blog.shinobi.jp://entry/135</guid>
  </item>
    <item>
    <title>【DS検定対策】「中身」で勝負！コンテンツベースフィルタリングの仕組み</title>
    <description>
    <![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;">[ 1. アイテムの属性抽出 ]<br />
映画A：[ジャンル:SF, 監督:〇〇, 主演:△△]<br />
映画B：[ジャンル:SF, 監督:&times;&times;, 主演:△△]<br />
<br />
[ 2. ユーザープロファイルの作成 ]<br />
ユーザーが過去に見た映画から、「この人は『SF』と『主演:△△』を好む」という傾向を数値化する。<br />
<br />
[ 3. 類似度の計算 ]<br />
ユーザーの好みと、未視聴のアイテムの「属性」がどれだけ近いかを計算し、高い順に勧める。<br />
<br />
--------------------------<br />
<br />
◎ <b>メリット：</b> 他のユーザーのデータが不要なため、新商品（誰も買っていないもの）でも特徴さえ分かればレコメンド可能です！</div>
<h3 style="color: blue;">4. 協調フィルタリングとの比較（ここが試験に出る！）</h3>
<table border="1" style="border-collapse: collapse; width: 100%; text-align: center;">
<tbody>
<tr style="background-color: #f2f2f2;"><th>手法</th><th>注目するデータ</th><th>新商品への対応</th></tr>
<tr>
<td><b>協調</b></td>
<td>他人の購入履歴</td>
<td>苦手（データがないため）</td>
</tr>
<tr>
<td><b>コンテンツ</b></td>
<td>アイテムの属性</td>
<td><b>得意</b>（属性で判断できる）</td>
</tr>
</tbody>
</table>
<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> 自分の好きなジャンルばかりに囲まれてしまい、新しいジャンルに出会えなくなることを「フィルターバブル（またはセレンディピティの欠如）」と呼びます。</p>
<hr />
<h3 style="color: blue;">6. まとめ</h3>
<p>DS検定において「アイテムの属性」「特徴の類似」というキーワードが出たら「コンテンツベース」です。協調フィルタリングが「他人の行動」を見るのに対し、こちらは「アイテムの中身」を見る、という違いを明確にしておきましょう！<br />
<br />
<br />
</p>]]>
    </description>
    <category>DS検定＞1. データサイエンス＞1-3. 機械学習＞1-3-1. 学習モデル</category>
    <link>http://learnms.blog.shinobi.jp/Entry/134/</link>
    <pubDate>Sat, 09 May 2026 22:54:08 GMT</pubDate>
    <guid isPermaLink="false">learnms.blog.shinobi.jp://entry/134</guid>
  </item>
    <item>
    <title>【DS検定対策】好みを予測する！「協調フィルタリング」の仕組み</title>
    <description>
    <![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. 整理：2つの主要なアプローチ</h3>
<p>協調フィルタリングには、何を基準に「似ている」と判定するかで2つの形式があります。</p>
<p>【 協調フィルタリングの分類 】</p>
<div style="font-family: monospace; border: 1px solid #ccc; padding: 10px; line-height: 1.6;">[ 1. ユーザーベース ]<br />
あなたと「購買履歴が似ているAさん」を探し、Aさんが買ってあなたがまだ買っていないものを勧める。<br />
<br />
[ 2. アイテムベース ]<br />
商品Aを買った人は商品Bも買う傾向がある場合、商品Aを買ったあなたに商品Bを勧める。<br />
<br />
--------------------------<br />
<br />
◎ <b>特徴： 商品の中身（色や形、スペック）を知らなくても、ユーザーの「行動」さえあればレコメンドできるのが強みです。</b></div>
<h3 style="color: blue;">4. 覚えておくべき課題「コールドスタート」</h3>
<p>協調フィルタリングには最大の弱点があります。それは、<b>「データが少ない新規ユーザーや新商品にはレコメンドができない」</b>という点です。これを「コールドスタート問題」と呼び、DS検定の頻出キーワードとなっています。</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> 「好みが似ている人」ではなく「商品そのものの特徴」に注目するのが内容ベース（コンテンツベース）です。両者を組み合わせた「ハイブリッド型」も実務ではよく使われます。</p>
<hr />
<h3 style="color: blue;">6. まとめ</h3>
<p>DS検定において「ユーザーの行動履歴」「似たユーザーのパターン」という記述が出たら「協調フィルタリング」です。新米ユーザーには効かない「コールドスタート問題」とセットで覚えておきましょう！<br />
<br />
<br />
</p>]]>
    </description>
    <category>DS検定＞1. データサイエンス＞1-3. 機械学習＞1-3-1. 学習モデル</category>
    <link>http://learnms.blog.shinobi.jp/Entry/133/</link>
    <pubDate>Sat, 09 May 2026 22:52:31 GMT</pubDate>
    <guid isPermaLink="false">learnms.blog.shinobi.jp://entry/133</guid>
  </item>
    <item>
    <title>【DS検定対策】AIの「知識の源」！コーパス（Corpus）の重要性</title>
    <description>
    <![CDATA[<p>AIが言葉を理解し、生成するためには、お手本となる膨大な文章データが必要です。単なるテキストの集まりを超えた「コーパス」の役割を学びましょう。</p>
<h3 style="color: blue;">1. 【 問題 】</h3>
<p>自然言語処理において、言語の法則や構造を抽出するために、実際の言語使用例を大量に集め、検索や分析ができるように構造化したデータベースを何と呼ぶでしょうか？</p>
<p>① 形態素<br />
② コーパス（Corpus）<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;">正解： ② コーパス（Corpus）</div>
<hr />
<h3 style="color: blue;">3. 整理：ただの「文章」と「コーパス」の違い</h3>
<p>インターネット上の文章をただ集めただけでは、質の高いAIは育ちません。コーパスには「構造化」という重要な工程が含まれます。</p>
<p>【 コーパスを構成する要素 】</p>
<div style="font-family: monospace; border: 1px solid #ccc; padding: 10px; line-height: 1.6;">[ 1. 生テキスト（Raw Text） ]<br />
小説、ニュース、SNS、論文など、実際に使われている文章。<br />
<br />
[ 2. アノテーション（メタデータ） ]<br />
<b>★ ここが重要！</b><br />
単語ごとに「品詞情報」を付与したり、文の「感情スコア」を付けたりして、コンピュータが処理しやすい情報を付け加えること。<br />
<br />
--------------------------<br />
<br />
◎ <b>代表的なコーパス：</b><br />
・現代日本語書き言葉均衡コーパス（BCCWJ）<br />
・Wikipediaのダンプデータ<br />
・青空文庫のテキストデータ</div>
<h3 style="color: blue;">4. コーパスの活用シーン</h3>
<p>1. <b>辞書・文法作成</b>: 言葉の使われ方を統計的に分析し、より自然な文法モデルを作ります。<br />
2. <b>LLMの学習</b>: ChatGPTなどの大規模言語モデルも、Web上の巨大なコーパスを学習することで言語能力を獲得しています。<br />
3. <b>翻訳精度向上</b>: 対訳コーパス（日本語と英語が対になったデータ）により、翻訳AIを強化します。</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> データに対して「ラベル」や「注釈」を付ける作業をアノテーションと呼びます。コーパスの価値は、このアノテーションの質と量で決まると言っても過言ではありません。</p>
<hr />
<h3 style="color: blue;">6. まとめ</h3>
<p>DS検定において「言語を構造化したデータベース」「大量の使用例」という表現が出たら「コーパス」です。データベースエンジニアとしても、非構造化データを構造化データに変える「情報の宝庫」として覚えておきたい用語ですね！</p>]]>
    </description>
    <category>DS検定＞1. データサイエンス＞1-4. 応用技術＞1-4-2. 言語モデル</category>
    <link>http://learnms.blog.shinobi.jp/Entry/132/</link>
    <pubDate>Fri, 08 May 2026 23:13:20 GMT</pubDate>
    <guid isPermaLink="false">learnms.blog.shinobi.jp://entry/132</guid>
  </item>
    <item>
    <title>【Kaggle挑戦記】Digit Recognizer：画像認識にLightGBMで挑む</title>
    <description>
    <![CDATA[<p>S4E11の「名前（Name）」というノイズとの戦いを経て、今回は心機一転、画像認識の登竜門である<b>「Digit Recognizer（手書き数字認識）」</b>に挑戦しました。 画像認識といえばディープラーニング（CNN）が定石ですが、まずは慣れ親しんだLightGBMで「どこまで通用するか」をデバッグします。</p>
<h3 style="color: blue;">1. 戦略：画像を「784個の変数」と見なす</h3>
<p>28x28ピクセルの画像データを、意味を持つ「形」として捉えるのではなく、0から255の数値が入った784個のカラムとして扱います。 Macのローカル環境（ターミナル）にて、以下の多クラス分類（0〜9）用パラメータで実行しました。</p>
<pre style="border: 1px solid #ccc; padding: 15px; background-color: #f9f9f9; overflow-x: auto; font-family: Consolas, Monaco, 'Courier New', monospace; font-size: 13px; line-height: 1.5; color: #333;">params = {
    'objective': 'multiclass',
    'num_class': 10,
    'metric': 'multi_logloss',
    'verbosity': -1,
    'boosting_type': 'gbdt',
    'learning_rate': 0.1
}
</pre>
<h3 style="color: blue;">2. 実行結果：Macターミナルのログ</h3>
<p>学習はスムーズに進み、検証データにおいて非常に高い精度をマークしました。</p>
<div style="background-color: #f4f4f4; color: #333; padding: 15px; border: 1px solid #ddd; border-left: 5px solid #ccc; font-family: 'Courier New', Courier, monospace; font-size: 14px; line-height: 1.4;">Training until validation scores don't improve for 50 rounds<br />
Did not meet early stopping. Best iteration is:<br />
[100] valid_0's multi_logloss: 0.0857917<br />
<br />
--- Validation Accuracy: 0.97417 ---<br />
--- Submission file created: submission_digit_lgb.csv ---</div>
<h3 style="color: blue;">3. リーダーボードの結果</h3>
<p>Kaggleへ提出した結果、最終的な正解率は以下の通りとなりました。</p>
<div style="text-align: center; margin: 20px 0;"><span style="font-size: 1.5em; font-weight: bold; color: #d9534f; border: 2px solid #d9534f; padding: 10px; border-radius: 5px;"> 正解率：0.97139 </span></div>
<p>画像認識の専用モデルを使わずとも、<b>約97.1%</b>という精度を叩き出すことができました。 これは「ピクセルごとの輝度値」だけでも、数字の特徴を捉えるには十分な情報量が含まれていることを示唆しています。</p>
<h3 style="color: blue;">4. 考察：エンジニアとしての気づき</h3>
<p>前回のS4E11では「データの中身（Name）を疑う」ことが鍵でしたが、今回は「純粋な数値のパターン」が勝負でした。</p>
<ul>
<li><b>特徴量の多さ：</b> 784個の変数を同時に扱う負荷も、Macのローカル環境で軽快に処理できました。</li>
<li><b>多クラス分類の挙動：</b> 0か1かの二値分類とは異なり、10種類の確率を計算する「multiclass」の動きをログから確認できたのは収穫です。</li>
</ul>
<p>97%を超えたここから先は、CNNを導入して「形や線のつながり」を学習させる領域になります。 しかし、エンジニアの「手癖」としてのLightGBMが、画像認識においてもここまで強力なベースラインになることを確認できた、実りある修行となりました。</p>
<hr />
<p style="font-style: italic; color: #666;">次なる実戦「Playground Series S4E12」の開始、あるいは地質予測の新コンペへの参戦に向け、 この「数値の羅列をねじ伏せる感覚」を研ぎ澄ませておきたいと思います。<br />
<br />
<br />
<br />
</p>]]>
    </description>
    <category>【Kaggle挑戦記】</category>
    <link>http://learnms.blog.shinobi.jp/Entry/131/</link>
    <pubDate>Wed, 06 May 2026 09:50:17 GMT</pubDate>
    <guid isPermaLink="false">learnms.blog.shinobi.jp://entry/131</guid>
  </item>
    <item>
    <title>【Kaggle挑戦記】S4E11 #2：ノイズを削って精度を出す。名前（Name）削除の劇的ビフォーアフター</title>
    <description>
    <![CDATA[<p>前回、予測の重要度ランキングで「Name（名前）」が1位という、エンジニアとして看過できない「仕様バグ」に近い状態に直面しました。 今回はこの不適切な依存関係を排除し、コードをリファクタリングして再挑戦した結果を報告します。</p>
<h3 style="color: blue;">1. 実装：不要な依存関係を排除した「クリーン」なモデル</h3>
<p>「名前で予測する」というハードコーディングに近い過学習を防ぐため、物理的にカラムをドロップしました。 また、コンペの締め切り後（After Deadline）でも確実に評価を通すため、型変換と出力を最適化した「修正版コード」を投入しました。</p>
<pre style="border: 1px solid #ccc; padding: 15px; background-color: #f9f9f9; overflow-x: auto; font-family: Consolas, Monaco, 'Courier New', monospace; font-size: 13px; line-height: 1.5; color: #333;">import pandas as pd
import lightgbm as lgb
from sklearn.preprocessing import LabelEncoder

# 1. データの読み込み
train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')

# 2. 前処理：ターゲットの数値化
le = LabelEncoder()
if train['Depression'].dtype == 'object':
    train['Depression'] = le.fit_transform(train['Depression'])

# 3. 特徴量の選択（「名前」を明示的にドロップ！）
drop_cols = ['id', 'Name']
X = train.drop(drop_cols + ['Depression'], axis=1)
y = train['Depression']
X_test = test.drop(drop_cols, axis=1)

# 4. カテゴリ変数の処理（LightGBM用）
cat_cols = X.select_dtypes(include=['object']).columns.tolist()
for col in cat_cols:
    X[col] = X[col].astype('category')
    X_test[col] = X_test[col].astype('category')

# 5. モデルの構築
params = {
    'objective': 'binary',
    'metric': 'binary_error',
    'verbosity': -1,
    'random_state': 42
}

model = lgb.LGBMClassifier(**params)
model.fit(X, y)

# 6. 予測と提出ファイルの作成
submission = pd.DataFrame({
    'id': test['id'],
    'Depression': model.predict(X_test)
})
submission['Depression'] = submission['Depression'].astype(int)
submission.to_csv('submission_final.csv', index=False)
</pre>
<h3 style="color: blue;">2. コンソール出力：健全なランキングへの変遷</h3>
<p>実行後、コンソールに表示されたランキングは、前回とは全く異なる「納得感」のある顔ぶれになりました。 可読性のために標準的なログスタイルで出力結果を記載します。</p>
<div style="background-color: #f4f4f4; color: #333; padding: 15px; border: 1px solid #ddd; border-left: 5px solid #ccc; font-family: 'Courier New', Courier, monospace; font-size: 14px; line-height: 1.4;">--- Submission file created successfully! ---<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; feature&nbsp; importance<br />
2 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; City &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 494<br />
12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Degree &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 388<br />
4 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Profession &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 359<br />
1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Age &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 315<br />
15&nbsp; Financial Stress &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 224</div>
<h3 style="color: blue;">3. スコア：ノイズを消して「実力」が向上</h3>
<p>締め切り後（After Deadline）のLate Submissionですが、結果は意外なものでした。 <b>名前を消したことで、むしろスコアが上昇したのです。</b></p>
<table style="border-collapse: collapse; width: 100%; margin: 15px 0;">
<tbody>
<tr style="background-color: #f2f2f2;"><th style="border: 1px solid #ccc; padding: 8px;">指標</th><th style="border: 1px solid #ccc; padding: 8px;">前回（Nameあり）</th><th style="border: 1px solid #ccc; padding: 8px; background-color: #e6fffa;">今回（Nameなし）</th></tr>
<tr>
<td style="border: 1px solid #ccc; padding: 8px; font-weight: bold;">Public Score</td>
<td style="border: 1px solid #ccc; padding: 8px;">0.94008</td>
<td style="border: 1px solid #ccc; padding: 8px; background-color: #e6fffa; font-weight: bold; color: #2c7a7b;">0.94152 (&uarr;)</td>
</tr>
<tr>
<td style="border: 1px solid #ccc; padding: 8px; font-weight: bold;">Private Score</td>
<td style="border: 1px solid #ccc; padding: 8px;">0.93868</td>
<td style="border: 1px solid #ccc; padding: 8px; background-color: #e6fffa; font-weight: bold; color: #2c7a7b;">0.93961 (&uarr;)</td>
</tr>
</tbody>
</table>
<h3 style="color: blue;">4. 考察とまとめ</h3>
<p>「名前」という強力なノイズがモデルを惑わせていたことが、スコアの向上によって証明されました。 不要なカラムを削除したことで、モデルが「City（都市）」や「Degree（学位）」といった、メンタルヘルスに真に影響を与えるコンテキストに集中できるようになった結果です。</p>
<p>「なぜ動くか分からないコード」を放置せず、違和感のある変数を削ぎ落とす。 バックエンドのデバッグと同じ姿勢で取り組むことが、Kaggleにおける精度向上にも直結することを実感した一戦でした。</p>
<hr />
<p style="font-style: italic; color: #666;">Kaggleの履歴に「After Deadline」と「Error」のログが残ることは、試行錯誤の証。 次の「本物のコンペ」では、このデバッグの知見を最初からぶつけていきたいと思います。<br />
<br />
<br />
<br />
</p>]]>
    </description>
    <category>【Kaggle挑戦記】</category>
    <link>http://learnms.blog.shinobi.jp/Entry/130/</link>
    <pubDate>Tue, 05 May 2026 07:27:15 GMT</pubDate>
    <guid isPermaLink="false">learnms.blog.shinobi.jp://entry/130</guid>
  </item>
    <item>
    <title>【DS検定対策】言葉の「つながり」を可視化！共起分析とネットワーク図</title>
    <description>
    <![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;">[ 図の読み方 ]<br />
・<b>ノード（円）</b>：単語を表す。大きいほど出現頻度が高い。<br />
・<b>エッジ（線）</b>：共起関係を表す。太いほど「セット」で使われる度合いが強い。<br />
<br />
（例：スマートフォンのレビュー分析）<br />
「バッテリー」──「持ち」：電池の寿命に関する話題<br />
「カメラ」──「暗所」：夜景撮影に関する話題<br />
--------------------------<br />
<br />
◎ <b>活用例：</b><br />
・アンケート自由記述から「不満の構造」を特定する。<br />
・ニュース記事からトレンドワードの関連性を探る。</div>
<h3 style="color: blue;">4. 共起の強さを測る指標</h3>
<p>単に同時に出た回数だけでなく、以下の指標がよく使われます。<br />
1. <b>Jaccard（ジャカード）係数</b>: 2つの単語がどれだけ「いつも一緒」にいるかの割合。DS検定でもよく問われる指標です。<br />
2. <b>Dice係数 / Simpson係数</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> 円（点）をノード、それらを結ぶ線をエッジと呼びます。共起分析では、このエッジが太いほど、その単語ペアに強い関連性があることを示します。</p>
<hr />
<h3 style="color: blue;">6. まとめ</h3>
<p>DS検定において「単語の同時出現」「ネットワーク図による可視化」というキーワードが出たら「共起分析」です。頻度だけでは見落としてしまう「文脈」を捉えるための強力なツールとして覚えておきましょう！</p>]]>
    </description>
    <category>DS検定＞1. データサイエンス＞1-4. 応用技術＞1-4-2. 言語モデル</category>
    <link>http://learnms.blog.shinobi.jp/Entry/129/</link>
    <pubDate>Mon, 04 May 2026 23:50:25 GMT</pubDate>
    <guid isPermaLink="false">learnms.blog.shinobi.jp://entry/129</guid>
  </item>
    <item>
    <title>【DS検定対策】言葉の裏の「感情」を読み解く！センチメント分析</title>
    <description>
    <![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>センチメント分析には、大きく分けて「辞書ベース」と「機械学習ベース」の2つのアプローチがあります。</p>
<p>【 感情分析の仕組み 】</p>
<div style="font-family: monospace; border: 1px solid #ccc; padding: 10px; line-height: 1.6;">[ 1. 感情極性辞書による方法 ]<br />
「美味しい」「速い」＝ポジティブ (+1)<br />
「壊れた」「遅い」＝ネガティブ (-1)<br />
といった辞書を用意し、文章内の単語の合計スコアで判定する。<br />
<br />
[ 2. 機械学習による方法 ]<br />
大量の「ポジティブな文章」と「ネガティブな文章」をAIに学習させ、新しい文章の傾向を予測させる。<br />
<br />
--------------------------<br />
<br />
◎ <b>活用例：</b><br />
・新商品のTwitter（X）での評判調査<br />
・コールセンターへの問い合わせ内容の自動仕分け<br />
・アンケートの自由記述欄の満足度スコア化</div>
<h3 style="color: blue;">4. 分析の落とし穴</h3>
<p>1. <b>皮肉や二重否定</b>: 「最高に最悪だ」のような皮肉や、「悪くない」といった表現は、単語レベルの辞書だけでは誤判定しやすいため、文脈の理解が求められます。<br />
2. <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> 単語に「感情の極性（プラス・マイナス）」を持たせた辞書です。日本語では「日本語評価極性辞書」などが有名です。</p>
<hr />
<h3 style="color: blue;">6. まとめ</h3>
<p>DS検定において「主観的な感情」「ポジネガ判定」というキーワードが出たら「センチメント分析」です。テキストデータの「量」だけでなく「質」を測るための手法として、しっかりマスターしておきましょう！</p>]]>
    </description>
    <category>DS検定＞1. データサイエンス＞1-4. 応用技術＞1-4-2. 言語モデル</category>
    <link>http://learnms.blog.shinobi.jp/Entry/128/</link>
    <pubDate>Mon, 04 May 2026 23:48:25 GMT</pubDate>
    <guid isPermaLink="false">learnms.blog.shinobi.jp://entry/128</guid>
  </item>
    <item>
    <title>【DS検定対策】ランダムな「来店」を予測する！ポアソン過程の正体</title>
    <description>
    <![CDATA[<p>「1時間に平均5人来る店に、ちょうど3人来る確率は？」そんなランダムな出来事のカウントを扱うのがポアソン過程です。</p>
<h3 style="color: blue;">1. 【 問題 】</h3>
<p>ポアソン過程の説明として最も適切なものはどれでしょうか？</p>
<p>① 過去の出来事に影響されて、次の出来事の発生確率が変化するプロセス<br />
② 一定の期間内に発生するイベントの回数を表し、各イベントが独立かつランダムに発生するプロセス<br />
③ データの平均値が時間の経過とともに直線的に増加していくプロセス<br />
④ 決まった周期（例：10分ごと）で必ずイベントが発生するプロセス</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>
<p>【 ポアソン過程のイメージ 】</p>
<div style="font-family: monospace; border: 1px solid #ccc; padding: 10px; line-height: 1.6;">[ 1. 独立性 ]<br />
ある時間帯に客が来たことが、次の客が来る確率に影響しない。<br />
<br />
[ 2. 定常性 ]<br />
どの時間帯をとっても、客の来やすさ（平均発生率 &lambda;）が変わらない。<br />
<br />
[ 3. 希薄性 ]<br />
ごく短い時間（一瞬）の間に、2回以上のイベントが同時に起きることはない。<br />
<br />
--------------------------<br />
<br />
◎ <b>活用例：</b><br />
・ATMへの利用者の到着<br />
・Webサイトへのアクセス数<br />
・放射性物質の崩壊回数</div>
<h3 style="color: blue;">4. セットで覚えたい「指数分布」</h3>
<p>1. <b>ポアソン分布</b>: 「単位時間あたりに何回起きるか（回数）」に注目した分布。<br />
2. <b>指数分布</b>: 「次に起きるまで何分かかるか（時間の間隔）」に注目した分布。<br />
※ ポアソン過程において、イベント発生の間隔は必ず「指数分布」に従います。これはDS検定の超頻出ポイントです！</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> 「さっき来たばかりだから当分来ないだろう」という予測ができないのが「無記憶性」です。これがマルコフ性の一種とされる理由でもあります。</p>
<hr />
<h3 style="color: blue;">6. まとめ</h3>
<p>DS検定において「ランダムな到着」「独立に発生」「平均 &lambda;（ラムダ）」という言葉が出たら「ポアソン過程」です。待ち行列理論など、ビジネスの効率化にも直結する重要な概念として押さえておきましょう！</p>]]>
    </description>
    <category>DS検定＞1. データサイエンス ＞1-1. 数理基礎・統計学 ＞1-1-2. 統計数理</category>
    <link>http://learnms.blog.shinobi.jp/Entry/127/</link>
    <pubDate>Mon, 04 May 2026 11:56:28 GMT</pubDate>
    <guid isPermaLink="false">learnms.blog.shinobi.jp://entry/127</guid>
  </item>

    </channel>
</rss>