Although BigQuery started out solely as a data warehouse, over time it has evolved to provide features that support the data to AI lifecycle. In this section of the course, we'll explore BigQuery's capabilities for building machine learning models in the ML project phases. And walk you through the key ML commands in SQL. If you've worked with ML models before, you know that building and training them can be very time intensive. You must first export data from your data store into an IDE, Integrated Development Environment, such as Jupyter Notebook or Google Colab. And then transform the data and perform your feature engineering steps before you can feed it into a training model. Then finally, you need to build the model in Tensorflow or similar library and train it locally on a computer or on a virtual machine. To improve the model performance, you also need to go back and forth to get more data and create new features. This process will need to be repeated, but it's so time intensive that you'll probably stop after a few iterations. Also we just mentioned Tensorflow and feature engineering. In the past, if you weren't familiar with these technologies, ML was left to the data scientists on your team, it was not available to you. Now you can create and execute machine learning models on your structured data sets in BigQuery in just a few minutes using SQL queries. There are two steps needed to start, Step 1, create a model with a SQL statement. Here we can use the numbikes.model data set as an example. Step 2, write a SQL prediction query and invoke ml.PREDICT and that's it, you now have a model and can view the results. Additional steps might include activities like evaluating the model, but if you know basic SQL you can now implement ml, that's pretty cool. BigQuery ML was designed to be simple, like building a model in two steps. That simplicity extends to defining the machine learning hyperparameters, which let you tune the model to achieve the best training result. Hyperparameters are the settings apply to a model before the training starts, like a learning rate. With BigQuery ML, you can either manually control the hyperparameters. Or add it to BigQuery starting with a default hyperparameter setting and then automatic tuning. When using a structured dataset in BigQuery ML, you need to choose the appropriate model type. Choosing which type of ML model depends on your business goal and the datasets. BigQuery support supervised and unsupervised models. Supervised models are task driven and identify a goal. Alternatively, unsupervised models are data driven and identify a pattern. Within a supervised model, if your goal is to classify data like whether an email is spam, use logistic regression. If your goal is to predict a number like shoe sales for the next three months, use linear regression. Within an unsupervised model, if your goal is to identify patterns or clusters and then determine the best way to group them. Like grouping random photos of flowers into categories, you should use cluster analysis. Once you have your problem outlined, it's time to decide on the best model. Categories include classification and regression models. There are also other model options to choose from along with ML Ops. Logistic regression is an example of a classification model, and linear regression is an example of a regression model. We recommend that you start with these options and use the results to benchmark. To compare against more complex models such as DNN, Deep Neural Networks, which may take more time in computing resources to train and deploy. In addition to providing different types of machine learning models. BigQuery ML supports features to deploy, monitor and manage the ML production called ML Ops. Which is short for machine learning operations. Ops include importing Tensorflow models for batch prediction, exporting models from BigQuery ML for online prediction. And hyperparameter tuning using Cloud AI Vizier. We'll explore ML Ops in more detail later in this course.