Python

【はじめての機械学習】Signateの練習問題でロジスティック回帰とランダムフォレストを使う

ロジスティック回帰

予測には連続する値(売り上げの予想など)と連続しない値(動物の画像など)2種類がある。

連続値を予測する問題を回帰問題といい、連続しない離散値を予測する問題を分類問題という。

回帰問題については統計で最もシンプルな手法として線形回帰が挙げられる。例えば身長と体重の組み合わせであれば身長が大きくなれば体重が重くなるような直線的な傾向を示す。その直線の値を返す事で身長から体重を予測する事ができる。

線形回帰は回帰問題に用いられるが、ロジスティック回帰は分類問題に用いられる。

画像出典:知識のサラダボウルー線形回帰分析とロジスティック回帰分析

ランダムフォレスト

分岐路を作って特徴量がどんな値になっているかを順々に考えていき、最終的に一つのパターンを予測できるという手法。

 

random_forest

画像出典:AlphaImpact-第10回 決定木とランダムフォレストで競馬予測

Signateの練習問題 タイタニック号生存課題を解く

ロジスティック回帰とランダムフォレストで計算した例を紹介します。

どの特徴量に注目すべきかなど、特徴量エンジニアリングの部分はこちらを参照してください。

【はじめてのkaggle】タイタニック号の生存予測データの解析基礎 環境準備 jupyter notebook導入 はず始めに、初心者向けにjupyter notebookの導入方法を説明し...
import numpy as np
import pandas as pd
#ロジスティック回帰
from sklearn.linear_model import LogisticRegression
#ランダムフォレスト
from sklearn.ensemble import RandomForestClassifier

train = pd.read_table('./train.tsv')
test = pd.read_table('./test.tsv')

X_train=train.drop('id',axis=1)
X_test=test.drop('id',axis=1)
X_train=X_train.drop('embarked',axis=1)
X_test=X_test.drop('embarked',axis=1)
X_train=X_train.drop('age',axis=1)
X_test=X_test.drop('age',axis=1)
X_train=X_train.drop('sibsp',axis=1)
X_test=X_test.drop('sibsp',axis=1)
X_train=X_train.drop('parch',axis=1)
X_test=X_test.drop('parch',axis=1)

le = sp.LabelEncoder()
le.fit(X_train.sex.unique())
X_train.sex = le.fit_transform(X_train.sex)
le.fit(X_test.sex.unique())
X_test.sex = le.fit_transform(X_test.sex)

y_train=X_train['survived']
X_train=X_train.drop('survived',axis=1)

clf = LogisticRegression(penalty='l2', solver='sag', random_state=0)
# clf = RandomForestClassifier(n_estimators=100, max_depth=2, random_state=0)

clf.fit(X_train, y_train)

y_pred = clf.predict(X_test)
sub['survived'] = list(map(int, y_pred))
sub['id'] = test['id']
sub.to_csv('submission.csv', index=False)

提出結果

ロジスティック回帰:正解率 60.5%

ランダムフォレスト:正解率 73.9%

初見なので、精度は気にしません。

計算に用いるデータの工夫、パラメータ調整でこの2つの手法でも80%以上の正解率を達成している事例はあるので慣れてきたらいろいろ試して見てください。

参考

Kaggleに登録したら次にやること ~ これだけやれば十分闘える!Titanicの先へ行く入門 10 Kernel ~

ABOUT ME
Mickey@コーヒー好きエンジニア
【製造業×プログラミング×AI】Python/VBAを活用した業務改善、Streamlit/Plotlyを活用したWebアプリ開発について初心者向けに発信中|Wordpressブログを運営しながらHTML/CSSの勉強中|趣味は自家焙煎コーヒー作り|noteでは焙煎理論を発信
【製造×プログラミング×AI】
Mickey@コーヒー好きエンジニア
【製造業×プログラミング×AI】ロボット×画像処理×AI×3現主義が得意な生産技術者|Python/VBAを活用した業務改善、Streamlit/Plotly/PySimpleGUIなどを活用したアプリ開発について初心者向けに発信中|趣味は自家焙煎コーヒー作り|noteでは焙煎理論を発信|ココナラではPython/iOS/VBA開発の支援,就職/転職相談などのサービスもやっています↓ Pythonを使ったWebアプリ開発を支援します 成果物が明確なのでPythonを学びたい人にオススメです
\ Follow me /