忍者ブログ
統計、機械学習、AIを学んでいきたいと思います。 お役に立てば幸いです。

【Python】SymPyで極限(limit)を求める!1/x の 0 への接近

関数の値がどこまで近づくかを計算する「極限(limit)」。PythonのSymPyライブラリを使うと、単純な数値代入ではエラー(ゼロ除算)になってしまう $f(x) = 1/x$ のようなケースも、数学的な極限として正しく処理できます。

1. limit関数のポイント:近づく「方向」

関数 $f(x) = 1/x$ は、0に近づくときに「右側(正の数)」から近づくか、「左側(負の数)」から近づくかで結果が異なります。SymPyでは引数 dir を使ってこの方向を指定します。

  • dir='+':右側極限(0.1, 0.01...と正の側から接近)
  • dir='-':左側極限(-0.1, -0.01...と負の側から接近)

2. Pythonサンプルプログラム

特別な設定をせず、標準的な print 関数を使って結果を出力します。

# -*- coding: utf-8 -*-
from sympy import symbols, limit

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

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

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

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

if __name__ == "__main__":
    main()

3. 実行結果

実行すると、以下のような結果が得られます。SymPyでは無限大($\infty$)を oo(小文字のoが2つ)で表現します。

--- f(x) = 1/x の極限計算 ---
x -> 0+ (右側極限): oo
x -> 0- (左側極限): -oo

4. まとめ

結果にある oo は正の無限大、-oo は負の無限大を意味しています。右から近づけばプラス無限に、左から近づけばマイナス無限に発散するという数学的な挙動が、たった数行のコードで確認できました。ゼロ除算エラーを気にせず数学的検証ができるSymPyは、エンジニアにとっても強力な武器になりますね。



PR

【DS検定対策】ランダムな「来店」を予測する!ポアソン過程の正体

「1時間に平均5人来る店に、ちょうど3人来る確率は?」そんなランダムな出来事のカウントを扱うのがポアソン過程です。

1. 【 問題 】

ポアソン過程の説明として最も適切なものはどれでしょうか?

① 過去の出来事に影響されて、次の出来事の発生確率が変化するプロセス
② 一定の期間内に発生するイベントの回数を表し、各イベントが独立かつランダムに発生するプロセス
③ データの平均値が時間の経過とともに直線的に増加していくプロセス
④ 決まった周期(例:10分ごと)で必ずイベントが発生するプロセス


2. 【 解答 】

正解: ② 一定の期間内に発生するイベントの回数を表し、各イベントが独立かつランダムに発生するプロセス

3. 整理:ポアソン過程の「3つの特徴」

ポアソン過程と認められるためには、以下の3つの性質(定常性、独立性、希薄性)が重要です。

【 ポアソン過程のイメージ 】

[ 1. 独立性 ]
ある時間帯に客が来たことが、次の客が来る確率に影響しない。

[ 2. 定常性 ]
どの時間帯をとっても、客の来やすさ(平均発生率 λ)が変わらない。

[ 3. 希薄性 ]
ごく短い時間(一瞬)の間に、2回以上のイベントが同時に起きることはない。

--------------------------

活用例:
・ATMへの利用者の到着
・Webサイトへのアクセス数
・放射性物質の崩壊回数

4. セットで覚えたい「指数分布」

1. ポアソン分布: 「単位時間あたりに何回起きるか(回数)」に注目した分布。
2. 指数分布: 「次に起きるまで何分かかるか(時間の間隔)」に注目した分布。
※ ポアソン過程において、イベント発生の間隔は必ず「指数分布」に従います。これはDS検定の超頻出ポイントです!


5. DS検定形式:実戦4択クイズ

問:ポアソン過程において、過去にイベントが発生してからどれだけ時間が経過していても、次にイベントが発生する確率は変わらないという性質を何と呼ぶか。

① 無記憶性   ② 収束性   ③ 局所性   ④ 線形性

【 正解: ① 】

解説: 「さっき来たばかりだから当分来ないだろう」という予測ができないのが「無記憶性」です。これがマルコフ性の一種とされる理由でもあります。


6. まとめ

