Partilhar via


Tutorial do R: Criar recursos de dados

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores Instância Gerenciada de SQL do Azure

Na terceira parte desta série de tutoriais em cinco partes, você aprenderá a criar recursos por meio de dados brutos usando uma função do Transact-SQL. Você chamará essa função por meio de um procedimento armazenado do SQL para criar uma tabela que contém os valores de recurso.

Neste artigo, você vai:

  • Modificar uma função personalizada para calcular a distância de viagem
  • Salvar os recursos usando outra função personalizada

Na parte um, você instalou os pré-requisitos e restaurou o banco de dados de exemplo.

Na parte dois, você examinou os dados do exemplo e gerou alguns gráficos.

Na parte quatro, você carregará os módulos e chamará as funções necessárias para criar e treinar o modelo usando um procedimento armazenado do SQL Server.

Na parte cinco, você aprenderá a operacionalizar os modelos treinados e salvos na parte quatro.

Na parte cinco, você aprenderá a operacionalizar os modelos treinados e salvos na parte quatro.

Sobre a engenharia de recursos

Após várias rodadas de exploração de dados, você reuniu algumas ideias sobre os dados e está pronto para passar para a engenharia de recursos. Esse processo de criação de recursos significativos com base nos dados brutos é uma etapa crítica para a criação de modelos analíticos.

Neste conjunto de dados, os valores de distância baseiam-se na distância do medidor relatado e não representam necessariamente a distância geográfica nem a distância real percorrida. Portanto, você precisará calcular a distância direta entre os pontos de embarque e desembarque de passageiros, usando as coordenadas disponíveis no conjunto de dados NYC Taxi de origem. Você pode fazer isso usando a fórmula de Haversine em uma função personalizada Transact-SQL.

Você usará uma função personalizada do T-SQL, fnCalculateDistance, para calcular a distância usando a fórmula de Haversine e usará uma segunda função personalizada do T-SQL, fnEngineerFeatures, para criar uma tabela que contém todos os recursos.

Em linhas gerais, o processo é o seguinte:

  • Criar a função T-SQL que executa os cálculos

  • Chamar a função para gerar os dados de recurso

  • Salvar os dados de recurso em uma tabela

Calcular a distância da corrida usando fnCalculateDistance

A função fnCalculateDistance deve ter sido baixada e registrada no SQL Server como parte da preparação para este tutorial. Reserve um minuto para examinar o código.

  1. No Management Studio, expanda Programação, Funções e Funções de valor escalar.

  2. Clique com o botão direito do mouse em fnCalculateDistance e selecione Modificar para abrir o script Transact-SQL em uma nova janela de consulta.

    CREATE FUNCTION [dbo].[fnCalculateDistance] (@Lat1 float, @Long1 float, @Lat2 float, @Long2 float)  
    -- User-defined function that calculates the direct distance between two geographical coordinates.  
    RETURNS float  
    AS  
    BEGIN  
      DECLARE @distance decimal(28, 10)  
      -- Convert to radians  
      SET @Lat1 = @Lat1 / 57.2958  
      SET @Long1 = @Long1 / 57.2958  
      SET @Lat2 = @Lat2 / 57.2958  
      SET @Long2 = @Long2 / 57.2958  
      -- Calculate distance  
      SET @distance = (SIN(@Lat1) * SIN(@Lat2)) + (COS(@Lat1) * COS(@Lat2) * COS(@Long2 - @Long1))  
      --Convert to miles  
      IF @distance <> 0  
      BEGIN  
        SET @distance = 3958.75 * ATAN(SQRT(1 - POWER(@distance, 2)) / @distance);  
      END  
      RETURN @distance  
    END
    GO
    
    • A função é uma função de valor escalar, retornando um único valor de dados de um tipo predefinido.

    • Ela usa os valores de latitude e longitude como entradas, obtidos dos locais de embarque e desembarque de passageiros. A fórmula de Haversine converte locais em radianos e usa esses valores para calcular a distância direta em milhas entre os dois locais.

Gere os recursos usando fnEngineerFeatures

Para adicionar os valores calculados a uma tabela que pode ser usada para treinar o modelo, você usará outra função, fnEngineerFeatures. A nova função chama a função do T-SQL criada anteriormente, fnCalculateDistance, para obter a distância direta entre os locais de embarque e desembarque de passageiros.

  1. Reserve um minuto para examinar a função personalizada do T-SQL no o código, fnEngineerFeatures, que deve ter sido criada como parte da preparação para esse passo a passo.

    CREATE FUNCTION [dbo].[fnEngineerFeatures] (  
    @passenger_count int = 0,  
    @trip_distance float = 0,  
    @trip_time_in_secs int = 0,  
    @pickup_latitude float = 0,  
    @pickup_longitude float = 0,  
    @dropoff_latitude float = 0,  
    @dropoff_longitude float = 0)  
    RETURNS TABLE  
    AS
      RETURN
      (
      -- Add the SELECT statement with parameter references here
      SELECT
        @passenger_count AS passenger_count,
        @trip_distance AS trip_distance,
        @trip_time_in_secs AS trip_time_in_secs,
        [dbo].[fnCalculateDistance](@pickup_latitude, @pickup_longitude, @dropoff_latitude, @dropoff_longitude) AS direct_distance
    
      )
    GO
    
    • Essa é uma função com valor de tabela que usa várias colunas como entradas e gerar uma tabela com várias colunas de recurso.

    • A finalidade dessa função é criar recursos para uso na criação de um modelo.

  2. Para verificar se essa função funciona, é possível usá-la para calcular a distância geográfica dessas corridas em que a distância limitada era 0, mas os locais de embarque e desembarque de passageiros eram diferentes.

        SELECT tipped, fare_amount, passenger_count,(trip_time_in_secs/60) as TripMinutes,
        trip_distance, pickup_datetime, dropoff_datetime,
        dbo.fnCalculateDistance(pickup_latitude, pickup_longitude,  dropoff_latitude, dropoff_longitude) AS direct_distance
        FROM nyctaxi_sample
        WHERE pickup_longitude != dropoff_longitude and pickup_latitude != dropoff_latitude and trip_distance = 0
        ORDER BY trip_time_in_secs DESC
    

    Como você pode ver, a distância relatada pelo medidor nem sempre corresponde à distância geográfica. Por isso a engenharia de recursos é tão importante. É possível usar esses recursos de dados aprimorados para treinar um modelo de machine learning usando o R.

Próximas etapas

Neste artigo você:

  • Modificou uma função personalizada para calcular a distância de viagem
  • Salvou os recursos usando outra função personalizada