0

ロジスティック回帰は、回帰(0と1の間の数を得る、例えば0と1の間の確率を予測するロジスティック回帰を使用する)と分類の両方に使用できると思います。質問は、我々が訓練データと目標を提供した後で、ロジスティック回帰が、回帰を行っているのか分類を行っているのかを自動的に把握することができるということですか?シキットが分類または回帰のロジスティック回帰を理解する方法

は例えば、以下のコード例では、ロジスティック回帰は、我々だけ02間の任意の数以外の3クラス0, 1, 2の一つであると出力を必要と考え出しましたか?ロジスティック回帰がどのように回帰(出力は連続的な範囲)か分類(出力は離散的)の問題かを自動的に把握しているかどうか不思議です。

http://scikit-learn.org/stable/auto_examples/linear_model/plot_iris_logistic.html

print(__doc__) 


# Code source: Gaël Varoquaux 
# Modified for documentation by Jaques Grobler 
# License: BSD 3 clause 

import numpy as np 
import matplotlib.pyplot as plt 
from sklearn import linear_model, datasets 

# import some data to play with 
iris = datasets.load_iris() 
X = iris.data[:, :2] # we only take the first two features. 
Y = iris.target 

h = .02 # step size in the mesh 

logreg = linear_model.LogisticRegression(C=1e5) 

# we create an instance of Neighbours Classifier and fit the data. 
logreg.fit(X, Y) 

# Plot the decision boundary. For that, we will assign a color to each 
# point in the mesh [x_min, m_max]x[y_min, y_max]. 
x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5 
y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5 
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h)) 
Z = logreg.predict(np.c_[xx.ravel(), yy.ravel()]) 

# Put the result into a color plot 
Z = Z.reshape(xx.shape) 
plt.figure(1, figsize=(4, 3)) 
plt.pcolormesh(xx, yy, Z, cmap=plt.cm.Paired) 

# Plot also the training points 
plt.scatter(X[:, 0], X[:, 1], c=Y, edgecolors='k', cmap=plt.cm.Paired) 
plt.xlabel('Sepal length') 
plt.ylabel('Sepal width') 

plt.xlim(xx.min(), xx.max()) 
plt.ylim(yy.min(), yy.max()) 
plt.xticks(()) 
plt.yticks(()) 

plt.show() 
+4

「ロジスティック回帰は、回帰[...]と分類の両方に使用できると思いますが、原理的にはそうですが、ロジスティック回帰を言うならば、常に分類アルゴリズムを参照します(はい、これは奇妙です)。回帰の場合は、ロジットリンクファンクションを持つ '一般化線形モデル 'の特殊なケースです。 – cel

+0

@cel、良いキャッチと投票アップ。ロジスティック回帰が0と1の間の値を出力したい場合は、どうすればよいですか? 0は人々が何かを購入しなかったことを意味し、1は人々が何かを購入することを意味し、ロジスティック回帰を使用して購入の確率を予測したいと考えます。私の場合、ターゲットは値0と1しか持っていませんが、確率のために0と1の間の浮動小数点数を予測したいと思います。 –

+2

@LinMaはlogreg.predict_proba()を使用します。http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html#sklearn.linear_model.LogisticRegression.predict_proba – joc

答えて

1

ロジスティック回帰は、多くの場合、モデル損失バイナリ誤差に応じており、クロスエントロピコスト関数を使用します。また、ロジスティック回帰の出力は、通常、決定境界においてシグモイドに従う。これは、決定境界が線形である一方で、出力(しばしば、境界の両側にある2つのクラスのうちの1つを表す点の確率として見なされる)非線形に変換する。これにより、0から1までの回帰モデルが非常に特殊な非線形関数になります。これは特定の状況では望ましいかもしれませんが、おそらく一般的に望ましくないでしょう。

ロジスティック回帰は、クラス内にある可能性を表す振幅を提供するかどうかと考えることができます。 2つの独立変数を持つバイナリクラシファイアを考えると、決定境界が確率0.5であるトポロジカルな線であるサーフェスを描くことができます。分類器がクラスのものである場合、表面はプラトー(確率= 1)または低仰角領域(確率= 0)のいずれかにある。低確率領域から高位への遷移は、通常シグモイド関数に従う。

ロジスティック回帰に関する一連のクラスを持つAndrew Ng's Courseraコースをご覧ください。 Thisが最初のクラスです。私はそのクラスの出力のRバージョンであるgithub repoを持っています、here、ロジスティック回帰の理解に役立つかもしれません。

+0

こんにちはJohnさん、返信いただきありがとうございます。ロジスティック回帰の仕組みを理解しています。私の質問は、scikitの部分を学ぶ上で、あなたは私のポストのサンプルコードを参照することができます、私の質問は、予測結果が離散的な0,1または2、連続シグモイド関数の出力以外の理由です? scikitがどのように自動的に学習するのか疑問に思うと、私は連続出力以外の分類出力(離散)が必要です。 –

+0

BTW、ジョン、あなたの患者の答えを投票してください。あなたの返事には、私が明確にしていないことが1つあります。私は常にパラメータwを推定するのにEM(最尤)を使用しています、ここではクロスエントロピーにどのように関係していますか? –

+1

パラメータwと言うとき、class_weightを意味しますか?私はscikit-learnドキュメントでwパラメータを見ていません。混乱させて申し訳ありません。 –

関連する問題