DS検定において「ランダムな到着」「独立に発生」「平均 λ(ラムダ)」という言葉が出たら「ポアソン過程」です。待ち行列理論など、ビジネスの効率化にも直結する重要な概念として押さえておきましょう!

【Kaggle挑戦記】Spaceship Titanic 攻略 #9:最強の刺客 XGBoost 投入。しかし、LightGBM の牙城は崩せず

1. 今回の挑戦:勾配ブースティングの「二大巨頭」対決

LightGBMで 0.79611 という自己ベストを更新した前回。次なる一手として、Kaggleで不動の人気を誇るもう一つの最強エンジン、XGBoost を投入しました。 同じ「勾配ブースティング」という系譜に属しながら、計算の進め方(木の育て方)が異なるこの2つのアルゴリズム。どちらが今回の宇宙船タイタニックのデータと相性が良いのか、真剣勝負です。

2. 【実装】XGBoost 換装モデル

Macのターミナルで pip install xgboost を実行し、環境を構築。最高スコア時の前処理ロジックはそのままに、学習器だけを差し替えました。

import xgboost as xgb

# 特徴量と前処理は最高スコア時を継承
model = xgb.XGBClassifier(
    n_estimators=100,
    learning_rate=0.05,
    max_depth=6,
    random_state=1,
    use_label_encoder=False,
    eval_metric='logloss'
)

model.fit(X, y)
# 予測結果を sub_xgboost_v1.csv として出力

3. 実行結果:LightGBM の底力

期待を込めて提出した結果、リーダーボードに刻まれた数字は意外なものでした。

 LightGBM (Current Best) : 0.79611
 XGBoost (New Trial)    : 0.79448 (▼ 0.00163)

わずかな差ではありますが、XGBoostは前回の記録に届かず。今回のデータセットにおいては、LightGBMの方が「急所(重要な分岐)」をより的確に捉えていたようです。

4. 考察:なぜ「同じ手法」で差が出たのか?

どちらも「勾配ブースティング」ですが、その違いが結果に現れました。

  • 木の育て方の違い: LightGBMは「誤差が大きい部分をピンポイントで掘り下げる(Leaf-wise)」のに対し、XGBoostは「層ごとにバランスよく育てる(Level-wise)」。今回のデータでは、LightGBMの尖った学習スタイルが有利に働いたと考えられます。
  • アルゴリズムの相性: 特定の数値(支出額など)が重要な意味を持つこのコンペでは、LightGBMの高速で柔軟な分岐がフィットしたのでしょう。

5. 次なる一手:最強の「合体(アンサンブル)」へ

XGBoostが負けたからといって、無駄だったわけではありません。エンジニアには「アンサンブル(平均化)」という必殺技が残されています。 LightGBMの予測とXGBoostの予測。性格の違う2つの知性を組み合わせることで、単体では届かなかった 0.8 の壁を突破できるかもしれません。


失敗はデータの蓄積。次は「二人の知才」を一つに合わせて、大台を狙います。


【DS検定対策】未来は「現在」だけで決まる?確率過程の基礎「マルコフ連鎖」

明日の天気が「今日の天気」だけで決まるとしたら? そんな風に、過去の経緯を無視して現在の状態だけで次のステップが決まる確率モデルを「マルコフ連鎖」と呼びます。

1. 【 問題 】

マルコフ過程のうち、時間の変化が「離散的(1ステップずつ途切れている)」であり、次世代の状態が現在の状態のみに依存して決まる確率過程を何と呼ぶでしょうか?

① ブラウン運動
② ポアソン過程
③ マルコフ連鎖
④ 自己回帰モデル


2. 【 解答 】

正解: ③ マルコフ連鎖

3. 整理:過去を振り返らない「忘却」のモデル

マルコフ連鎖の最大の特徴は「マルコフ性」です。これは、未来がどうなるかは「現在」がどうであるかだけで決まり、「過去」の履歴は関係ないという性質です。

【 マルコフ連鎖のイメージ:お天気の遷移 】

[ 今日の状態 ]
「晴れ」

[ 1ステップ後(明日)の確率 ]
・晴れのまま: 70%
・雨になる: 30%

[ 判定のルール ]
★ ここがマルコフ連鎖!
「昨日が雨だったか、晴れだったか」は一切考えず、「今日が晴れであること」だけを使って明日の確率を計算します。

