機械学習を学ぶ上で、モデルの精度を高めるためには複数のアルゴリズムを比較し、最適なものを選定することが重要です。今回は、Kaggleで公開されている有名なTitanicデータセットを使用し、4つの異なるアルゴリズムを試して、その精度を比較してみました。
この記事では、次のようなステップで進めていきます。
前回記事:Kaggle×Pythonで挑戦!タイタニック号データ分析の方法と結果
kaggleでは、コードの共有に制限が設けられているため、安全に共有できるkaggleノートブックにコードを乗せております。
実際のコードを確認したい方は以下のkaggleノートブック参考にしてください。
kaggleって何?
データサイエンスの世界に足を踏み入れると、必ず耳にするプラットフォームがKaggleです。Kaggleは、世界中のデータサイエンティストやエンジニアたちが集まり、データ分析のコンペティションや、豊富なデータセットを活用してスキルを磨く場です。初心者から上級者まで、多くの人々がKaggleで学び、挑戦を通じて成長しています。
データの前処理と特徴量エンジニアリング
まず、データセットに含まれる欠損値を補完し、機械学習モデルが学習しやすい形に整えます。Titanicデータセットには、年齢や運賃、乗船港などに欠損値が含まれています。これらの欠損値を補完することで、モデルがすべてのデータを効率的に利用できるようにしました。
データのクリーニング
- 年齢や運賃の欠損値は、中央値を使って補完。
- 乗船港の欠損は、最頻値(最も多く出現する値)で補完。
次に、「名前」や「チケット番号」といったデータを利用して、新しい情報(特徴量)を抽出します。たとえば、「名前」からはMrやMrsといった敬称(タイトル)を取り出し、これが社会的な地位や年齢層を示す指標として利用できるため、モデルに役立つ可能性があります。また、家族の人数やチケット番号のパターンも特徴量として追加しました。
参考コード:
1 2 3 |
# 欠損値の補完 train_data['Age'].fillna(train_data['Age'].median(), inplace=True) train_data['Fare'].fillna(train_data['Fare'].median(), inplace=True) |
このようにして、欠損値を処理し、データを完全にしました。
特徴量エンジニアリング
- 名前から敬称(Mr, Mrs, Missなど)を抽出して新たな情報として活用。
- 家族の人数を兄弟姉妹・親子の数を加算して計算。
これらの前処理によって、データがより意味のある形に変換され、モデルの精度向上が期待できます。
参考コード:
1 2 |
# 名前から敬称(Title)を抽出 train_data['Title'] = train_data['Name'].str.extract(' ([A-Za-z]+)\.') |
敬称には、Mr, Mrs, Missなどが含まれ、これをモデルの入力に加えることで、予測精度を高めることができます。
4つの機械学習アルゴリズムの比較
4つの異なるアルゴリズムでモデルを訓練し、検証データでの精度を比較しました。最も高い精度を示したのは勾配ブースティングでした。
これらのモデルを訓練し、精度を比較してみます。まずはロジスティック回帰から順に実行し、最後にすべての結果を比較します。それでは、まずロジスティック回帰を試してみます。
ロジスティック回帰
ロジスティック回帰は、簡単かつ強力な分類モデルです。二値分類に最適で、Titanicデータセットの生存予測に適用するのに適したアルゴリズムです。
参考コード:
1 2 3 4 5 |
# ロジスティック回帰の訓練 from sklearn.linear_model import LogisticRegression logistic_model = LogisticRegression(max_iter=200) logistic_model.fit(X_train, y_train) |
サポートベクターマシン(SVM)
SVMはデータ間の境界線を引いて分類するモデルで、マージン(境界から最も近いデータ点までの距離)を最大化することで、分類精度を高めます。
参考コード:
1 2 3 4 5 |
# SVMの訓練 from sklearn.svm import SVC svm_model = SVC() svm_model.fit(X_train, y_train) |
K近傍法(KNN)
K近傍法は、データの周囲にある近くのポイント(K個)を使って分類します。これは、シンプルかつ理解しやすいアルゴリズムです。
参考コード:
1 2 3 4 5 |
# KNNの訓練 from sklearn.neighbors import KNeighborsClassifier knn_model = KNeighborsClassifier() knn_model.fit(X_train, y_train) |
勾配ブースティング
勾配ブースティングは、複数の決定木を組み合わせて強力な予測モデルを作成する手法です。これは、予測精度を向上させるために非常に効果的です。
参考コード:
1 2 3 4 5 |
# 勾配ブースティングの訓練 from sklearn.ensemble import GradientBoostingClassifier gb_model = GradientBoostingClassifier() gb_model.fit(X_train, y_train) |
アルゴリズムの精度結果
4つのアルゴリズムを比較した結果は以下の通りです。
- ロジスティック回帰: 78.77%
- サポートベクターマシン (SVM): 66.48%
- k近傍法 (KNN): 79.33%
- 勾配ブースティング (Gradient Boosting): 84.36%
この結果から、最も高い精度を示したのは勾配ブースティングでした。
勾配ブースティングを使用した最終予測
最も高い精度を示した勾配ブースティングを用いて、テストデータに対して最終予測を行いました。この手法は、決定木を繰り返し構築し、各モデルが前のモデルの誤りを補正することで予測精度を高めるアプローチです。
勾配ブースティングの概要:
- まずは複数の決定木を順番に訓練し、次の木が前の木で予測ミスをしたデータをより重視するように学習します。
- このプロセスを繰り返し、最終的に強力なモデルが構築されます。
最終予測と提出ファイルの作成
最も精度の高かった勾配ブースティングを使用して、テストデータに対して最終予測を行い、結果をCSVファイルとして出力しました。
参考コード:
1 2 3 4 5 6 7 8 9 |
# テストデータに対する予測 test_predictions_gb = gb_model.predict(X_test) # 結果をCSVとして保存 submission = pd.DataFrame({ 'PassengerId': test_data['PassengerId'], 'Survived': test_predictions_gb }) submission.to_csv('titanic_submission_gb.csv', index=False) |
まとめ
今回のTitanicデータセットを使った分析では、複数の機械学習アルゴリズムを比較しました。最も精度が高かったのは勾配ブースティングで、84%以上の精度を達成しました。この結果から、アンサンブル学習の強力さを確認できました。
また、モデルの性能を高めるためには、データの前処理や特徴量エンジニアリングが重要な役割を果たすことも学べました。特に、名前やチケット番号などのデータを有効に活用することで、モデルの予測精度を向上させることができました。
このように、データ分析のプロセスでは、複数のアルゴリズムを比較し、最適なモデルを選ぶことが重要です。この記事を参考に、ぜひ他のデータセットでも試してみてください!
Pythonを学びたい方はこちらの記事を参考にしてみてください
関連記事
プログラミング学習を進めているけれど、まだ副収入につなげられていない…そんなあなたへ!今こそ、学んだスキルを活かして副業に挑戦する絶好のチャンスです。プログラミングだけでなく、自分のスキルや商品をネットで販売する『ネットショップ』を開設してみませんか?
ネットショップを持つことで、自分の知識やスキルをより多くの人に届け、副収入を得ることが可能です。学んできたプログラミングを活かして、ショップのカスタマイズや運営も自由自在に行えますし、もし商品作成が難しい場合でも、デジタル商品やサービス提供など、いろんな選択肢があります。
このステップで一歩踏み出せば、今学んでいることが副収入に直結し、自分の時間をより有効に使うことができるはずです!一緒にネットショップを開設し、副業の第一歩を踏み出しましょう!
タイトルテキスト
プログラミングを学びたいけど、どこから始めたらいいのか分からない、自分に合っているか不安…そんな悩みを持っている方におすすめしたいのが、 無料相談 サービスです!
この無料相談では、あなたの現状や目標に合わせて、最適な学習プランを一緒に考えてくれます。どんなスキルが必要なのか、どうやって学習を進めると効果的かを具体的にアドバイスしてもらえるので、無駄なく効率的にスタートを切ることができます。
さらに、プログラミング学習には同じ目標を持つ 仲間 がいること、そして頼りになる メンター の存在がとても大きな支えになります。独学ではどうしてもつまずきやすい部分も、メンターがあなたの成長に合わせて親身にサポートしてくれるので、安心して学びを進められます。
まずは 無料相談 で、あなたに合ったプランを見つけて、スキルアップへの第一歩を踏み出してみませんか?今なら、迷っている方でも気軽に相談できるチャンスです!