# Logistic Regression in Machine Learning

In logistic regression, the goal is to find the best set of coefficients (also known as weights or parameters) for a linear equation that separates the data into two classes. The linear equation takes the form of:

z = w0 + w1x1 + w2x2 + ... + wn*xn

where z is the linear combination of the input features (x1, x2, ..., xn), and the coefficients (w0, w1, w2, ..., wn) are the parameters of the model that need to be learned from the data.

However, the output of the linear equation is not directly interpretable as a probability, as it can take any real value. Therefore, the output is passed through a logistic function (also known as sigmoid function), which maps the input to a probability between 0 and 1. The logistic function is defined as:

p(y=1|x) = 1 / (1 + exp(-z))

where p(y=1|x) is the probability of the outcome being positive (y=1) given the input features (x).

Once the model is trained, it can be used to make predictions on new data by inputting the features into the equation and computing the probability of the positive class. A threshold is usually set at 0.5, and if the probability is greater than the threshold, the prediction is made in favor of the positive class, otherwise it will be in favor of negative class.

## Process of Logistic Regression

Performance evaluation is an important step in the process of training a logistic regression model. It helps to determine how well the model is able to make predictions on unseen data, and provides insights into its strengths and weaknesses.

Some commonly used evaluation metrics for logistic regression are:

1. Accuracy: This measures the proportion of correct predictions made by the model, and is calculated as the number of correct predictions divided by the total number of predictions.

2. Precision: This measures the proportion of true positive predictions among all positive predictions made by the model. It is calculated as (True Positives) / (True Positives + False Positives)

3. Recall (Sensitivity or True Positive Rate): This measures the proportion of true positive predictions among all actual positive observations. It is calculated as (True Positives) / (True Positives + False Negatives)

4. F1-score: This is a harmonic mean of precision and recall and is commonly used when the distribution of positive and negative cases is imbalanced.

5. Area under ROC curve (AUC-ROC): This measures the ability of the model to discriminate between positive and negative classes. It is calculated by plotting the true positive rate against the false positive rate and computing the area under the curve. AUC-ROC ranges between 0 and 1, with a perfect model having an AUC-ROC of 1

## Applying Logistic Regression to Binary Classification

Here is an example of how logistic regression can be applied to a binary classification problem:

Let's say we want to predict whether a customer will default on a loan based on their credit score and income. We have a dataset of 1000 customers, with the following features:

• Credit score (x1)
• Income (x2)
• Default (y) (binary variable, 1 if the customer defaulted, 0 otherwise)

First, we would preprocess the data by checking for missing values and cleaning the data as necessary. Next, we would split the data into a training set (80%) and a testing set (20%).

Next, we train the logistic regression model using the training data. We use the following equation:

p(y=1|x) = 1 / (1 + exp(-z))

where z = w0 + w1x1 + w2x2

w0, w1 and w2 are the coefficients that need to be learned from the data.

To learn the coefficients, we minimize the cost function using gradient descent algorithm. Commonly used cost functions in logistic regression are cross-entropy and mean square error.

After the model is trained, we evaluate its performance on the testing set by calculating the evaluation metrics such as accuracy, precision, recall, f1-score, and AUC-ROC.

Let's say the model has an accuracy of 85%, a precision of 80%, a recall of 75%, an F1-score of 0.78 and an AUC-ROC of 0.90.

These results indicate that the model is able to correctly predict whether a customer will default on a loan in 85% of the cases. It also shows that when the model predicts a customer will default, it is correct 80% of the time. The model also correctly identifies 75% of the customers who actually default. The F1 score and AUC-ROC are also high, which is a good indicator of the model's ability to discriminate between positive and negative classes.

Finally, after the model is trained, fine-tuned, and validated, it can be used to make predictions on new data by inputting the credit score and income and computing the probability of the customer defaulting.

## Example of Logistic Regression

Here is an example of how logistic regression can be implemented in Python using the scikit-learn library:

``````from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, roc_auc_score
from sklearn.model_selection import train_test_split

X = # features (credit score, income)
y = # labels (default or not)

# split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# initialize and train the model
clf = LogisticRegression()
clf.fit(X_train, y_train)

# make predictions on the test set
y_pred = clf.predict(X_test)

# evaluate the model's performance
acc = accuracy_score(y_test, y_pred)
prec = precision_score(y_test, y_pred)
recall = recall_score(y_test, y_pred)
f1 = f1_score(y_test, y_pred)
roc_auc = roc_auc_score(y_test, y_pred)

print("Accuracy: {:.2f}%".format(acc*100))
print("Precision: {:.2f}%".format(prec*100))
print("Recall: {:.2f}%".format(recall*100))
print("F1-score: {:.2f}".format(f1)) print("AUC-ROC: {:.2f}".format(roc_auc)) ``````

In this example, the data is first loaded and split into a training set and a testing set. Then, a logistic regression model is initialized and trained using the `fit` method, with the training data. The trained model is then used to make predictions on the testing set using the `predict` method. Finally, the model's performance is evaluated using a variety of metrics such as accuracy, precision, recall, f1-score, and AUC-ROC. These evaluation metrics are provided by the `sklearn.metrics` module.

It's worth noting that this is a simple example, and depending on the specific problem, the data, and the requirements, the preprocessing and the model parameters may need to be adjusted accordingly.

### Summary

Logistic regression is a simple and interpretable algorithm that can be used for both binary and multi-class classification problems. It can be easily regularized to prevent overfitting and can handle non-linearly separable data by using polynomial or interaction terms. It has wide range of applications in fields such as healthcare, finance, marketing, and social sciences.