--------------------------

ポイント: 「離散的」とは、時間が1日、2日……、あるいは1回目、2回目……と、とびとびの値をとることを指します。

4. なぜDS検定で重要なのか?

1. 状態遷移行列: 状態が移り変わる確率を表形式にまとめることで、将来の予測計算が可能になります。
2. 強化学習の基礎: ロボットの制御やAIの意思決定モデルである「マルコフ決定過程(MDP)」のベースとなります。
3. アルゴリズムへの応用: Googleの初期の検索エンジン(ページランク)も、このマルコフ連鎖の考え方を応用しています。


5. DS検定形式:実戦4択クイズ

問:マルコフ連鎖において、現在の状態から次の状態へ移る確率を並べた行列のことを何と呼ぶか。

① 相関行列   ② 遷移確率行列   ③ 逆行列   ④ 分散共分散行列

【 正解: ② 】

解説: ある状態から別の状態へ移動する確率を網羅したものを「遷移確率行列」と呼びます。この行列を現在の状態ベクトルに掛け合わせることで、次ステップの予測を行うのがマルコフ連鎖の基本計算です。


6. まとめ

DS検定において「時間が離散的」「現在の状態だけで未来が決まる」という記述があれば「マルコフ連鎖」が正解です。非常にシンプルな仮定ですが、複雑な現象をモデル化するための強力な武器になります!

【DS検定対策】統計学の王道!どんな分布も正規分布に導く「中心極限定理」

統計学の世界で、データの分析を支える最も強力な法則の一つが「中心極限定理」です。なぜ多くのデータ分析で「正規分布」が前提とされるのか、その理由がここにあります。

1. 【 問題 】

母集団の分布がどのような形であっても、そこから抽出するサンプルサイズ(n)を大きくするにつれて、標本平均の分布はどのような分布に近づくでしょうか?

① ポアソン分布
② 指数分布
③ 正規分布
④ カイ二乗分布


2. 【 解答 】

正解: ③ 正規分布

3. 整理:「平均」を繰り返すと整う世界

元のデータがバラバラ(一様分布や偏った分布)でも、何度も「平均」をとって集めると、不思議ときれいな山の形(正規分布)になります。

【 中心極限定理のプロセス 】

[ 1. 母集団 ]
サイコロの目(1〜6が均等に出る分布)など、形は自由。

[ 2. 標本抽出(サンプリング) ]
100個のサイコロを振って、その「平均値」を出す。

[ 3. 試行を繰り返す ]
★ ここが中心極限定理!
その「平均値」を何セットも記録してグラフにすると……

[ 4. 収束 ]
サンプルサイズ(n)が大きいほど、見事な「正規分布(ベルカーブ)」になる。

--------------------------

重要: 元の分布が正規分布でなくても、標本平均は正規分布に従うようになります。

4. なぜこれが重要なのか?

1. 推測統計の根拠: 母集団の正確な形がわからなくても、正規分布の性質を使って「母平均」を推定できるようになります。
2. 検定の基礎: t検定などの統計的検定が成り立つのは、この定理のおかげです。
3. 実務での安心感: サンプルサイズが十分に大きければ(一般にn=30以上など)、正規分布を前提とした分析手法が使いやすくなります。


5. DS検定形式:実戦4択クイズ

問:中心極限定理の説明として、不適切なものはどれか。

① 元の母集団がどのような分布であっても成り立つ。
② サンプルサイズが大きくなるほど、平均の分布は尖った形になる。
③ 標本平均の期待値は、母平均に等しい。
④ 母集団が正規分布でないと、標本平均は決して正規分布にならない。

【 正解: ④ 】

解説: 「母集団が正規分布でなくても、平均の分布は正規分布に近づく」のが中心極限定理の最大のポイントです。したがって④は誤りです。サンプルサイズが大きくなれば、どんな歪んだ分布から取った平均でも正規分布に収束します。


6. まとめ

DS検定において「サンプルが大きくなる」「標本平均の分布」「正規分布に近づく」というキーワードがセットで出たら、それは「中心極限定理」を指しています。統計分析の「免罪符」とも呼ばれるこの定理を、しっかり味方につけましょう!


z