Tutorial R: Membuat fitur data

Berlaku untuk: SQL Server 2016 (13.x) dan yang lebih baru Azure SQL Managed Instance

Di bagian tiga dari seri tutorial lima bagian ini, Anda akan mempelajari cara membuat fitur dari data mentah dengan menggunakan fungsi Transact-SQL. Anda kemudian akan memanggil fungsi tersebut dari prosedur tersimpan SQL untuk membuat tabel yang berisi nilai fitur.

Dalam artikel ini, Anda akan:

  • Mengubah fungsi kustom untuk menghitung jarak perjalanan
  • Menyimpan fitur menggunakan fungsi kustom lain

Di bagian satu, Anda menginstal prasyarat dan memulihkan database sampel.

Di bagian dua, Anda meninjau data sampel dan menghasilkan beberapa plot.

Di bagian empat, Anda akan memuat modul dan memanggil fungsi yang diperlukan untuk membuat dan melatih model menggunakan prosedur tersimpan SQL Server.

Di bagian lima, Anda akan mempelajari cara mengoprasionalkan model yang Anda latih dan simpan di bagian empat.

Di bagian lima, Anda akan mempelajari cara mengoprasionalkan model yang Anda latih dan simpan di bagian empat.

Tentang rekayasa fitur

Setelah beberapa putaran eksplorasi data, Anda telah mengumpulkan beberapa wawasan dari data, dan siap untuk beralih ke rekayasa fitur. Proses pembuatan fitur yang bermakna dari data mentah ini adalah langkah penting dalam membuat model analitik.

Dalam himpunan data ini, nilai jarak didasarkan pada jarak meter yang dilaporkan, dan tidak selalu mewakili jarak geografis atau jarak aktual yang dilalui. Oleh karena itu, Anda harus menghitung jarak langsung antara titik penjemputan dan pengantaran, dengan menggunakan koordinat yang tersedia dalam himpunan data Taksi NYC sumber. Anda dapat melakukan ini dengan menggunakan rumus Haversine dalam fungsi Transact-SQL kustom.

Anda akan menggunakan satu fungsi T-SQL kustom, fnCalculateDistance, untuk menghitung jarak menggunakan rumus Haversine, dan menggunakan fungsi T-SQL kustom kedua, fnEngineerFeatures, untuk membuat tabel yang berisi semua fitur.

Proses keseluruhannya adalah sebagai berikut:

  • Membuat fungsi T-SQL yang melakukan perhitungan

  • Memanggil fungsi untuk menghasilkan data fitur

  • Menyimpan data fitur ke tabel

Menghitung jarak perjalanan menggunakan fnCalculateDistance

Fungsi fnCalculateDistance seharusnya telah diunduh dan didaftarkan dengan SQL Server sebagai bagian dari persiapan untuk tutorial ini. Luangkan waktu satu menit untuk meninjau kode.

  1. Di Management Studio, perluas Programmability, perluas Functions lalu fungsi bernilai skalar.

  2. Klik kanan fnCalculateDistance, dan pilih Ubah untuk membuka skrip Transact-SQL di jendela kueri baru.

    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
    
    • Fungsi ini adalah fungsi bernilai skalar, mengembalikan satu nilai data dari jenis yang telah ditentukan sebelumnya.

    • Dibutuhkan nilai lintang dan bujur sebagai input, yang diperoleh dari lokasi penjemputan dan pengantaran perjalanan. Rumus Haversine mengonversi lokasi menjadi radian dan menggunakan nilai tersebut untuk menghitung jarak langsung dalam mil di antara kedua lokasi tersebut.

Hasilkan fitur menggunakan fnEngineerFeatures

Untuk menambahkan nilai komputasi ke tabel yang dapat digunakan untuk melatih model, Anda akan menggunakan fungsi lain, fnEngineerFeatures. Fungsi baru memanggil fungsi T-SQL yang dibuat sebelumnya, fnCalculateDistance, untuk mendapatkan jarak langsung antara lokasi penjemputan dan pengantaran.

  1. Luangkan waktu sebentar untuk meninjau kode untuk fungsi T-SQL kustom, fnEngineerFeatures, yang seharusnya dibuat untuk Anda sebagai bagian dari persiapan untuk panduan ini.

    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
    
    • Fungsi bernilai tabel ini yang mengambil beberapa kolom sebagai input, dan menghasilkan tabel dengan beberapa kolom fitur.

    • Tujuan dari fungsi ini adalah untuk membuat fitur baru untuk digunakan dalam membangun model.

  2. Untuk memverifikasi bahwa fungsi ini berfungsi, gunakan untuk menghitung jarak geografis untuk perjalanan di mana jarak terukur adalah 0 tetapi lokasi penjemputan dan pengantaran berbeda.

        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
    

    Seperti yang Anda lihat, jarak yang dilaporkan oleh meteran tidak selalu sesuai dengan jarak geografis. Inilah sebabnya mengapa rekayasa fitur sangat penting. Anda dapat menggunakan fitur data yang ditingkatkan ini untuk melatih model pembelajaran mesin menggunakan R.

Langkah berikutnya

Dalam artikel ini, Anda:

  • Memodifikasi fungsi kustom untuk menghitung jarak perjalanan
  • Menyimpan fitur menggunakan fungsi kustom lain