ロジスティック回帰とは何か

皆さん、こんにちは。LP開発グループのn-ozawanです。
今期より、「技術開発グループ」から「LP開発グループ」に名称が変わりました。事業部門の技術戦略、人財戦略を加速し、リーディングプレイヤーとして活躍する人材の育成を推進する事を目的とした組織となります。

本題です。
教師あり学習には、線形回帰のように連続値を予測する手法もありますが、一方でカテゴリを分類するロジスティック回帰という手法もあります。今回はロジスティック回帰についてまとめてみました。

ロジスティック回帰

概要

ロジスティック回帰は、統計学や機械学習における分類問題を解決するための手法で、主に2値分類問題に用いられます。2値分類問題とは、問いに対して「はい」または「いいえ」を返答するタスクのことです。

例えば、電子メールを「迷惑メールか」または「迷惑メールでない」に分類するフィルタや、「この画像は犬か?」という問いに「はい」か「いいえ」で返答する画像認識が挙げられます。

回帰分析と分類分析

教師あり学習は、回帰分析と分類分析に分けられます。回帰分析は、連続値を予測するための手法です。例えば、部屋の広さや駅からの距離などから家賃を予測する、過去の気象データなどから明日の天気を予測する、などに使用されます。回帰分析では、説明変数と目的変数の間の関係をモデル化します。

一方、分類分析は、データをカテゴリに分類することを目的としています。例えば、電子メールを「迷惑メールか」または「迷惑メールでない」に分類する問題や、画像を「犬」「猫」「その他」に分類する問題が該当します。分類分析では、与えられた特徴量に基づいて、データがどのクラスに属するかを予測します。

先ほど述べた通り、ロジスティック回帰は分類分析です。「回帰」という言葉が使われているので、回帰分析のように見えますが、分類分析です。

シグモイド関数

ロジスティック回帰では、シグモイド関数という関数をモデルの出力に用います。シグモイド関数は、入力に任意の値を指定すると、必ず0から1までの値を返します。返却値が0.5であれば50%の確率であり、0.8であれば80%の確率であると判断します。

基本的には0.5を閾値として、0.5を超えたら「はい」、0.5以下であれば「いいえ」と言うように判断します。もちろん閾値を0.8や0.2などに調整することも可能です。

シグモイド関数の数式は以下の通りです。

  
    
      σ
      (
      x
      )
      =
      
        1
        
          1
          +
          
            e
            
              -
              x
            
          
        
      
    
  

ソフトマックス関数

先ほどのシグモイド関数は、「はい」または「いいえ」かの2種類までしか判断できません。実際には「画像の動物は犬、キジ、猿の内どれか?」などの多値分類問題もあることでしょう。そのような問題ではソフトマックス関数を用います。

ソフトマックス関数の数式は以下の通りです。

  
    
      
        
          σ
          (
          x
          )
        
        i
      
      =
      
        
          e
          
            x
            i
          
        
        
          
            
            j=1
            n
          
          
            e
            
              x
              j
            
          
        
      
    
  

ソフトマックス関数もシグモイド関数と同様に、必ず0から1までの値を返します。シグモイド関数と違うのは、n個の入力値に対して、n個の結果を返却し、それらを合計すると必ず1になることです。例えば、x=(8, 7, 3)を与えた場合、ソフトマックス関数はy=(0.8756, 0.1185, 0.0059)を返却し、yの合計は1となります。

おわりに

ロジスティック回帰は、分類問題を解決するための基本的な手法です。シグモイド関数やソフトマックス関数を活用することで、2値分類や多値分類に対応することができます。とはいえ、今回の内容では具体的な使い方が良く分かりません。入力値には何を指定すればいいのか?学習はどうするのか?など疑問は尽きません。次回はもう少し深堀したいと思います。

ではまた。

Recommendおすすめブログ